Agent工具调用:让Agent长出"手"来
没有工具的Agent只是个聊天机器人
Agent和Chatbot的本质区别:Agent能动手。动手靠的是工具调用(Function Calling)。
工具设计三原则
1. 描述即契约
大模型通过工具描述来理解工具能干什么。描述不清楚,模型就不会调用。
❌ 差:search(query) — 搜索
✅ 好:search_web(query: string, max_results?: number) → 搜索互联网,
返回标题+摘要+URL列表。query是自然语言搜索词。
2. 输入输出要结构化
工具返回JSON,不要返回纯文本。Agent需要解析结果才能做下一步决策。
3. 一个工具一件事
不要做"万能工具"。查天气就是一个查天气的工具,不要同时查天气+订机票+推荐餐厅。
工具分类
- 信息获取:搜索、读文件、查数据库、API调用
- 操作执行:发消息、写文件、执行命令、调外部服务
- 推理辅助:计算器、代码执行器、格式转换器
- 感知输入:图像识别、语音转文字、传感器读取
选工具不选多
不是工具越多Agent越强。工具多了,模型选工具也会选错。
建议:Agent的工具箱不超过10个,每个都是实打实需要的。
Agent实战
- 工具调用失败要有兜底:返回错误信息而不是直接崩溃
- 每次工具调用都记录日志:方便排查Agent为什么"选错了"
- 工具间不要有重叠功能:容易让模型困惑