learning
配置 Agent 工具集
当前阅读:进阶视角
本单元目标
学完本单元后,你将能够为 Agent 配置搜索、代码执行与文件读写三类核心工具集,并理解工具注册与权限控制的基本逻辑,可独立完成一个多工具 Agent 的组装。
概念讲解
工具集是 Agent 与外部世界交互的“手脚”。在 L3 阶段,你需要理解一个关键认知:工具的本质是“函数注册表”——每个工具都是一个带输入输出 schema 的函数,Agent 通过模型推理决定调用哪个函数、传什么参数。以搜索工具为例,它不是让 Agent 直接访问搜索引擎,而是封装成 `search(query: str) -> list[dict]` 的接口,Agent 只需要输出 `{"name": "search", "parameters": {"query": "..."}}` 的结构化指令,运行时由框架负责真实调用。代码执行工具同理,它让 Agent 能运行 Python 片段来验证逻辑,但必须限制在沙箱环境,避免任意命令执行。文件读写工具则赋予 Agent 持久化能力——比如将搜索结果保存为 markdown 笔记。三者组合时,你需要注意工具间的依赖顺序:搜索得到数据 → 代码处理数据 → 文件写入结果。同时,每个工具都应声明清晰的能力描述(description),因为大模型靠描述来决定调用策略,描述含糊会导致错误路由。
实操演练
- 在项目目录下创建 `tools.py`,导入 `from langchain.tools import Tool, PythonREPLTool` 并初始化搜索工具实例:`search_tool = Tool(name="web_search", func=my_search_func, description="用于搜索实时网页信息,输入为查询关键词")`。
- 注册代码执行工具:`code_tool = PythonREPLTool()`,并设置环境变量 `PYTHONPATH` 隔离执行目录,确保沙箱安全。
- 定义文件读写工具类,封装 `read_file(path)` 与 `write_file(path, content)` 两个方法,并分别用 `Tool` 包装,注意在 description 中明确路径规则(如仅允许 `/workspace` 下操作)。
- 将三个工具组合成列表 `tools = [search_tool, code_tool, read_tool, write_tool]`,打印每个工具的 `name`、`description` 和参数 schema,验证注册无误。
- 运行一个最小 Agent(如 `from langchain.agents import initialize_agent`),传入工具列表与 LLM,输入“搜索 AI 最新进展并保存为报告”,观察工具调用链是否按预期执行。
练习任务
- 为你的 Agent 配置一个“搜索 + 文件写入”组合,实现:输入任意主题,自动搜索返回前 5 条结果,并将标题与链接保存到 `report.md`,运行后检查文件内容完整性。
- 为代码执行工具增加一个超时限制(如 10 秒),并测试当代码陷入死循环时 Agent 能否优雅报错而非挂起,记录下错误处理策略。