本週Github上17款有趣專案LLocalSearch等

banq發表於2024-04-13

本週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
SELECT 1 + 2
SELECT LEN(<font>"File Query Language")
SELECT
"One" IN ("One", "Two", "Three")
SELECT
"File Query Language" LIKE "%Query%"

SELECT * FROM functions
SELECT COUNT(name) from functions WHERE return_type =
"int"
SELECT DISTINCT name AS function_name FROM functions


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";

const mock = await PostgresMock.create();
const connectionString = await mock.listen(5432);

它是如何工作的?

在 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 沒有專注於最小化輸出或任何冪等的東西,而是採取了不同的路線。

  1. 在第一次構建時:
    • Kuto 將源 JS 分成“主要”部分和通常較大的程式碼“語料庫”,該程式碼沒有副作用。
    • 該語料庫可以永久快取,並且其輸出名稱中包含雜湊時間戳。
    <ul>
    1. 在每一個進一步的構建中:
      • Kuto還是把JS原始碼拆出來了
      • 它識別任何現有語料庫中可用於“滿足”源 JS 的程式碼
        • 每個語料庫要麼保持不變,要麼隨著函式、語句等的變化而縮小
      • 任何不能滿足的程式碼都會被放入一個全新的語料庫中,該語料庫也可以永久快取。 <ul> <ul>
      •  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有兩個主要用例:
        1. 在golang測試環境中替代MySQL,使用內建 memory資料庫實現。
        2. 透過實現一些介面,使用 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 聊天而設計,允許從任何裝置輕鬆訪問。

        怎麼執行的?

        1. 系統在FreeAskInternet UI介面(本地執行)中獲取使用者輸入的問題,並呼叫searxng(本地執行)在多個搜尋引擎上進行搜尋。
        2. 抓取搜尋結果連結內容並傳遞給ChatGPT3.5/Kimi/Qwen/ZhipuAI/ollama(透過使用自定義llm),讓LLM根據此內容作為參考回答使用者問題。
        3. 將答案傳輸到聊天 UI。
        4. 我們支援自定義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:檢查收集的證據,確定每個宣告的真實性,以維護資訊的完整性。

         

        相關文章