【Agent智能体16 | 工具使用-代码执行工具】
声明本篇博客是以吴恩达的【Agent智能体】教程为基础并对其中的内容做了笔记整理以及个人收获的总结。前面说了工具的使用以及创建方式但是有一个问题我们不可能为每个功能都写一个工具这是不切实际的。真实世界的需求是无穷无尽的例如今天用户要算平方根开发者赶紧手动写一个sqrt工具明天用户要解微积分开发者又要去硬编码新的工具。这种穷举法不仅开发和维护成本极高而且永远赶不上用户复杂多变的需求。这正是让大模型学会灵活编写并执行代码的原因。所谓代码执行工具就是让大模型灵活的编写代码并执行代码以构建一个能输入数学应用题并为你解答的应用为例。一个简单的计算例子这个例子是我们使用工具来回答用户的数学问题开始LLM 拥有一个包含基础工具的工具箱Toolsadd,subtract,multiply,divide但是后续新的用户请求出现例如”我们要一个平方根的操作。传统做法开发者必须再手动写一个sqrt的新工具。但如果以后用户又要算对数、三角函数、微积分呢如果不断地为一个又一个的新需求去写独立工具效率会非常低。与其不断实现一个又一个的工具不如采用另一种方式 -让其编写并执行代码替代方案让其编写并执行代码让大语言模型LLM通过自行编写代码来解决问题Code Interpreter 模式而不是依赖预先定义好的特定工具接口。系统设定 (System Prompt)任务编写代码来解决用户的查询。格式要求必须将返回的 Python 代码包裹在特定的标签execute_python和/execute_python之间。目的这种格式化输出是为了让外部系统能精准地用正则或其他方式提取出纯代码部分以便后续执行。流水线执行流程**用户提问 **“What’s the square root of 2?”2 的平方根是多少。模型生成代码 (LLM - Output)LLM 收到问题和系统提示词后不再去寻找预设的“工具”而是直接扮演程序员写下了对应的 Python 代码左下方灰色区域execute_pythonimportmathprint(math.sqrt(2))/execute_python系统提取并执行代码 (execute code)系统读取 LLM 的输出扒掉标签将中间的纯代码扔进一个沙盒环境中执行。获取结果 (Result)代码运行后直接输出结果1.4142135623730951.。**模型输出 **系统将这个数字再次喂给 LLMLLM 将其转化为自然语言回复给用户“The square root of 2 is approximately 1.4142.”2 的平方根大约是 1.4142。基于外部反馈的反思与自我修正Reflection with external feedback如果 LLM 第一次写的代码有 Bug 跑不通怎么办这张图提供了一个类似人类程序员“写代码 - 运行报错 - 调试改 Bug”的自动化闭环方案生成初稿 (Write first draft)LLM 收到指令后生成了第一版代码code V1即图下方的示例def do_task(args): ...代码执行与获取外部反馈 (Execute code External feedback)生成的 V1 代码被直接送入代码执行环境execute code中运行问题代码并没有成功运行而是抛出了错误。图下方给出了一个具体的报错示例SyntaxError: unterminated string literal (detected at line 1)外部反馈这个报错信息就是所谓的“外部反馈”。反思与二次修正 (Reflection Improved second draft)系统并没有把这个报错直接扔给用户而是将报错信息作为新的输入重新喂回给 LLM模型自我反思LLM 接收到了自己上一版代码造成的错误日志它会“反思”分析到底是哪里写错了输出修改版本基于反思的结果LLM 修复了 Bug并输出了改进后的第二版代码def do_task_v2(args): ...安全问题及解决方案核心风险不要在裸机上直接运行(Running outside of a sandbox can be risky)如果直接在你的个人电脑或主服务器上执行 LLM 生成的代码是非常危险的。因为 AI 可能会由于幻觉、逻辑错误或遭受恶意提示词攻击Prompt Injection写出破坏性的代码。解决方案沙盒隔离(Sandboxes can help protect against catastrophic errors)沙盒Sandbox是一种安全机制为运行中的程序提供一个隔离的环境。在沙盒里AI 生成的代码可以自由运行但它无法接触到外面的真实操作系统、重要文件或网络。Docker业界最著名的容器化技术。它可以快速拉起一个轻量级的、隔离的操作系统环境供代码运行是目前最通用的沙盒方案之一。E2B (e2b.dev)这是一个专门为 AI Agents智能体打造的云端沙盒环境。它比传统的 Docker 更进一步提供了更适合 AI 调用的 API专门解决大模型执行代码时的安全和环境配置问题。如果这篇文章对你有帮助欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力