AI Agent 实战:让 AI 自己干活,而不是只回答问题
Agent 是 AI 应用的下一站。如果说 ChatGPT 是"问答机器",Agent 就是"会自己干活的员工"。
一、什么是 AI Agent
1.1 定义
能感知环境 → 自主决策 → 执行动作 → 达成目标 的 AI 系统。1.2 与传统对话 AI 的区别
| 维度 | ChatGPT | Agent | |---|---|---| | 输入 | 单个问题 | 复杂目标 | | 输出 | 一段回答 | 多步操作的结果 | | 决策 | 单次 | 持续规划 | | 工具 | 不用 | 主动调用 | | 反馈 | 用户打分 | 环境反馈 |
二、Agent 核心架构
\\\`
┌────────────────────────────────────┐
│ Planner (规划) │
│ 决定:先做什么,再做什么 │
└─────────┬──────────────────────────┘
↓
┌────────────────────────────────────┐
│ Memory (记忆) │
│ 短期:当前任务状态 │
│ 长期:用户偏好、历史 │
└─────────┬──────────────────────────┘
↓
┌────────────────────────────────────┐
│ Tools (工具) │
│ 搜索 / 代码执行 / 数据库 / API │
└─────────┬──────────────────────────┘
↓
┌────────────────────────────────────┐
│ Observation (观察) │
│ 工具执行的结果反馈给 Agent │
└────────────────────────────────────┘
\\\`
三、ReAct 模式(最经典)
ReAct = Reason + Act(推理 + 行动)
\\\`python
from langchain.agents import createreactagent, AgentExecutor
from langchain.tools import DuckDuckGoSearchRun
from langchain.chatmodels import ChatOpenAI
1. 准备工具
tools = [ DuckDuckGoSearchRun(), # 联网搜索 ]2. 创建 Agent
llm = ChatOpenAI(model="gpt-4o", temperature=0) agent = createreactagent(llm, tools)3. 执行
executor = AgentExecutor(agent=agent, tools=tools, verbose=True) result = executor.run(""" 北京今天的天气怎么样?根据天气给我推荐 3 个适合户外活动的地方。 """) print(result) \\\`
执行流程:
\\\`
Thought: 我需要查北京今天的天气
Action: 搜索 "北京今天天气"
Observation: 25℃,晴,微风
Thought: 天气很好,适合户外活动 Action: 搜索 "北京 户外活动 推荐" Observation: 1. 颐和园 2. 奥林匹克森林公园 3. 香山
Thought: 我有足够信息回答了
Final Answer: 今天北京 25℃,晴,推荐去颐和园、奥森、香山
\\\`
四、构建自定义工具
Agent 强不强取决于工具集。
\\\`python
from langchain.tools import tool
import sqlite3
@tool def query
database(sql: str) -> str: """查询公司数据库。输入是 SQL 语句。""" conn = sqlite3.connect("company.db") cursor = conn.cursor() cursor.execute(sql) results = cursor.fetchall() conn.close() return str(results)@tool def sendemail(to: str, subject: str, body: str) -> str: """发送邮件""" # 调用邮件 API return f"邮件已发送到 {to}"
给 Agent 装上这些工具
tools = [querydatabase, sendemail, DuckDuckGoSearchRun()] \\\`
五、高级模式
5.1 Plan-and-Execute
先制定完整计划,再逐步执行: \\\`python
planner = ChatOpenAI(model="gpt-4o")
executor = ChatOpenAI(model="gpt-4o")
plan = planner.invoke(""" 为这个目标制定分步计划:'分析竞品价格并生成报告' """)
plan 可能是:
1. 列出 5 个竞品
2. 搜索每个竞品的价格
3. 整理成表格
4. 生成对比报告
for step in plan.steps: result = executor.invoke(step) \\\`
5.2 Multi-Agent
多个 Agent 协作:- Manager Agent:分解任务
- Worker Agents:各自执行
- Reviewer Agent:检查结果
5.3 ReAct + Reflection
每步执行后自我反思: \\\`python
def reflect(result):
return llm.invoke(f"""
执行结果:{result}
这个结果合理吗?如果不合理,应该怎么调整?
""")
\\\`
六、生产环境挑战
6.1 成本控制
Agent 每步调用一次 LLM,复杂任务可能 20+ 步:- 每次 LLM 调用 $0.01-0.10
- 一次 Agent 任务可能 $1-5
- 月费可能 $100-1000+
- 用小模型做简单步骤(Llama 3 / GPT-4o-mini)
- 缓存重复查询
- 设置 max
6.2 错误处理
Agent 经常出错:- 选错工具
- 工具调用参数错误
- 陷入循环
- 设置 maxiterations
- 失败时回退到更简单的策略
- 关键决策需要人确认
6.3 安全
Agent 能执行代码 → 存在提示注入风险:- 用户的输入可能让 Agent 执行危险操作
- 必须有白名单机制
- 敏感操作需要二次确认
七、实战案例
7.1 客服 Agent
\\\`
用户:我的订单 #1234 怎么还没发货?
Agent:
Thought: 需要查订单状态
Action: querydatabase("SELECT * FROM orders WHERE id=1234")
Observation: 订单状态:已发货
Thought: 用户没看到物流信息,可能需要告诉他怎么查
Final Answer: 您的订单已发货,可以查看顺丰物流单号 SF1234567890
\\\`
7.2 数据分析 Agent
\\\`
用户:分析上个月销售数据,找出增长最快的品类
Agent:
- querydatabase("SELECT category, SUM(amount) FROM sales WHERE month='2025-01' GROUP BY category")
- 对比上月数据
- 生成可视化图表
- 输出报告
\\`
7.3 代码 Agent
\\\`
用户:在 /var/log/app.log 找最近的 ERROR 日志
Agent:
- runcommand("grep ERROR /var/log/app.log | tail -20")
- 分析模式
- 输出报告
\\`
八、未来发展
- 更强的推理:o1 / o3 风格的慢思考
- 更长的记忆:无限上下文
- 自我改进:Agent 能修改自己的代码
- 群体智能:1000 个 Agent 协作
九、上手指南
\\\`python
1. 安装
pip install langchain langchain-openai2. 准备 LLM
from langchainopenai import ChatOpenAI llm = ChatOpenAI(model="gpt-4o")3. 创建第一个 Agent
from langchain.agents import createreactagent, AgentExecutor from langchaincommunity.tools import DuckDuckGoSearchRunagent = createreactagent(llm, [DuckDuckGoSearchRun()]) executor = AgentExecutor(agent=agent, tools=[DuckDuckGoSearchRun()], verbose=True)
4. 测试
executor.invoke({"input": "2025 年最火的 AI 工具是什么?"}) \\\`
Agent 是 AI 应用的最大机会。会写 Agent 的人,在未来 5 年会非常抢手。
💬 评论 (0)