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应用 →