定义工具
完成工具循环
1
读取 Tool Call
当
finish_reason 为 tool_calls 时,读取所有 message.tool_calls;模型可能一次请求多个调用。2
校验参数
解析
function.arguments,使用应用自己的 Schema、权限、范围和业务规则校验。它是不可信输入。3
受控执行
只允许精确匹配 Allowlist 的函数名,并应用鉴权、授权、超时、幂等与速率限制。
4
返回结果
追加原始 Assistant Tool Call Message,再为每个调用追加匹配
tool_call_id 的 role: tool 消息,然后请求最终回答。安全规则
- 不要对函数名使用
eval、反射或任意 Shell 执行。 - 购买、发消息、删除、权限变更等重要操作必须二次确认。
- 执行时重新校验最终用户权限。
- 限制参数长度、JSON 深度和循环次数。
- 对状态变更工具记录审计事件。