Rust 智能体用 GBNF 让 8B 模型稳定调用工具
paulqq · reddit · 2026-07-29
作者分享了一个本地 Rust 智能体 Eris 的实现:它运行在 llama.cpp 上,带有大约 50 个工具(包括 vault 读写、记忆、提醒、网页抓取、邮件、日历、视觉等),但小模型在工具调用时经常输出坏 JSON、乱编工具名或漏括号。
他的解决方案是:在会话开始时,把每个工具的 JSON Schema 编译成 GBNF 语法,让采样器不仅约束“输出合法 JSON”,还强制满足当前工具所需的精确键名、类型和枚举值。随后在每次调用前,再由语义路由把可选工具缩小到少数几个,让 8B 模型只在 3 个工具里选,而不是在 50 个里硬猜。
项目目前在 Gemma 4 12B + 4080 16GB 上运行良好,支持聊天、约 32k 上下文和视觉能力。作者还附上了详细技术文章和开源仓库链接。
「编程与Agent」频道最新
- 经验蒸馏复现:保住 44.1% 的代理 ICL 增益 — burny_tech · 2026-07-29
- Agensis 把 AI agents 变成团队成员并提供本地推理 — jasonkneen · 2026-07-29
- Grok Build 新增 MCP CLI 控制和 /delete 会话命令 — mark_k · 2026-07-29
- LLM 编程工作流加审阅门,防止把所有方法都写进实现 — hypergraphr · 2026-07-29
- 贾扬清吴恩达同日官宣创业:瞄准AI工程团队与个性化教育 — 机器之心 · 2026-07-29
- GPT 修代码截图成了经典自信翻车梗 — hrishioa · 2026-07-29