08 Agent 和工具调用
学习目标
你将理解 Agent 的适用边界,以及如何让工具调用更可控。
Agent 是什么
Agent 的核心是让模型根据目标和上下文,决定下一步要不要调用工具、调用哪个工具、如何解释结果。
这适合信息来源不固定、步骤不完全固定的任务。但它也意味着成本、延迟和不确定性更高。
什么时候用 Agent
适合:
- 用户问题差异很大。
- 需要查询多个外部来源。
- 工具调用顺序无法提前完全确定。
- 需要模型做一定规划。
不适合:
- 固定审批流程。
- 严格合规流程。
- 可以用 Workflow 清楚表达的任务。
- 工具调用错误会造成严重后果的任务。
Prompt 要写清楚工具边界
官方 Agent 文档强调,Prompt 应说明角色、输出格式、限制、工具使用方式和工作流程。对 Agent 来说,工具说明尤其重要。
示例:
text
你是内部运营助手。
你可以使用以下工具:
- search_docs:查询公司公开制度。
- create_ticket:创建工单。
规则:
1. 只有当用户明确要求提交问题时,才调用 create_ticket。
2. 涉及制度问题时,先调用 search_docs。
3. 如果 search_docs 没有找到依据,不要编造。
4. 创建工单前,必须向用户确认标题、描述和紧急程度。工具类型
Dify 支持多种工具形态:
- 插件工具:由 Dify 或社区提供,常见服务可直接安装。
- OpenAPI 工具:通过标准 OpenAPI 描述接入内部或第三方服务。
- Workflow as Tool:把以 User Input 开始的 Workflow 封装成工具,供其他应用复用。
- MCP 工具:通过 Model Context Protocol 接入外部资源和工具。
最大迭代次数
Agent 可能多次“思考、调用工具、处理结果”。最大迭代次数越高,复杂任务能力越强,但延迟和成本也会上升。
新手建议:
- 简单工具任务:2 到 3 次。
- 多源查询任务:3 到 5 次。
- 复杂研究任务:谨慎提高,并观察成本。
工具描述
工具描述不要只写“查询数据”。要说明:
- 工具能做什么。
- 什么时候用。
- 输入参数是什么。
- 不能用于什么场景。
- 失败时怎么处理。
常见错误
- 工具描述太模糊,Agent 不知道何时调用。
- 没有限制敏感操作。
- 没有确认步骤就创建、删除或提交。
- 用 Agent 代替本来固定的 Workflow。
- 最大迭代次数过高导致成本不可控。
本章练习
设计一个“会议安排 Agent”:
- 能查询日历。
- 能查询同事资料。
- 能生成会议议程。
- 创建会议前必须向用户确认。