刘敏杰的技术笔记AI 应用开发 · 后端工程

Agent 工具调用的工程化设计

刘敏杰 · 2026-09-22 · AgentFunction Calling

工具调用的基本流程

  1. 把可用工具的名称、描述、参数 Schema 发给模型
  2. 模型返回要调用的工具和参数
  3. 程序执行工具,把结果作为 tool 消息追加到对话
  4. 重复以上步骤,直到模型给出最终回答

工具设计原则

执行循环要有边界

for step := 0; step < maxSteps; step++ {
    resp := callModel(messages)
    if len(resp.ToolCalls) == 0 {
        return resp.Content
    }
    for _, tc := range resp.ToolCalls {
        out := runTool(ctx, tc) // 带超时与权限校验
        messages = append(messages, toolMessage(tc.ID, out))
    }
}
return "已达到最大步数,请缩小问题范围"

一定要设置最大步数和总超时,防止模型陷入循环。

权限与安全

小结

把 Agent 当作一个“会犯错的新同事”来设计系统:给清晰的工具、有限的权限和完整的审计记录。