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」频道最新

更多「编程与Agent」频道 AI 资讯 →