本周Github上17款有趣项目LLocalSearch等
本周Github上有趣的项目、工具和库
1、LLocalSearch
LLocalSearch 是一个使用 LLM 代理的完全本地运行的搜索聚合器。用户可以提出问题,系统将使用一系列大模型来找到答案。用户可以看到代理的进度和最终的答案。
不需要 OpenAI 或 Google API 密钥。
特征
- 完全本地化(无需 API 密钥)
- 在“低端”LLM 硬件上运行(演示视频使用 7b 模型)
- 进度日志,可以更好地了解搜索过程
- 后续问题
- 移动友好界面
- 使用 Docker Compose 快速轻松地部署
- Web 界面,允许从任何设备轻松访问
- 手工制作的 UI,具有浅色和深色模式
2、ClangQL
Clang AST Query Language:ClangQL 是一个工具,允许您使用 GitQL SDK 对 C/C++ 代码而不是数据库文件运行类似 SQL 的查询。
请注意,ClangQL 中的所有关键字都不区分大小写,与 SQL 类似。
SELECT 1 |
3、llm.c
使用简单、原始的 C/CUDA 进行大模型培训。
不需要 245MB 的 PyTorch 或 107MB 的 cPython。例如,训练 GPT-2(CPU,fp32)的单个文件中就有 ~1,000 行简洁的代码。它能立即编译和运行,与 PyTorch 的参考实现完全一致。
我之所以选择 GPT-2 作为第一个工作示例,是因为它是 LLM 的鼻祖,是现代堆栈的首次组合。
在doc/layernorm/layernorm.md中附加了一个非常小的教程。这是一个简单的分步指南,用于实现 GPT-2 模型的单层(layernorm 层)。这是理解如何在 C 中实现层的一个很好的起点。
目前,正在研究
- 直接使用 CUDA 实现,这将大大提高速度,并可能接近 PyTorch。
- 使用 SIMD 指令加速 CPU 版本,X86 上的 AVX2 / ARM 上的 NEON(如 Apple Silicon)。
- 更现代的架构,如 Llama2、Gemma 等。
- 对于 repo,我希望同时维护干净、简单的参考实现,以及更优化的版本,这些版本可以接近 PyTorch,但代码和依赖性只占很小一部分。
4、uncch
隐藏带有不可见 Unicode 字符的消息。
unch允许您使用 VARIATION SELECTOR-17 ( E0100) 到 VARIATION SELECTOR-25 ( E01EF) 将一个字符串隐藏在另一个字符串中。它支持对包含超出标准 ASCII 范围的字符的字符串进行编码。
5、gram
Gram 是 Klarna 自己的威胁模型图表工具。
由 Klarna 的安全开发团队内部开发。它是一个 Web 应用程序,可供工程师协作为其系统创建威胁模型,提供一种易于理解的方式将系统记录为附加威胁/控制的数据流图。
特点
- 专门用于威胁建模的全功能图表工具。
- 通过 websocket 与多个用户协作编辑
- 与您的系统/资产库存紧密结合
- 根据您的技术堆栈自动提出威胁和控制建议
- 审查安全冠军使用的系统并确保模型质量
- 集成 Jira 和 SSO (Okta) 等无聊的企业内容
6、AutoMQ
Apache Kafka 的云原生实现,可将您的云基础设施费用减少高达 90%。
手动在云上运行 AutoMQ:使用云上发布的tgz文件手动部署AutoMQ,目前兼容AWS、阿里云、腾讯云、华为云、百度云。
AutoMQ 使用 logSegment 作为 Apache Kafka 的代码方面来融入我们的功能。该架构包括以下主要组件:
- S3Stream:AutoMQ 提供的基于对象存储的流媒体库。它是AutoMQ的核心组件,负责向对象存储读写数据。了解更多。
- Stream:Stream 是映射 Apache Kafka 的 logSegment 的抽象。 LogSegment的数据、索引和其他元数据将映射到不同类型的流。了解更多
- 持久缓存层:AutoMQ使用AWS EBS等小型云块存储作为持久缓存层来加速写入。请注意,这不是分层存储,AutoMQ 代理可以与持久缓存层完全解耦。了解更多
- 流对象:AutoMQ的数据是按流对象组织的。通过索引通过流对象id读取数据。一个流有一个流对象。了解更多
- 流集对象:流集对象是小流对象的集合,旨在减少 API 调用时间和元数据大小。了解更多
7、pgmock
pgmock是一个内存中的 PostgreSQL 模拟服务器,用于单元和 E2E 测试。它不需要外部依赖项,并且完全在 Node.js 和浏览器上的 WebAssembly 中运行。
可以像这样运行内存服务器:
import { PostgresMock } from "pgmock"; |
它是如何工作的?
在 WebAssembly 中运行 Postgres 有两种方法;
前者性能更高,使用的内存少得多,但仅支持单用户模式(无连接),并且没有扩展。
为了防止测试和生产之间的差异,并且由于性能通常不是测试中关注的问题,pgmock目前使用后一种方法。在中期,一旦原生 Postgres WASM 分支成熟,我们计划提供这两个选项,并最终默认切换到原生 WASM。除了内部的 API 之外,我们预计不会有太多重大更改PostgresMock.subtle。
pgmock与之前的浏览器中的 Postgres 项目不同,它完全在 JavaScript 运行时内提供完整的功能兼容性,而不依赖于网络代理进行通信。我们通过在 JavaScript 中模拟网络堆栈来实现这一点,该堆栈的行为类似于真实网络,即使在不允许原始套接字访问的平台上也可以模拟 TCP 连接。
8、Plandex
一个用于复杂任务的开源、基于终端的人工智能编码引擎。
Plandex 使用长时间运行的代理来完成跨多个文件且需要多个步骤的任务。它将大任务分解为更小的子任务,然后实现每一个子任务,一直持续到完成工作为止。它可以帮助您处理积压的工作,使用不熟悉的技术,摆脱困境,并花更少的时间在无聊的事情上。
使用大模型构建复杂的软件
- 更改会累积在受保护的沙箱中,以便您可以在自动将它们应用到项目文件之前对其进行查看。内置版本控制允许您轻松返回并尝试不同的方法。分支允许您尝试多种方法并比较结果。
- 在终端中有效管理上下文。轻松将文件或整个目录添加到上下文中,并在工作时自动更新它们,以便模型始终具有项目的最新状态。
- Plandex 依赖于 OpenAI API,需要OPENAI_API_KEY环境变量。对开源模型、Google Gemini 和 Anthropic Claude 的支持即将推出。使用OPENAI_ENDPOINT 自定义 OpenAI 端点的环境变量。
- Plandex 支持 Mac、Linux、FreeBSD 和 Windows。它从没有依赖关系的单个二进制文件运行。
特点:
- 超越自动完成功能,利用人工智能构建复杂的功能。
- 使用 ChatGPT 停止以鼠标为中心、复制粘贴的疯狂编码。
- 在终端中有效管理上下文。
- 确保 AI 模型始终在上下文中拥有最新版本的文件。
- 保持对上下文内容以及您使用的令牌数量的精细控制。
- 在应用更改之前,在受保护的沙箱中进行实验、修改和审查。
- 根据需要倒回并重试。
- 探索分支的多种方法。
- 在后台运行任务或并行处理多个任务。
- 尝试不同的模型和模型设置,然后比较结果。
类似的工具:
- Aider
- Mentat
- Pythagora Gpt-pilot
- Sourcegraph Cody
- Continue.dev
- Sweep.dev
- Cursor
- Github Copilot
- Replit Ghostwriter
- Grimoire
9、Kuto
Kuto 使您网站的 JS 更新更好、更快、更难、更强。它通过重复使用您已经发送的代码来减少您的下载大小。
是一种在网络上传输代码的新颖方法。它允许您重复使用客户已有的代码来发布更新。
Kuto 没有专注于最小化输出或任何幂等的东西,而是采取了不同的路线。
- 在第一次构建时:
- Kuto 将源 JS 分成“主要”部分和通常较大的代码“语料库”,该代码没有副作用。
- 该语料库可以永久缓存,并且其输出名称中包含哈希时间戳。
- 在每一个进一步的构建中:
- Kuto还是把JS源码拆出来了
- 它识别任何现有语料库中可用于“满足”源 JS 的代码
- 每个语料库要么保持不变,要么随着函数、语句等的变化而缩小
Kuto 的主要论点是,通过磁盘 I/O 加载比您需要的稍大的文件比重新编译要快。
Kuto 将有助于企业应用程序(因为 JS 臃肿,没有人真正关心)或社交媒体(因为高级用户经常来)。
10、go-mysql-server
纯 Go 编写的兼容 MySQL 的数据库引擎
go-mysql-server是一个与数据源无关的 SQL 引擎和服务器,它使用 MySQL 方言和有线协议对您提供的数据源运行查询。包含一个简单的内存数据库实现,您可以通过实现自己的后端来查询所需的任何数据源。
Dolt是一个具有 Git 风格版本控制的 SQL 数据库,是该包的主要生产数据库实现。
除了特定限制(见下文)之外, go-mysql-server是 MySQL 的直接替代品。任何适用于 MySQL 的客户端库、工具、查询、SQL 语法、SQL 函数等也应该适用于go-mysql-server。如果您发现功能上的差距,请提出问题。
本项目范围
- 用于查询数据源的 SQL 服务器和引擎。
- 内存数据库后端实现适合在测试中使用。
- 您可以使用接口来实现新的后端来查询您自己的数据源。
- 有一些注意事项并使用完整的数据库实现,即插入式 MySQL 数据库替换。
go-mysql-server有两个主要用例:
- 在golang测试环境中替代MySQL,使用内置 memory数据库实现。
- 通过实现一些接口,使用 SQL 查询提供对任意数据源的访问。最完整的现实实现是Dolt。
11、学生管理系统
该项目是一个使用 Spring Boot 和 Thymeleaf 开发的基于 Web 的应用程序,旨在简化学生记录的管理。
特点:
- 学生记录管理:轻松添加、编辑和删除学生信息。
- 用户友好的界面:直观的用户界面,可实现无缝导航和操作。
- 未来计划:扩展到包括教师管理功能,以实现全面的学术记录管理。
技术:
- Java
- Spring Boot
- Thymeleaf
- MySQL
12、23c-springboot3-jpa-ucp
使用 Spring Boot 3、Spring Data JPA 与 Hibernate 的 Java 持久性以及 Oracle Database 23c 免费版 - 开发人员版
13、drawdb
免费、简单、直观的数据库设计工具和 SQL 生成器。
DrawDB 是浏览器中强大且用户友好的数据库实体关系 (DBER) 编辑器。只需点击几下即可构建图表、导出 SQL 脚本、自定义编辑器等等,无需创建帐户。请在此处查看全套功能。
14、FreeAskInternet
FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统将使用searxng进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。
所有进程都在本地运行,不需要 GPU 或 OpenAI 或 Google API 密钥。
特征
- 完全免费(不需要任何API密钥)
- 完全本地化(无需GPU,任何计算机都可以运行)
- 完全私有(所有东西都在本地运行,使用自定义llm)
- 无需 LLM 硬件即可运行(无需 GPU!)
- 使用免费的 ChatGPT3.5 / Qwen / Kimi / ShipuAI(GLM) API(无需 API 密钥!感谢 OpenAI)
- 定制LLM(ollama,llama.cpp)支持,是的,我们喜欢ollama!
- 使用 Docker Compose 快速轻松地部署
- Web 和移动友好界面,专为 Web 搜索增强的 AI 聊天而设计,允许从任何设备轻松访问。
怎么运行的?
- 系统在FreeAskInternet UI界面(本地运行)中获取用户输入的问题,并调用searxng(本地运行)在多个搜索引擎上进行搜索。
- 抓取搜索结果链接内容并传递给ChatGPT3.5/Kimi/Qwen/ZhipuAI/ollama(通过使用自定义llm),让LLM根据此内容作为参考回答用户问题。
- 将答案传输到聊天 UI。
- 我们支持自定义LLM设置,因此理论上无限的LLM支持。
15、AutoCodeRover
自主程序改进,具有项目结构意识的自主软件工程师,旨在改进自主程序。解决了完整 SWE 工作台中 15.95% 的任务
AutoCodeRover 是一种用于解决 GitHub 问题(错误修复和功能添加)的全自动方法,其中 LLM 与分析和调试功能相结合,以优先考虑最终导致补丁的补丁位置。
AutoCodeRover 解决了SWE-bench约16%的问题(总共 2294 个 GitHub 问题)和SWE-bench lite 约22%的问题(总共 300 个 GitHub 问题),提高了 AI 软件工程师当前最先进的效率。
AutoCodeRover 的工作分为两个阶段:
- 上下文检索:LLM 提供代码搜索 API 来导航代码库并收集相关上下文。
- 补丁生成:大模型尝试根据检索到的上下文编写补丁。
AutoCodeRover 有两个独特的功能:
- 代码搜索 API 具有程序结构感知能力。 AutoCodeRover 不是通过纯字符串匹配来搜索文件,而是在抽象语法树中搜索相关的代码上下文(方法/类)。
- 当测试套件可用时,AutoCodeRover 可以利用测试用例,通过执行统计故障定位来实现更高的修复率。
16、schedule_free
PyTorch 中的无调度优化器。
无需时间表即可更快地进行训练 - 无需提前指定停止时间/步骤!
无调度学习不需要递减的学习率调度,但通常优于或在最差的情况下匹配 SOTA 调度,例如余弦衰减和线性衰减。一次只需要存储两个序列(第三个序列可以根据另外两个即时计算),因此该方法具有与基本优化器相同的内存要求(参数缓冲区+动量)。
17、Loki
用于事实验证的开源工具
旨在自动化验证事实的过程。它提供了一个全面的管道,用于将长文本剖析成单独的主张、评估其验证的价值、生成证据搜索的查询、爬取证据并最终验证主张。该工具对于记者、研究人员和任何对信息真实性感兴趣的人特别有用。
特点
- 分解器:将大量文本分解为易于理解的独立主张,为详细分析奠定基础。
- 值得检查:评估每个主张的潜在意义,过滤掉含糊或模棱两可的陈述,重点关注那些真正重要的陈述。例如,诸如“MBZUAI 拥有广阔的校园”之类的模糊说法被认为是不值得的,因为“广阔”的性质含糊不清。
- 查询生成器:将值得检查的声明转换为精确的查询,准备好在广阔的互联网中寻找真相。
- 证据爬行者:进入数字领域,检索构成知情验证基础的相关证据。
- ClaimVerify:检查收集的证据,确定每个声明的真实性,以维护信息的完整性。