06_Agent和工具 - 让AI自主决策和调用工具
本课程介绍LangChain的Agent机制,让AI从”被动执行”升级为”自主决策”。你将学会创建工具、构建Agent、理解ReAct循环的工作原理。课程详细讲解工具的三种创建方式、Agent的类型选择、调试技巧,并通过实战案例展示如何让AI自主选择和组合工具完成复杂任务。
🎯 学习目标
- 理解Agent的概念和价值
- 掌握工具(Tool)的创建和使用
- 学会构建Agent应用
- 理解Agent的决策过程
📖 核心概念
Agent是什么?
Chain vs Agent
Chain(链)= 固定流程
1 | 步骤1 → 步骤2 → 步骤3 → 完成 |
Agent(代理)= 自主决策
1 | ┌→ 用工具A ┐ |
生活类比:员工 vs 助手
Chain = 员工
- 给他详细的操作手册
- 严格按手册执行
- 不会变通
Agent = 助手
- 给他工具箱和目标
- 自己决定怎么做
- 会灵活处理
工具(Tool)是什么?
工具就是给AI的”技能”:
1 | # 没有工具:AI只能"说话" |
Agent的工作流程
1 | 1. 接收任务 |
这个过程叫做:ReAct循环
- Reasoning(推理):思考
- Action(行动):执行
- 循环进行
💻 Agent类型
1. OpenAI Functions Agent
1 | # 最推荐:适合OpenAI兼容模型 |
特点:
- 使用函数调用功能
- 最可靠
- 国内模型大多支持
2. React Agent
1 | # 经典:适合所有模型 |
特点:
- 使用提示词引导
- 兼容性好
- 思考过程清晰
3. Structured Chat Agent
1 | # 适合需要结构化输入的工具 |
💻 工具创建方式
方式1:使用@tool装饰器(最简单)
1 | from langchain.tools import tool |
方式2:继承BaseTool(灵活)
1 | from langchain.tools import BaseTool |
方式3:使用StructuredTool(复杂参数)
1 | from langchain.tools import StructuredTool |
🎨 实用工具示例
工具1:数据库查询
1 |
|
工具2:文件操作
1 |
|
工具3:API调用
1 |
|
📊 Agent最佳实践
1. 工具描述要清晰
1 | # ❌ 不好的描述 |
2. 限制Agent步数
1 | from langchain.agents import AgentExecutor |
3. 处理工具错误
1 |
|
4. 添加权限控制
1 | ALLOWED_OPERATIONS = ["read", "search"] |
🔍 常见问题
Q1: Agent为什么不调用我的工具?
可能原因:
工具描述不清楚
1
2
3
4
5# AI不知道什么时候该用这个工具
def tool1(x: str) -> str:
"""工具""" # ❌ 太简略
pass工具名字不直观
1
2
3
4
5
6
7
8
9
10
def t1(x: str) -> str: # ❌ 工具名太短
"""..."""
pass
# 改为:
def search_weather(city: str) -> str: # ✅ 一看就懂
"""..."""
pass提示词没有引导
1
2
3
4
5
6
7
8# 在prompt中明确说明有哪些工具
prompt = """
你有以下工具可用:
- search_weather: 查询天气
- search_news: 搜索新闻
当用户问天气时,使用search_weather工具。
"""
Q2: Agent循环不停怎么办?
1 | # 1. 设置最大步数 |
Q3: 如何调试Agent?
1 | # 1. 开启verbose模式 |
📝 练习任务
练习1:计算器Agent
创建一个数学计算Agent:
- 工具:加法、减法、乘法、除法
- 能够分步骤计算复杂表达式
- 示例:”计算(3+5)*2-10”
练习2:文件管理Agent
创建文件操作Agent:
- 工具:读文件、写文件、列目录、搜索文件
- 能够根据用户指令操作文件
- 示例:”找出所有Python文件并统计行数”
练习3:智能客服Agent
创建客服Agent:
- 工具:查订单、查物流、退货、换货
- 能够处理用户的各种问题
- 多步骤解决复杂问题
🎯 检查清单
完成本课后,你应该能够:
- 理解Agent和Chain的区别
- 创建自定义工具
- 构建Agent应用
- 理解Agent的决策过程
- 调试Agent问题
- 控制Agent行为
💡 核心要点
- Agent让AI更智能
- 自主决策
- 灵活使用工具
- 处理复杂任务
- 工具是Agent的能力
- 描述要清晰
- 错误处理要完善
- 权限要控制
- 调试很重要
- 开启verbose查看过程
- 设置限制避免失控
- 优化提示词引导
本节代码示例
01_simple_tools.py
1 | """ |
📚 下一步
现在你已经学会了Agent和工具,接下来学习如何让AI访问知识库:
继续学习: 第7课:RAG应用 →