第一部分
1. 一句话核心总结
Agent本质上是一个“有手有脚但基本没有脑子”的执行者,它必须把自己提供的所有工具信息告诉大模型(大脑),大模型根据用户需求决定调用哪些工具并下发指令,Agent执行后将结果返回给大模型进行下一步推理,形成完整的工具调用闭环。
2. 核心概念定义
- Agent(智能体):一个有手有脚但基本没有脑子的执行者。它提供工具信息、Skill信息、工作目录信息、终端信息等(相当于“手和脚”),但一切行动都听从大模型(“大脑”)的指挥。
- 大模型的作用:Agent真正的大脑。它接收用户输入,理解需求,从Agent提供的工具列表中挑选合适的工具,下发执行指令,接收执行结果,进行推理总结,最终生成回答。
- 工具信息的必要性:Agent必须把所有工具信息(如工具名称、功能描述)在每一次通信中都告诉大模型。不告诉大模型,大模型就不知道有哪些工具可用,就像面试时不展示能力就不会被录用。
3. 分类/类型/步骤
工具被大模型使用的完整流程(5步闭环):
| 步骤 | 执行者 | 动作 | 说明 |
|---|---|---|---|
| 1 | Agent | 发送用户需求 + 所有工具信息 | 每次通信都必须携带完整工具列表 |
| 2 | 大模型 | 理解需求,匹配工具 | 根据用户输入(如“读文件”)找到对应工具(如read_file) |
| 3 | 大模型 | 下发工具调用指令给Agent | 告诉Agent用哪个工具、传什么参数 |
| 4 | Agent | 执行工具,返回结果 | Agent真正去读文件/写文件/调用API,把结果返回大模型 |
| 5 | 大模型 | 基于结果继续推理,生成最终回答 | 可能单次结束,也可能需要多次工具调用 |
单工具调用示例流程:
用户输入:“读A.txt文件并总结” ↓ Agent(携带read_file工具信息)→ 大模型 ↓ 大模型识别到“读文件”→ 匹配到read_file工具 ↓ 大模型下发指令:“用read_file工具读A.txt” ↓ Agent执行read_file → 返回文件内容给大模型 ↓ 大模型总结内容 → 返回总结给Agent → 展示给用户多工具调用示例流程(读写组合):
用户输入:“读A.txt总结并写入B.txt” ↓ Agent(携带read_file和write_file工具)→ 大模型 ↓ 大模型先匹配read_file → 下发读指令 → Agent返回内容 ↓ 大模型总结内容 → 匹配write_file → 下发写指令 ↓ Agent执行写入 → 返回完成信息 → 大模型告知用户完成4. 排序或对比关系
- Agent vs 传统程序:传统程序硬编码执行逻辑;Agent由大模型动态决策调用哪个工具,更灵活。
- Agent vs 大模型直接调用:大模型本身无工具执行能力,Agent作为“手脚”弥补了执行缺失。
- 简单Agent vs 智能Agent:简单Agent一次性返回整个文件(可能超上下文);智能Agent会分段读取、考虑上下文窗口限制、做预处理。视频提到这取决于Agent的设计智能程度。
5. 具体建议与注意事项
- 建议:
- 理解Agent的本质:有手有脚无脑,大模型是大脑
- 每次通信都必须把所有工具信息告诉大模型
- 设计Agent时要考虑大模型可能遇到的限制(如上下文窗口)
- 对于大文件,Agent应分段读取而非一次性全部返回,避免触发上下文限制或导致模型幻觉
- 注意事项:
- 不把工具告诉大模型 = 大模型不会用这些工具
- 如果文件内容很长,一次性全部返回可能导致上下文窗口限制或大模型幻觉
- 是否分段读取、如何处理大数据,完全取决于Agent的设计
第二部分:常见知识点与需了解的概念
基础概念类:
- Function Calling(函数调用)规范:OpenAI使用
tools参数传递工具列表,每个工具包含type、function(含name、description、parameters)。大模型返回tool_calls字段,包含要调用的工具名和参数JSON。 - 工具参数的结构化定义(JSON Schema):工具参数需要用JSON Schema描述(如参数类型、是否必填、枚举值等),大模型才能正确生成参数。
- Tool Choice(工具选择策略):可以指定
tool_choice: "auto"(大模型自动决定)、"required"(必须调用工具)、或指定具体工具名。 - 并行工具调用(Parallel Tool Calls):OpenAI支持在一次响应中返回多个
tool_calls,Agent可以并行执行多个工具(如同时读三个文件)。
- Function Calling(函数调用)规范:OpenAI使用
风险类:
- 工具调用无限循环风险:如果大模型反复调用同一个工具且每次都失败(如读不存在的文件),可能陷入无限循环。Agent需设置最大调用次数限制。
- 工具执行超时风险:Agent执行工具可能耗时过长(如调用外部API),大模型等待响应时可能超时。需设置超时机制和重试策略。
- 参数注入攻击:大模型生成的工具参数可能包含恶意内容(如
filename: "../../etc/passwd"),Agent需做参数校验和路径过滤。 - 工具调用结果过大风险:工具返回的结果(如读大文件)可能超出大模型上下文窗口,Agent需实现分块返回或摘要压缩。
实操类:
- 工具描述的编写技巧:描述应清晰说明“何时使用”、“参数含义”、“返回值格式”。示例:
{"name":"get_weather","description":"获取指定城市的天气信息。当用户询问某地天气时使用","parameters":{"city":{"type":"string","description":"城市名称,如'北京'"}}} - 工具调用结果的返回格式:执行完成后,需将结果包装成
role: "tool"的消息,包含tool_call_id和content,返回给大模型继续对话。 - 流式响应中的工具调用处理:在流式模式下,
tool_calls可能分多次传输(如先传index和id,再传参数)。Agent需缓存累积完整后再执行。 - 工具调用的错误处理:工具执行失败(如文件不存在),Agent应返回错误信息给大模型,大模型可向用户说明或尝试其他方案(如询问正确路径)。
- 工具描述的编写技巧:描述应清晰说明“何时使用”、“参数含义”、“返回值格式”。示例:
对比类:
- OpenAI Function Calling vs Anthropic Tool Use:OpenAI使用
tool_calls;Anthropic Claude使用tool_use块,返回tool_use_id和input参数。Agent需适配不同厂商格式。 - 同步工具 vs 异步工具:同步工具立即返回结果(如读文件);异步工具需轮询或回调(如提交长时间任务)。视频仅演示同步场景。
- 本地工具 vs 远程工具:Agent可调用本地系统工具(文件、终端)或远程API工具(天气、数据库)。
- OpenAI Function Calling vs Anthropic Tool Use:OpenAI使用
常见误区:
- 误区1:大模型直接执行工具。→ 大模型只生成调用指令,真正执行的是Agent。
- 误区2:工具信息只需在第一次对话时发送。→ 每次请求都必须发送,因为大模型无状态。
- 误区3:Agent可以自己决定用哪个工具。→ Agent只负责执行,决策权在大模型。
- 误区4:工具返回值必须完全返回。→ 如果结果过大,Agent应做截断、摘要或分页处理。
- 误区5:所有大模型支持的工具格式都一样。→ 不同厂商、不同模型格式差异很大,Agent需做适配层。
进阶知识点:
- 工具调用的链式组合(Chain of Tools):大模型可计划多步工具调用(如先搜索再总结再翻译),无需用户逐步指导。
- 工具调用的验证与重试:Agent可验证大模型生成的参数(如文件路径是否存在),若无效可要求大模型重新生成。
- 带状态工具:工具调用可能改变Agent内部状态(如设置变量),后续调用可依赖这些状态。需在历史消息中传递上下文。
- ReAct模式(Reasoning + Acting):大模型在思考(Reasoning)和行动(Acting)之间交替
- MCP协议中的工具调用:MCP(Model Context Protocol)标准化的工具调用格式,支持跨Agent工具共享和动态发现。
第三部分:全面内容总结(合并第一、二部分)
1. 主题概述
Agent是一个“有手有脚但基本没有脑子”的执行者,大模型是其“大脑”。Agent提供了各种工具(读文件、写文件、调用API等),但必须每次通信时把所有工具信息(名称、描述、参数)告诉大模型。大模型根据用户需求决定调用哪些工具,下发指令给Agent执行,Agent执行后返回结果,大模型基于结果继续推理。整个过程形成一个闭环:需求 → 工具匹配 → 执行 → 结果返回 → 进一步推理。多个工具可串联使用(如先读后写),Agent的设计智能程度决定了它如何处理大数据(如分段读取避免上下文溢出)。
2. 分类与对比
| 对比维度 | 传统程序 | Agent + 大模型 |
|---|---|---|
| 决策能力 | 硬编码逻辑 | 大模型动态决策 |
| 工具执行 | 直接调用 | Agent执行,大模型指挥 |
| 灵活性 | 低(逻辑固定) | 高(自然语言理解) |
| 工具信息传递 | 不适用 | 每次都要发送 |
| 工具调用模式 | 执行方式 | 适用场景 |
|---|---|---|
| 单工具调用 | 一个需求对应一个工具 | 读文件、查天气 |
| 多工具顺序调用 | 大模型规划步骤,依次调用 | 读→总结→写 |
| 并行工具调用 | 一次性返回多个工具指令 | 同时读多个文件 |
3. 风险与注意事项
- 注意:
- 不把工具告诉大模型 = 大模型不会用
- 文件过大可能导致上下文窗口限制或大模型幻觉
- 分段读取取决于Agent的设计智能程度
- 补充风险:
- 工具调用无限循环(需设置最大调用次数)
- 参数注入攻击(需校验用户输入)
- 执行超时(需设置超时重试机制)
- 结果过大超上下文(需做摘要或分块)
4. 实操建议
- 工具描述编写:清晰说明功能、参数、返回值。为复杂工具提供使用示例。
{"name":"read_file","description":"读取文件内容。当用户要求读取、查看、分析文件时使用","parameters":{"path":"文件路径"}} - 工具调用完整实现:
- 构造请求(包含用户消息 + 工具列表 + 历史消息)
- 调用大模型,解析
tool_calls字段 - 执行对应工具函数,捕获结果或错误
- 将结果以
tool角色消息返回大模型 - 大模型生成最终回答或继续调用工具
- 大数据处理策略:
- 分段读取:每次返回部分内容,大模型可渐进式处理
- 自动摘要:先读取,用大模型压缩摘要后再传回
- 分页查询:提供“加载更多”机制
- 安全与校验:
- 校验工具参数(如路径合法性、类型匹配)
- 限制工具调用次数(如最多5次)
- 过滤敏感操作(如删除文件需用户确认)
5. 常见误区辨析
- 误区1:大模型直接执行工具。→ 大模型只生成指令,Agent才是执行者。
- 误区2:工具信息只发一次即可。→ 每次请求都要发,大模型无状态。
- 误区3:Agent能自己决定用哪个工具。→ 决策权在大模型,Agent只执行。
- 误区4:工具返回值必须全量返回。→ 超长结果应分段或压缩。
- 误区5:所有大模型工具格式一样。→ 不同厂商格式差异大,需适配。
通过本篇内容,你将掌握:
- 理解Agent的本质:有手有脚但没脑子的执行者,大模型是其大脑
- 掌握工具被大模型使用的完整流程(5步闭环:发送工具→匹配→下发指令→执行→返回结果)
- 区分单工具调用和多工具顺序调用的处理差异
- 认识到每次通信都必须发送工具信息的原因(大模型无状态)
- 识别工具调用中的常见风险(上下文溢出、无限循环、参数注入)及应对策略
- 为实现自己的Agent(如自定义工具、接入大模型)打下核心原理基础