展示 HN:Ratel —— 為 AI 代理提供無限工具和技能,且無上下文膨脹
Ratel 是一個上下文工程層,透過 BM25 索引為 AI 代理動態選擇相關工具和技能,減少令牌消耗高達 80%,提高準確性,無需向量資料庫。
Ratel 是一個為 AI 代理設計的上下文工程層,旨在解決工具過載導致的令牌浪費和準確性下降問題。傳統方式中,代理需要在每次呼叫時將所有的工具模式和技能描述作為系統提示傳送,導致大量無用令牌被付費,且模型在冗長的上下文中更容易出錯。Ratel 透過漸進式披露機制,僅注入當前輪次所需的工具和技能,從而降低令牌消耗多達 80%,並恢復因工具過載而丟失的準確性。
Ratel 的工作流程包括三個核心步驟:首先,透過 search_capabilities 工具搜尋索引中的工具和技能;然後,根據代理的需求僅注入匹配的能力;最後,透過 invoke_tool 和 get_skill_content 工具按需執行。其預設使用 BM25 演算法進行檢索,這是一款與大多數搜尋引擎相同的演算法,適用於模式感知的工具後設資料和技能名稱、描述及標籤。此外,Ratel 還支援可選的語義和混合排名,透過本地嵌入模型在同一程序中執行。
安裝和使用 Ratel 非常簡單。對於 TypeScript 使用者,可以透過 pnpm add @ratel-ai/sdk 安裝 SDK;對於 Python 使用者,則使用 pip install ratel-ai。開發者可以建立 ToolCatalog 和 SkillCatalog 來註冊工具和技能,然後透過 searchCapabilitiesTool、invokeToolTool 和 getSkillContentTool 等工具將其整合到代理框架中。Ratel 還提供了與 Vercel AI SDK 和 Pydantic AI 等流行框架的示例。
Ratel 的基準測試結果(benchmark.ratel.sh)顯示,無論是在本地、開源還是前沿模型配置中,它都能顯著降低令牌使用量並提高準確性。相關專案包括 ratel-local(用於編碼代理的本地分發)和 ratel-bench(基準測試套件)。
在許可方面,Ratel 的核心引擎(ratel-ai-core)採用 Apache-2.0 許可,明確授予專利許可;而其餘部分(SDK、遙測助手、示例等)採用 MIT 許可。專案採用 Rust、TypeScript 和 Python 等多種語言開發,支援跨平臺使用。