吴恩达Agentic AI教程·模块3:工具使用 知识点总结

吴恩达Agentic AI教程·模块3:工具使用 知识点总结 吴恩达Agentic AI教程·模块3工具使用 知识点总结一、工具使用Tool Use的核心定义与本质1.1 核心定义1.2 核心类比与价值1.3 核心示例get_current_time函数二、工具使用的核心流程2.1 基础流程单工具调用2.2 关键特点LLM的自主性2.3 多工具调用流程2.3.1 提供多个工具2.3.2 多步工具调用以日历助手为例2.3.3 循环与终止条件三、工具调用的实现方式从传统到现代3.1 传统实现方式手动提示词引导3.1.1 核心逻辑3.1.2 具体示例无参数工具3.1.3 进阶示例带参数工具3.1.4 传统方式的不足3.2 现代实现方式借助开源库/框架3.2.1 核心工具AI Suite开源库3.2.2 代码实现核心要点3.2.3 执行逻辑四、特殊工具代码执行工具Code Execution Tool4.1 核心价值4.2 实现流程以数学问题求解为例4.3 优化技巧结合反思模式4.4 安全注意事项4.4.1 潜在风险4.4.2 最佳实践五、工具使用的行业标准MCPModel Context Protocol5.1 背景与核心解决问题5.1.1 传统工具开发的痛点5.1.2 MCP的核心价值5.2 MCP的核心组成5.3 应用示例GitHub工具调用5.4 补充说明六、工具使用的总结与后续模块预告6.1 核心总结6.2 后续模块预告一、工具使用Tool Use的核心定义与本质1.1 核心定义工具即函数工具使用Tool Use本质是让大语言模型LLM自主决定是否请求调用函数以执行特定操作、获取信息或完成其他任务这里的工具即开发者提供给LLM、可供其请求调用的函数。1.2 核心类比与价值人类借助锤子、扳手等工具扩展能力能完成徒手无法实现的任务。LLM同理通过调用工具来执行其自身无法完成的任务如获取实时信息、查询数据库、执行计算等其能力边界会大幅拓展能与外部世界交互处理动态、私有或复杂的数据能生成更实用、更精准的输出。1.3 核心示例get_current_time函数LLM本身不具备实时信息获取能力如训练于数月前的模型无法知道当前时间无法直接回答“现在几点”这类问题。若为LLM提供get_current_time函数工具它可调用该函数获取当前时间再将结果整理为自然语言输出。二、工具使用的核心流程2.1 基础流程单工具调用输入阶段向LLM提供用户任务请求prompt、可用工具集可仅含1个工具。决策阶段LLM 根据可用的工具集自主决定是否需要以及调用哪个工具无需开发者硬编码。调用执行阶段若需调用LLM生成特定格式指令触发工具执行并返回结果如get_current_time返回具体时间。反馈阶段工具的返回结果被添加到对话历史中。输出阶段LLM结合工具返回结果和更新后的上下文生成最终自然语言输出。2.2 关键特点LLM的自主性硬编码早期/简单方法开发者在代码中强制规定在特定步骤必须调用某个工具如研究代理中固定先进行网络搜索这种方法灵活性差。工具调用无需开发者硬编码触发逻辑完全由LLM自主决策需调用场景查询当前时间使用get_current_time() 函数解决了 LLM 训练数据截止后无法知晓当前时间的问题查找特定地区餐厅使用web_search(query) 函数LLM 构造搜索查询 → 调用搜索工具 → 分析搜索结果 → 生成答案查询客户订单使用query_database(sql_query) 函数LLM 将自然语言问题转化为 SQL 查询 → 调用数据库工具 → 获取结果 → 生成答案复杂利率计算使用专用计算器calculate_compound_interest(principal, rate, years)让 LLM 先生成数学表达式或代码再由工具执行其他需外部信息/计算支持的任务。无需调用场景查询“绿茶含多少咖啡因”等无需外部信息、LLM可直接回答的问题LLM会直接生成答案不触发工具调用。2.3 多工具调用流程2.3.1 提供多个工具开发者可以根据应用需求向 LLM 提供一个工具集tool set而非单一工具。LLM 需要从工具集中选择最合适的工具来完成任务。2.3.2 多步工具调用以日历助手为例工具集check_calendar(day)检查日历查看空闲时间make_appointment(time, contact)创建预约发送日历邀请delete_appointment(id)删除预约用户需求“找到周四我的空闲时间与Alice预约见面”。执行流程1LLM调用 check_calendar(“Thursday”) 工具获取周四空闲时段如下午3点。2LLM结合返回结果调用 make_appointment(“3 PM”, “Alice”) 工具向Alice发送下午3点的日历邀请。3工具将预约成功的确认信息反馈给 LLM。4LLM 生成最终回复“您已成功与 Alice 预约在周四下午3点。”2.3.3 循环与终止条件在复杂工作流中LLM 可能会连续调用多个工具。最佳实践设置 max_turns 参数如5次防止因逻辑错误导致无限循环。三、工具调用的实现方式从传统到现代3.1 传统实现方式手动提示词引导3.1.1 核心逻辑在LLM未原生支持工具调用的早期需通过手动编写提示词指定工具调用的格式让LLM生成符合该格式的指令再由开发者编写代码解析指令、执行工具。3.1.2 具体示例无参数工具系统提示词设计告知LLM“若需使用get_current_time工具需输出全大写的‘FUNCTION’工具名如FUNCTION:get_current_time”。执行流程LLM生成指定格式指令如FUNCTION:get_current_time → 开发者代码解析指令 → 执行工具并返回结果 → 将结果反馈给LLM → LLM生成最终输出。3.1.3 进阶示例带参数工具工具升级优化get_current_time工具新增“时区”参数可查询指定地区时间如新西兰奥克兰。提示词调整告知LLM“调用工具时需包含时区参数格式为FUNCTION get_current_time(时区)如FUNCTION:get_current_time(Pacific/Auckland)”。执行流程LLM生成含时区参数的指令 → 代码解析并执行工具 → 返回指定时区时间 → LLM整理输出。3.1.4 传统方式的不足需手动编写复杂提示词格式繁琐如全大写FUNCTION标识效率较低现代LLM已原生支持工具调用无需采用该方式。3.2 现代实现方式借助开源库/框架3.2.1 核心工具AI Suite开源库定位简化工具调用流程的开源库支持多LLM提供商语法类似OpenAI工具调用语法无需手动编写提示词和解析逻辑。核心优势自动将工具函数转化为LLM可理解的描述无需开发者手动构建JSON Schema工具描述文件省去了手动编写复杂提示的麻烦。3.2.2 代码实现核心要点核心参数指定模型如GPT-4o、消息序列、可用工具集、最大调用轮次Max Turns。Max Turns作用限制LLM连续调用工具的次数默认设为5即可避免出现无限循环。自动描述机制AI Suite通过函数的文档字符串docstring提取工具名称、功能描述、参数信息自动生成JSON schema供LLM判断何时调用、如何调用。3.2.3 执行逻辑开发者编写工具函数 → 通过AI Suite调用LLM → LLM自主决策并请求调用工具 → AI Suite自动执行工具、返回结果 → LLM生成最终输出全程无需手动解析指令。四、特殊工具代码执行工具Code Execution Tool4.1 核心价值代码执行工具是最强大的工具之一允许LLM编写代码并执行可替代大量单一功能工具如加减乘除、平方根计算、利息计算、数据处理等具备极高灵活性能实现几乎任何计算或数据处理逻辑。4.2 实现流程以数学问题求解为例提示词设计告知LLM将解决方案写成代码如 Python例如“编写Python代码解决用户查询用特定标签如 execute_python…/ execute_python包裹”。执行流程1LLM 生成带标签的代码用户查询“根号2是多少”LLM生成含计算逻辑的Python代码如import math; print(math.sqrt(2))。2代码提取系统通过正则表达式提取标签内的代码。3代码执行系统在安全环境中执行提取的代码获取结果如1.4142…。4结果反馈将代码执行结果反馈给LLM5最终结果生成LLM整理为自然语言输出生成最终答案。4.3 优化技巧结合反思模式若LLM生成的代码执行失败如语法错误可将报错信息反馈给LLM让其反思并修改代码重复执行直至获得正确结果与模块2反思设计模式结合形成“生成-执行-反思-修正”的闭环。4.4 安全注意事项4.4.1 潜在风险LLM可能生成恶意代码如 rm -rf / 删除文件导致数据丢失、系统损坏示例团队成员使用AI代理时代码误删除项目目录下的Python文件。4.4.2 最佳实践必须使用沙箱环境将代码执行放在沙箱环境中如Docker、E2B隔离代码与本地系统降低恶意代码造成的风险保护主机系统和数据安全若代码逻辑简单可简化检查流程但需做好数据备份。切勿在生产环境直接执行未经审查的 LLM 代码。五、工具使用的行业标准MCPModel Context Protocol5.1 背景与核心解决问题5.1.1 传统工具开发的痛点不同开发团队为不同应用需重复开发相同工具的自定义封装如多个团队均需开发Slack、Google Drive、GitHub的API封装工具总工作量为“应用数量×工具数量”M×N效率极低。5.1.2 MCP的核心价值标准化MCP是由Anthropic提出、现已被广泛采用的行业标准。MCP定义了一套统一的协议用于规范 LLM 应用MCP Client与工具服务MCP Server和数据源之间的通信。效率提升将行业总工作量从 “应用数量×工具数量” M×N降低到 “应用数量工具数量”MN大幅提升开发效率。生态MCP 已被广泛采用存在大量现成的 MCP Server如 GitHub, Slack和 Client。5.2 MCP的核心组成MCP客户端Client需要使用工具/数据源的LLM应用如Qua桌面应用。MCP服务端Service提供工具/数据源访问能力的软件封装如GitHub的MCP服务端提供读取README、查询Pull Request等工具。5.3 应用示例GitHub工具调用用户需求1“总结指定GitHub仓库的README文件”。执行流程1MCP客户端Qua调用GitHub MCP服务端 → 服务端获取README内容并返回 → LLM生成总结。用户需求2“查询该仓库最新的Pull Request”。执行流程2MCP客户端调用GitHub MCP服务端的“查询Pull Request”工具 → 服务端返回结果 → LLM整理输出。5.4 补充说明MCP不仅支持工具调用还支持数据源访问若需深入学习可参考AI Suite的专项短课程。六、工具使用的总结与后续模块预告6.1 核心总结工具使用是Agentic AI的核心能力能大幅拓展LLM的应用边界核心是LLM自主决策调用函数将其从一个“知识库”转变为一个能“采取行动”的智能体。现代实现方式如AI Suite简化了开发流程无需手动编写提示词和解析逻辑。安全集成代码执行工具灵活性极高但需注意安全风险优先使用沙箱环境。MCP标准解决了工具开发重复劳动的问题是未来LLM工具应用的重要方向。6.2 后续模块预告下一个模块将重点讲解“评估与错误分析”这是高效执行Agent工作流的关键将分享如何通过评估Evals推动Agentic AI应用的开发迭代。