为智能体编写有效的工具 • Anthropic
本文由 Anthropic 工程师 Ken Aizawa 所写:Writing effective tools for agents — with agents。其中介绍了一系列为 AI 代理(agents)构建高效工具的最佳实践和核心原则。为非确定性的 AI 代理设计工具与为传统的确定性软件系统编写函数或 API 有着根本性的不同,需要采取一种以代理为中心、由评估驱动的迭代开发方法。 关键细节 1. 构建和优化工具的流程 文章提出了一个与 AI 代理协作、以评估为驱动的迭代流程: 构建原型: 快速搭建工具原型,并利用 Claude Code 等 AI 代理辅助编写。可以通过本地 MCP (Model Context Protocol) 服务器或桌面扩展进行测试。 运行综合评估: 生成任务: 与 AI 代理协作,生成大量源于真实世界、具有足够复杂度的评估任务。强任务可能需要多次、甚至数十次工具调用。 运行评估: 通过直接调用 LLM API,在简单的代理循环中运行评估。建议让代理输出推理过程(CoT)以更好地理解其行为。 分析结果: 代理是发现问题的合作伙伴。通过分析其推理过程、原始交互记录以及调用指标(如冗余调用、错误率),可以发现工具的不足之处。 与代理协作改进: 将评估结果和记录直接输入给 Claude Code,让它分析问题并重构优化工具代码和描述,从而形成一个持续改进的闭环。 2. 编写高效工具的核心原则 选择合适的工具: 质量优于数量。避免简单地将每个 API 端点都包装成一个工具。 应构建少数几个针对高影响力工作流程的、经过深思熟虑的工具。例如,用一个 schedule_event 工具整合查找空闲时间和创建会议等多个步骤。 命名空间(Namespacing): 当工具数量增多时,使用共同的前缀(如 asana_projects_search)对相关工具进行分组,可以帮助代理在不同工具间做出正确选择,避免混淆。 返回有意义的上下文: 工具返回的数据应优先考虑上下文相关性,而非技术细节。使用自然语言名称(name)代替晦涩的标识符(uuid)。 提供多种响应格式(如 concise 和 detailed),让代理可以根据需要选择信息的详细程度,从而控制上下文的消耗。 优化令牌(Token)效率:...