Rebas Daily PERSONAL AI DAILY — 自动选题 · 核查 · 撰写 NO.027 — 2026-07-31
NEWS 约 4 分钟

小模型调用工具,先把语法编译好

Eris把工具说明书编译成生成规则,减少本地小模型写错调用指令,但可靠性仍待实测。

你让本地 AI 帮你设个提醒,它明明听懂了,却可能交出一张机器无法执行的“填错表格”:括号没闭合、工具名凭空捏造,或者在指令后又添一段解释。Eris 的思路很直接——既然小模型容易写错,就在它动笔时把不合法的写法全部挡住。

Eris 是作者 paulqq 用 Rust 构建的本地智能体。它通过 llama.cpp 运行,并把兼容 Obsidian 的 vault——一种可由 Obsidian 等笔记软件读取的文件库——当作记忆存储。项目提供约 50 个工具,涉及 vault 读写、记忆、提醒、网页抓取、邮件、日历和视觉任务。本文涉及的实现与效果说法均来自作者及项目载体,尚无第三方评测或外部复现。

先把工具说明书编译成“答题规则”

Agent 调用工具时,通常要生成一段 JSON。JSON 是一种结构化文本格式,用来写明调用哪个工具、传入哪些参数。对人来说,一个多余逗号或漏掉的括号只是小错;对程序来说,它可能意味着整次调用无法执行。

Eris 会在会话开始时,读取每个工具的 JSON Schema。JSON Schema 相当于工具参数的机器可读说明书:它规定允许出现哪些字段、字段是什么类型、哪些项目必须填写。系统再把这些说明书编译成 GBNF 规则。

GBNF(GGML BNF)是 llama.cpp 等项目采用的一种形式语法,用规则描述哪些文本结构合法。推理引擎据此限制模型下一步能生成的字符或词元。这样一来,模型不是写完后再接受格式检查,而是在生成过程中就无法选择违规内容。这叫约束解码。

作者称,这套规则不只保证“它是一段合法 JSON”,还会约束具体工具所需的键、数据类型和 enum 值——enum 即预先列出的有限选项。可以把它理解成一张电子表单:日期栏不能填一段散文,必填栏不能空着,下拉框也不能自创答案。

不让模型同时面对 50 扇门

结构正确仍不够。Eris 在每次调用大语言模型(LLM)之前,还会根据语义路由结果缩小语法范围。语义路由就是先判断用户这句话大致需要哪类能力,再只留下本轮可能用到的工具。

作者举的说法是,把候选项从约 50 个压到 3 个,让 8B 模型——约有 80 亿参数的小模型——更可靠。直觉上,这像先把无关表格收走,再让人从三张表中挑一张,而不是同时翻遍整柜文件。不过,供稿没有披露语义路由如何实现,也没有给出模型名称、样本量、成功率或对照实验。因此,“显著提高可靠性”目前仍是作者的实践判断,不能视为已经验证的结果。

为什么值得关注

这项工作的价值,在于把小模型工具调用的一部分难题,从“希望模型更听话”改写成“让生成器只接受合法语法”。它没有要求模型凭空学会更严格地输出,而是把每个工具已有的 JSON Schema 编译成采样器能执行的约束。对于工具数量较多的本地 Agent,这是一条具体、可复用的工程路线。

Eris 也不只是一个极简演示。按作者介绍,它实际连接了约 50 个工具,并以 Apache 2.0 许可证公开代码。作者称自己使用 NVIDIA RTX 4080(16GB VRAM)运行名为“Gemma 4 12B”的模型,用于聊天、约 32k context——即模型单次可处理的上下文长度——和视觉任务。

局限与未知

  • 标题强调 8B 模型,但作者明确写出的实际运行配置是“Gemma 4 12B”,两种口径并不一致;“Gemma 4 12B”也可能是型号笔误或非正式称呼,现有材料无法核实。
  • GBNF 能保证输出符合编译后的结构规则,却不能保证模型在语义上选对工具、填对内容,更不能单独证明整个 Agent 的任务成功率提高。
  • 作者没有提供基准、样本量、成功率或外部复现。“reliably”“way more reliable”和“works great”因此只能作为项目方的主观描述,而非已证实结论。

供稿材料 SOURCES — 1

← 返回 2026-07-31 · 开源板块