今天读了Anthropic的一篇工程博客,讲的是如何为LLM智能体编写高效工具,里面的实操经验太有价值了!分享给大家。
💡 思维方式要彻底改变
以前我们写代码,都是在确定性的世界里——同样的输入永远得到同样的输出。但现在给AI智能体写工具,完全不一样了。
智能体是"非确定性"的,同一个问题可能有N种解决路径。所以我们不能再简单地把现有API包装一下就完事,而是要站在智能体的角度,重新设计工具的交互方式。
🚀 Anthropic团队的三步实战法
1️⃣ 先做个能跑的原型
别想太多,先用Claude Code快速搭个原型出来。包装成MCP服务器,自己先玩玩,看看哪里不顺手。用户的真实反馈比你闭门造车强一百倍。
2️⃣ 用数据说话,不要靠感觉
这一步是关键!设计一堆贴近真实场景的测试任务,让智能体去跑。记住,别搞那种玩具级别的测试,要用真实的数据、真实的复杂度。
然后盯着这些指标:准确率、响应时间、token消耗、错误类型。智能体在哪里卡住了?在哪里绕弯路了?数据会告诉你答案。
3️⃣ 让AI帮你优化AI工具
这个思路绝了!直接把测试结果丢给Claude,让它帮你分析问题、重构代码。Anthropic就是这么干的,效果比人工优化还好。
🎯 五个让工具好用10倍的原则
1. 别什么都做,做对的事
很多人喜欢把所有API都包装成工具,这是大坑!
❌ 错误做法:list_contacts 返回1000个联系人,让智能体一个个找 ✅ 正确做法:search_contacts 直接搜索,智能体省心,你省token
想想看,你找联系人的时候会从头到尾翻通讯录吗?智能体也不想这么干。
2. 给工具起个好名字
当你有几十个工具的时候,命名就很重要了。按服务分类:asana_search、jira_search;按功能分类:asana_projects_search、asana_users_search。
智能体选工具的时候不会犯糊涂,你的代码也更好维护。
3. 返回人话,不要返回机器码
智能体更喜欢处理有意义的信息,而不是一堆UUID和技术参数。
用user_name: "张三"而不是user_id: "a1b2c3d4"。提供response_format参数,让智能体选择要详细信息还是简洁信息。
4. Token就是钱,省着点用
实现分页、过滤、截断功能。Anthropic建议默认限制25,000 tokens。
错误信息也要人性化,别直接抛技术栈追踪,告诉智能体具体怎么改。
5. 工具说明书要写得像人话
这个最重要!把工具描述写得像给新同事介绍工作一样。参数命名要明确:用user_id而不是user,用start_date而不是date。
📊 效果有多好?
Anthropic用这套方法优化内部工具,在测试集上的表现甚至超过了资深工程师手写的版本。这说明什么?说明让AI参与工具开发,真的能产生1+1>2的效果。
🔮 最重要的一个认知
Anthropic团队有个很深刻的洞察:
"对智能体最符合人体工程学的工具,最终也会让人类觉得非常直观。"
这句话点醒了我。我们不是在做技术移植,而是在重新设计人机交互。好的智能体工具,本质上就是好的用户体验设计。
智能体工具开发,表面上是技术问题,实际上是设计问题。理解智能体怎么"思考",为它量身定制工具,才能真正发挥AI的威力。
📖 原文推荐:Anthropic工程博客《Writing effective tools for LLM agents—using LLM agents》
如果你也在做AI应用开发,强烈建议读读原文,里面还有很多技术细节和代码示例。