本週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 <font>"pgmock"; |
它是如何工作的?
在 WebAssembly 中執行 Postgres 有兩種方法;
- 透過分叉它來原生支援 WASM
- 透過在 x86 模擬器中模擬 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:檢查收集的證據,確定每個宣告的真實性,以維護資訊的完整性。