编程教程
AI Agent 开发实战:从零构建智能代理
作者: 管理员发布: 2026/4/29👁 3982❤️ 58
使用LangGraph和CrewAI开发能够自主完成复杂任务的AI Agent。
# AI Agent 开发实战:从零构建智能代理
AI Agent是大模型应用的最热门方向。本教程从概念到代码,带你构建一个能自主完成任务的AI Agent。
## 一、什么是 AI Agent?
传统AI对话:你问一句,AI答一句。
AI Agent:你给一个目标,AI自己拆解任务、调用工具、逐步完成。
```
传统模式:
用户 → "帮我查天气" → AI → "北京今天25度"
Agent模式:
用户 → "帮我规划周末北京出行"
Agent → 思考:需要查天气、查景点、查路线
Agent → 调用天气API → 北京周六25度晴天
Agent → 调用搜索 → 故宫、颐和园推荐
Agent → 调用地图API → 规划路线
Agent → 返回完整出行方案
```
## 二、Agent 核心架构
```
┌─────────────────────────────────┐
│ 用户输入 │
└────────────┬────────────────────┘
↓
┌─────────────────────────────────┐
│ LLM(大脑/决策器) │
│ - 理解任务 │
│ - 制定计划 │
│ - 决定下一步行动 │
└────────────┬────────────────────┘
↓
┌─────────────────────────────────┐
│ 工具层(能力) │
│ - 搜索 - 代码执行 - API调用 │
│ - 文件读写 - 数据库操作 │
└────────────┬────────────────────┘
↓
┌─────────────────────────────────┐
│ 记忆层(上下文) │
│ - 短期记忆:当前对话 │
│ - 长期记忆:历史知识 │
└─────────────────────────────────┘
```
## 三、用 LangChain 快速搭建
### 3.1 安装
```bash
pip install langchain langchain-openai python-dotenv
```
### 3.2 定义工具
```python
from langchain.tools import tool
@tool
def search_web(query: str) -> str:
"""搜索互联网获取最新信息"""
# 这里接入真实搜索API(如SerpAPI、Tavily等)
import requests
response = requests.get(f"https://api.tavily.com/search?q={query}")
return response.json()["results"][0]["content"]
@tool
def calculate(expression: str) -> str:
"""计算数学表达式"""
return str(eval(expression))
@tool
def get_weather(city: str) -> str:
"""获取指定城市的天气"""
import requests
response = requests.get(f"https://wttr.in/{city}?format=3")
return response.text.strip()
tools = [search_web, calculate, get_weather]
```
### 3.3 创建Agent
```python
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(model="gpt-4o", temperature=0)
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个智能助手,可以使用工具来帮助用户完成任务。请用中文回复。"),
("user", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
```
### 3.4 运行
```python
result = agent_executor.invoke({
"input": "北京今天天气怎么样?如果天气好,推荐3个适合出行的景点。"
})
print(result["output"])
```
Agent会自动:调用天气工具 → 分析结果 → 搜索景点 → 返回完整建议。
## 四、进阶:添加记忆
```python
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(memory_key="chat_history")
# 在AgentExecutor中加入memory
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
memory=memory,
verbose=True
)
# 现在Agent能记住之前的对话了
agent_executor.invoke({"input": "帮我记住我喜欢吃火锅"})
agent_executor.invoke({"input": "推荐我今晚吃什么"}) # 会记得你喜欢火锅
```
## 五、框架对比
| 框架 | 特点 | 适合场景 |
|------|------|---------|
| LangChain | 最成熟,组件丰富 | 通用Agent开发 |
| CrewAI | 多Agent协作 | 团队模拟场景 |
| AutoGen | 微软出品,对话式 | 多人协作 |
| Dify | 可视化编排 | 快速搭建,低代码 |
| Coze | 字节出品 | 快速发布到各平台 |
## 六、实战项目:智能客服Agent
```python
from langchain.tools import tool
@tool
def query_order(order_id: str) -> str:
"""查询订单状态"""
# 接入真实订单系统
return f"订单{order_id}已发货,预计明天送达"
@tool
def create_refund(order_id: str, reason: str) -> str:
"""创建退款申请"""
return f"已为订单{order_id}创建退款申请,原因:{reason}"
@tool
def transfer_to_human(reason: str) -> str:
"""转接人工客服"""
return f"已转接人工客服,原因:{reason}"
customer_service_tools = [query_order, create_refund, transfer_to_human]
prompt = ChatPromptTemplate.from_messages([
("system", """你是电商客服Agent。处理用户问题:
1. 先了解问题
2. 使用工具查询/操作
3. 如果无法解决,转接人工
规则:
- 态度友好专业
- 退款需要先确认订单状态
- 涉及金额>1000的问题转人工"""),
("user", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
agent = create_tool_calling_agent(llm, customer_service_tools, prompt)
service = AgentExecutor(agent=agent, tools=customer_service_tools, verbose=True)
# 测试
service.invoke({"input": "我昨天买的手机还没到,订单号ORD12345"})
```
## 总结
**Agent开发三要素:LLM(大脑)+ Tools(能力)+ Memory(记忆)**
新手路线:
1. LangChain入门 → 单Agent工具调用
2. 加Memory → 有上下文的Agent
3. 多Agent协作 → CrewAI/CrewAI
4. 生产部署 → Dify/Coze
> 📌 关注AI导航,获取更多AI开发教程!
*最后更新:2026年4月*