第 1.6.2 节:把函数接口写成模型能稳定调用的工具契约
函数接口不能只停留在口头约定,还需要落实为字段、校验和失败处理。完成本节后,你应该能够把函数接口落成字段表、校验规则、错误处理和验收样例。
| 任务卡 | 内容 |
|---|---|
| 本节任务 | 把业务动作拆成工具名称、用途、输入、输出、错误和日志字段。 |
| 你会产出 | 一张“工具函数契约表”。 |
| 使用场景 | 查订单状态、查售后政策、创建客服工单、发起退款审批。 |
| 完成标准 | 至少 3 个工具有明确输入来源、输出字段、错误状态和审计字段。 |
工具契约不是代码语法,它是团队共识。模型看到契约后知道什么时候申请工具;后端看到契约后知道要校验什么;前端看到契约后知道怎样展示结果;日志系统看到契约后知道要记录哪些字段。
一份合格的工具契约至少包含 6 类信息:
| 契约项 | 要回答的问题 | 客服例子 |
|---|---|---|
| 工具名称 | 这个工具叫什么,是否只做一件事? | query_order_status |
| 使用条件 | 什么用户请求下才应该申请它? | 用户要查询自己的订单或物流。 |
| 输入字段 | 需要哪些字段,字段来自哪里? | user_id 来自会话,order_id 来自用户选择。 |
| 输出字段 | 工具返回什么结构化结果? | 订单状态、物流摘要、是否可售后。 |
| 错误状态 | 失败时返回哪些可处理状态? | 未登录、无权限、无数据、超时。 |
| 日志字段 | 复盘时需要记录什么? | trace_id、tool_name、status、error_code。 |
工具契约越模糊,模型越容易误选工具,系统越难做权限和失败处理。
实现步骤或决策流程
- 从第 1.6.1 节的判断表里挑出“需要工具”的动作。
- 给每个动作起一个动词明确的工具名,避免“customer_tool”这种万能入口。
- 写清输入字段,并标出字段来源:用户输入、会话系统、订单系统、知识库或系统生成。
- 写清输出字段,并说明哪些字段可以展示给用户。
- 写清错误状态,保证失败时模型不能自由编造。
- 写清日志字段,为第 1.6.4 节的审计表做准备。
可复制模板
## 工具函数契约表
| 工具名称 | 业务动作 | 使用条件 | 输入字段与来源 | 输出字段 | 错误状态 | 日志字段 |
| --- | --- | --- | --- | --- | --- | --- |
| | | | | | | |
示例填写
| 工具名称 | 业务动作 | 使用条件 | 输入字段与来源 | 输出字段 | 错误状态 | 日志字段 |
|---|---|---|---|---|---|---|
| query_order_status | 查询订单状态 | 用户询问自己的订单、物流或是否可售后 | user_id:会话;order_id:用户选择;trace_id:系统生成 | order_status、shipping_summary、after_sale_available | NOT_LOGIN、ORDER_NOT_FOUND、NO_PERMISSION、TIMEOUT | trace_id、user_id、tool_name、status、error_code |
| create_support_ticket | 创建客服工单 | 用户确认要提交投诉、售后或咨询工单 | user_id:会话;issue_summary:Agent 总结后用户确认;order_id:可选 | ticket_id、ticket_status、next_step | MISSING_CONFIRMATION、NO_PERMISSION、DUPLICATE_REQUEST、TIMEOUT | trace_id、user_id、ticket_id、tool_name、status |
| create_refund_review | 发起退款审批 | 用户申请退款且规则需要人工审核 | user_id:会话;order_id:订单系统;refund_reason:用户确认 | review_id、review_status、required_materials | NO_PERMISSION、POLICY_NOT_MATCHED、DUPLICATE_REVIEW | trace_id、user_id、order_id、review_id、status |
新手自查清单
- 我有没有把一个万能工具拆成多个单一职责工具?
- 每个输入字段有没有写清来源,而不是默认相信用户原话?
- 输出字段有没有区分“系统内部使用”和“可以展示给用户”?
- 错误状态是否能被系统处理,而不是只返回“失败”?
- 日志字段是否能串起用户请求、工具调用和最终回答?
本节交付物与面试讲法
本节交付物是一张“工具函数契约表”。合格标准是至少写出 3 个工具,并覆盖输入、输出、错误、日志和使用条件。
面试时可以这样讲:
我会先从业务动作判断表里挑出需要工具的动作,再把每个动作写成单一职责工具。工具契约会明确字段来源,例如 user_id 只能来自会话,order_id 需要校验归属;工具返回也必须是结构化状态,失败时返回错误码,避免模型编造业务结果。