AI Agent
AI Agent(智能代理)是能够自主感知环境、做出决策并执行行动以完成特定目标的 AI 系统。与简单的问答不同,Agent 可以规划任务、调用工具、并迭代执行直到目标完成。
核心概念
Agent 的定义
Agent = LLM + 记忆 + 规划 + 工具
- LLM: 作为"大脑"进行推理和决策
- 记忆: 保存历史信息和学习经验
- 规划: 分解任务、制定计划
- 工具: 与外部世界交互的能力
与传统 AI 的区别
| 特性 | 传统 AI | AI Agent |
|---|---|---|
| 交互方式 | 单轮问答 | 多轮自主执行 |
| 任务复杂度 | 简单任务 | 复杂任务 |
| 决策能力 | 无 | 自主决策 |
| 工具使用 | 无 | 调用多种工具 |
| 环境感知 | 无 | 持续感知 |
核心能力
1. 任务规划
Agent 能够将复杂任务分解为可执行的步骤:
目标:分析竞品并生成报告
├── 步骤1:搜索竞品信息
├── 步骤2:抓取官网数据
├── 步骤3:分析产品特点
├── 步骤4:对比优劣势
└── 步骤5:生成分析报告
2. 工具调用
Agent 可以使用各种工具:
- 搜索工具: 网络搜索、知识库检索
- 代码执行: Python、Shell 命令
- API 调用: 第三方服务
- 文件操作: 读写文件、数据处理
3. 记忆管理
- 短期记忆: 当前对话上下文
- 长期记忆: 向量数据库存储的知识
- 工作记忆: 任务执行过程中的中间状态
4. 自我反思
Agent 能够评估自己的输出并进行改进:
- 检查答案正确性
- 识别错误并修正
- 优化执行策略
实现框架
ReAct(Reasoning + Acting)
最经典的 Agent 模式:
思考(Thought)→ 行动(Action)→ 观察(Observation)→ 循环
示例:
问题:北京今天的天气适合户外运动吗?
Thought: 我需要查询北京今天的天气
Action: search_weather("北京")
Observation: 北京今天晴,25°C,空气质量良
Thought: 天气晴朗,温度适宜,适合户外运动
Action: final_answer("是的,北京今天天气晴朗...")
Plan-and-Execute
先规划后执行:
- 生成完整计划
- 按步骤执行
- 根据反馈调整
Multi-Agent
多个 Agent 协作:
- 专家 Agent: 各司其职
- 协调 Agent: 分配任务
- 评审 Agent: 质量把控
代码示例
基础 Agent 实现
from openai import OpenAI
import json
client = OpenAI(api_key="your-api-key", base_url="https://api.weelinking.com/v1")
# 定义工具
tools = [
{
"type": "function",
"function": {
"name": "search_web",
"description": "搜索互联网获取信息",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "搜索关键词"}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "execute_code",
"description": "执行 Python 代码",
"parameters": {
"type": "object",
"properties": {
"code": {"type": "string", "description": "Python 代码"}
},
"required": ["code"]
}
}
}
]
def run_agent(task):
messages = [
{"role": "system", "content": "你是一个能够使用工具完成任务的 AI Agent。"},
{"role": "user", "content": task}
]
while True:
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
# 如果没有工具调用,返回最终答案
if not message.tool_calls:
return message.content
# 执行工具调用
messages.append(message)
for tool_call in message.tool_calls:
result = execute_tool(tool_call)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
Agent 框架
LangChain
- 最流行的 Agent 框架
- 丰富的工具生态
- 灵活的链式组合
AutoGPT
- 全自动 Agent
- 长期任务执行
- 自我迭代改进
CrewAI
- 多 Agent 协作
- 角色定义清晰
- 任务分工明确
OpenAI Assistants
- 官方 Agent API
- 内置代码执行
- 文件处理能力
应用场景
1. 研究助手
- 自动搜索文献
- 整理研究资料
- 生成研究报告
2. 数据分析
- 自动获取数据
- 执行分析代码
- 生成可视化图表
3. 客服机器人
- 理解用户意图
- 调用业务系统
- 解决用户问题
4. 编程助手
- 理解需求
- 编写代码
- 测试和调试
挑战与未来
当前挑战
- 可靠性: 长任务链容易出错
- 成本: 多轮调用成本高
- 安全性: 工具调用的安全边界
- 评估: 难以量化 Agent 能力
未来趋势
- 更强规划: 更好的任务分解能力
- 更多工具: 更丰富的工具生态
- 自我学习: 从执行中学习改进
- 多模态: 处理图像、语音等