生产环境中的工具使用:真正有效的函数调用模式
· 阅读需 10 分钟
LLM 在生产环境中函数调用失败最令人惊讶的地方在于它们的来源。不是幻觉推理。也不是模型选错了工具。代理不稳定的首要原因在于参数构造:错误的类型、缺少必填字段、格式错误的 JSON、幻觉出的额外字段。模型本身没问题。你的 schema 才是问题所在。
这是个好消息,因为 schema 修复成本很低。
你实际运行的六阶段生命周期
在探讨模式之前,先建立一个心智模型:LLM 从不直接执行代码。它只是提出建议,由你来执行。工具调用是一种协议:
- 上下文准备 — 系统提示词 + 工具定义注入到上下文窗口
- 决策阶段 — 模型决定是否以及调用哪个工具
- 参数构造 — LLM 生成与你的 schema 匹配的结构化 JSON
- 执行 — 你的应用程序代码运行实际函数
- 观察结果注入 — 结果被附加到对话历史中
- 继续 — 模型要么回答问题,要么进行更多工具调用
这个管道中的每一个生产 bug 都是一个交接 bug。要么 schema 定义不明确(步骤 3),要么执行没有验证输出(步骤 4),要么结果在未进行净化处理的情况下被注入(步骤 5)。模型很少自行失败——它在提议者和执行者之间的契约模糊不清时才会失败。
Schema 设计是你最具杠杆作用的投资
在生产环境分析中,没有强制执行输出 schema 的 GPT-4,其 schema 符合率低于 40%。强制执行 OpenAI 结构化输出后:结构符合率达到 100%。多步骤工作流中的错误率从约 5% 下降到 0.3% 以下。复杂多步骤的准确性从 10% 提高到 70%。Schema 不是形式,它是接口契约。
以意图命名工具
search_customer_orders 优于 search。工具名称是模型决定调用哪个工具时使用的路由信号的一部分。模糊的名称会导致模糊的路由。
