Appearance
如何为 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。
你可能还需要
暂无推荐