乐于分享
好东西不私藏

上下文工程之构建自己的工具框架:和AI"签合同"的艺术

上下文工程之构建自己的工具框架:和AI"签合同"的艺术


工具设计:和AI”签合同”的艺术

我让Agent调用工具,它经常干出这种事:

  • • 该调用A工具,调用了B工具
  • • 参数格式不对,报错后不知道怎么办
  • • 工具返回错误,Agent把错误信息当成答案告诉用户

问题不在Agent,在工具设计。现在也有一个新的方向Harness工程,也值得深入研究。

我后来意识到:工具设计本质是和AI”签合同”——你必须明确告诉它”什么时候用、怎么用、出错了怎么办”。


I一、命名清晰:描述越完整,调用越准确

早期我的工具描述:

name: get_logs

Agent的理解:”这个工具可能获取日志,也可能获取配置,不确定的时候先用用看。”

现在的工具描述:

name: query_application_logs
描述:仅用于查询应用程序运行日志。当需要排查应用错误、追踪请求链路时使用。不用于查询系统日志或配置文件。
参数:
  - app_name: 应用名称(必填)
  - time_range: 时间范围,格式"1h"/"1d"/"7d"(必填)
  - log_level: 日志级别,可选"ERROR"/"WARN"/"INFO"(默认ERROR)
返回值:JSON格式日志列表
错误处理:
  - 应用不存在 → 返回空列表,提示"请检查应用名称"
  - 时间范围超长 → 返回"最大支持7天,请缩小范围"

Agent现在几乎不会调用错工具——因为我把所有模糊空间都消除了。


二、合并原则:减少选择的痛苦

如果人类工程师都无法明确说”这种情况下该用哪个工具”,那AI也不可能做到。

我有过8个日志查询工具:

  • • query_app_logs
  • • query_system_logs
  • • query_access_logs
  • • query_error_logs
  • • …

Agent经常选错。后来合并成2个:

  • • query_application_logs(应用日志)
  • • query_infrastructure_logs(基础设施日志)

错误率直接下降70%。

比如Anthropic的元技能skills-create就经过改版,增加技能的评估校验能力

工具数量不是越多越好,边界清晰比功能细分更重要。


三、错误恢复友好:告诉AI怎么修

工具报错后的处理,是最容易被忽略的部分。

早期设计:

返回值:{ "error": "connection timeout" }

Agent看到这个,只会复读”连接超时”给用户。

现在的设计:

返回值:{ 
  "error": "connection timeout",
  "recovery_hint": "数据库连接超时,建议:1) 检查网络连通性 2) 确认连接池配置 3) 如持续发生,考虑扩容",
  "next_action": "请调用check_database_connectivity工具排查"
}

Agent不仅能告诉用户发生了什么,还能给出下一步操作建议。


四、我的工具设计模板

每个工具必须有:

  1. 1. 清晰的命名:动词+对象,如 query_application_logs
  2. 2. 明确的触发条件:”当…时使用”
  3. 3. 完整的参数定义:类型、必填、默认值、示例
  4. 4. 返回值结构:成功时返回什么,失败时返回什么
  5. 5. 错误处理指南:每种错误对应的恢复策略
  6. 6. 示例调用:给AI参考正确用法

五、工具设计的核心认知

工具是Agent能力的延伸,但也是错误的来源。

设计好的工具,不是让Agent”能调用”,而是让它”知道什么时候调用、知道调用错了怎么办“。


上下文工程专题

这是关于Context Engineering的系列文章第6篇。

系列文章:

  • • 第1篇:我花了三个月才明白:为什么我的AI Agent总是”聊着聊着就崩了”
  • • 第2篇:我的AI Agent为什么越用越”傻”?四个踩过的坑
  • • 第3篇:我给AI的”记忆”做了减法——上下文压缩实战
  • • 第4篇:为什么我把单Agent拆成了团队协作?
  • • 第5篇:我给Agent装了”长期记忆”——记忆系统设计
  • • 第7篇:我用代码给AI Agent打分——评估体系搭建(待续)

#上下文工程 #AIAgent #ToolDesign #大模型应用 #运维自动化

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 上下文工程之构建自己的工具框架:和AI"签合同"的艺术

猜你喜欢

  • 暂无文章