核心要点

  • 能讲命名与描述:函数名语义化、动词清晰,给每个工具和参数写明确 description,让模型靠语义而非猜测选用

  • 能控制参数复杂度:参数少而正交,能拆默认值就别让模型填;用枚举/类型/范围约束收紧取值,减少幻觉参数

  • 能区分必填可选:明确 required 与 optional,避免模型漏填必填或乱填可选项

  • 能做结构化错误处理:工具失败返回结构化错误信息(码+原因+建议),让模型可据此重试或换路径

标准回答

命名与描述

函数名用语义化动词(如 search_orders、send_email),并为工具整体与每个参数写清晰 description,说明用途、单位、示例。模型主要靠这些自然语言线索判断"何时用、怎么填"。

参数设计

参数少而正交,避免一个函数塞太多职责;能用默认值或服务端推断的就不暴露给模型。用 enum 限定可选值、用 type/format/范围约束取值,明确区分 required 与 optional,从 schema 层面压缩模型幻觉参数的空间。

返回与错误

成功返回结构化结果;失败返回结构化错误(错误码、原因、可选的修复建议),而非裸异常字符串,便于模型重试、换参数或转其他工具。

验证

服务端对模型产出的参数做校验与白名单,绝不无条件信任,防止越权或注入。

常见误区

⚠️ 常见踩坑

把一个函数设计得参数又多又自由、缺少 description 和枚举约束——模型会频繁填错或幻觉参数;另一误区是工具报错只返回裸异常文本,模型无法据此恢复。

追问

追问 1工具数量很多导致模型选错怎么办?

控制单次暴露给模型的工具数,保持工具集少而正交;为工具写清晰、互不重叠的描述;用路由/分诊先按意图筛出候选子集再交给模型选择。必要时分层:上层选类别,下层选具体工具。

追问 2如何降低模型幻觉出不存在的参数?

用严格 schema:枚举限定取值、type/format 约束类型、标注 required;服务端对返回的参数做校验并拒绝非法字段。开启结构化输出/约束解码(如 JSON schema 强约束),让模型只能在合法字段内生成,从根上抑制幻觉参数。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。