Skip to content

如何为 AI Agent 设计高质量的工具(Tool/Function Calling)

解决 Agent 在调用外部工具时经常出现的幻觉、静默失败或参数错误问题。通过标准化的 Schema 设计和健壮的错误反馈机制,让 AI 能够精准、高效地与现实世界交互。

为什么需要这个技能

对于 AI Agent 而言,工具(Tools)是它与物理世界交互的唯一触手。一个设计糟糕的工具会导致 Agent 产生幻觉(瞎编参数)、静默失败(出错但不报错)或消耗不必要的 Token。

核心洞察在于:工具的描述(Description)比工具的实现代码更重要。 LLM 无法看到你的 Python 或 TypeScript 代码,它只能通过你提供的 Schema 和描述来判断何时调用以及如何传参。

适用场景

  • 为 Agent 构建自定义 API 接口或函数调用(Function Calling)。
  • 使用 MCP(Model Context Protocol)构建跨平台的通用工具集。
  • 优化现有工具,解决 AI 频繁传错参数或无法理解工具用途的问题。
  • 设计复杂的工具链,需要 AI 同时并行调用多个独立工具以提升响应速度。

核心工作流

1. 编写高密度的工具描述

避免简单的描述(如 "获取股价"),而应包含使用场景、参数限制和预期结果。

  • 错误示例"description": "Gets stock price"
  • 正确示例"description": "检索给定股票代码的当前实时价格。仅支持美股(NYSE/NASDAQ)。返回 USD 计价的最新成交价。当用户询问当前价格而非历史数据时使用。"

2. 严格的 Schema 约束

  • 使用 Enum:尽可能将参数限制在枚举值中(如 priority: ["low", "medium", "high"]),防止 AI 随意发挥。
  • 明确必填项:在 required 数组中清晰定义必须提供的参数。
  • 提供示例:对于复杂对象,在 input_examples 中提供 1-5 个真实数据样例。

3. 建立 lllm-friendly 的错误反馈

不要只返回 {"error": true},而应返回能引导 AI 自我修复的错误信息。

  • 建议格式{"error": true, "error_type": "not_found", "message": "未找到城市 '亚特兰蒂斯',请提供真实城市名,例如 '旧金山, CA'。"}

4. 采用 MCP 标准

为了实现工具的跨平台复用,推荐使用 Anthropic 推出的 MCP 协议,将工具定义与具体实现解耦。

typescript
// MCP 服务器工具定义片段
server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "get_weather",
    description: "获取指定地点的当前天气...",
    inputSchema: {
      type: "object",
      properties: {
        location: { type: "string", description: "城市和州,例如 'San Francisco, CA'" }
      },
      required: ["location"]
    }
  }]
}));

下载和安装

下载 agent-tool-builder 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐