
如何为 AI 智能体编写高效工具 Ken Aizawa / Tyde
[解读]
为 Agent 设计工具的过程,是定义角色(能做什么),提供工具(API),建立严格绩效评估体系,并持续追踪和提升绩效。这个认知组织设计与公司组织架构和信息流设计惊人相似:
全新的软件开发框架“智能体驱动开发”(Agent-Driven Development, ADD)正在超越测试驱动开发和行为驱动开发(BDD),将非确定性的 Agent 置于开发流程的核心。这个框架承认并拥抱系统的非确定性,将开发的重点从“编写代码”或代码逻辑正确转向“塑造行为”或行为行为有效。ADD 可以概括为:
- 假设 (Hypothesize):基于用户需求,构想对 Agent 有价值的工具。
- 原型 (Prototype):快速实现工具的最小可行版本。
- 评估 (Evaluate):构建反映真实世界复杂度的“行为测试集”,并系统评估 Agent 装备该工具后的任务解决能力。
- 协作 (Collaborate):将评估失败的日志和 Agent 的“思考链”作为输入,与 Agent 协作分析失败的根源,并让其辅助重构和优化工具。
- 迭代 (Iterate):重复上述过程,直到 Agent 的行为表现达到预期水平。
模型上下文协议(Model Context Protocol, MCP)能够让大型语言模型智能体拥有数百种工具来解决现实世界的任务。但如何才能让这些工具发挥最大效用呢?本文将介绍 Anthropic 在各种智能体系统中提升性能的有效技术。
文章将涵盖以下内容:
- 构建和测试工具原型
- 创建并运行智能体工具评估
- 与 Claude 等协作自动提升工具性能
最后,文章总结了 Anthropic 在实践中发现的编写高质量工具的关键原则:
- 选择要实现(和不实现)的正确工具
- 对工具进行命名空间管理,以明确功能边界
- 从工具向智能体返回有意义的上下文
- 优化工具响应以提高 token 效率
- 对工具描述和规范进行提示工程(prompt-engineering)
什么是工具?
在计算领域,确定性系统在给定相同输入时每次都会产生相同的输出,而非确定性系统(如智能体)即使在相同起始条件下也能生成不同的响应。
当我们编写传统软件时,我们是在确定性系统之间建立契约。例如,getWeather(“NYC”) 这样的函数每次被调用时,都会以完全相同的方式得到纽约天气情况。
工具是一种新型软件,它反映了确定性系统与非确定性智能体之间的契约。当用户询问“我今天应该带伞吗?”时,智能体可能会调用天气工具,从一般知识中回答,甚至可能首先询问位置信息。有时,智能体可能会产生幻觉,甚至无法理解如何使用工具。
这意味着在为智能体编写软件时,我们必须从根本上重新思考我们的方法:我们不应像为其他开发人员或系统编写函数和 API 那样编写工具和 MCP 服务器,而是需要为智能体设计它们。
我们的目标是通过使用工具来追求各种成功的策略,从而扩大智能体在解决各种任务中的有效范围。幸运的是,根据我们的经验,对智能体来说最“符合人体工程学”的工具,对人类来说也出奇地直观易懂。
如何编写工具
在本节中,我们将描述如何与智能体协作,既编写又改进你提供给它们的工具。首先,快速搭建工具原型并在本地进行测试。接下来,运行全面的评估以衡量后续的更改。与智能体一起工作,你可以重复评估和改进工具,直到你的智能体在现实世界任务中实现强大性能。
构建原型
如果不亲自动手,很难预测智能体认为哪些工具符合人体工程学,哪些不符合。快速搭建工具原型时,如果你使用 Claude Code 编写,为 Claude 提供工具依赖的任何软件库、API 或 SDK(包括可能的 MCP SDK)的文档会有所帮助。LLM友好的文档通常可以在官方文档网站的扁平 llms.txt 文件中找到。
免费注册机智体,继续阅读文章
相关推荐




