从入门到精通 - 构建自主执行任务的智能体
AI Agent 是能够感知环境、自主决策并采取行动以实现目标的智能系统
Agent(智能体)是具有自主性的AI系统,能够:
传统LLM
单次对话,被动响应
AI Agent
多步骤规划,主动执行
一个完整的 AI Agent 系统由多个核心模块组成
负责任务分解和执行计划制定
提供Agent可调用的功能接口
存储和检索历史信息
实际执行计划中的每个步骤
用户输入 / 任务目标
🧠 LLM 核心
推理决策引擎
📋 Prompt
角色设定+指令
规划
记忆
工具
反思
输出结果 / 执行动作
不同的设计模式适用于不同类型的任务场景
Reasoning + Acting模式,让Agent交替进行推理和行动。
思考 → 行动 → 观察 → 思考 → 行动 → ...
适用场景:需要多步推理的复杂任务
先制定完整计划,再逐步执行,适合目标明确的任务。
制定计划 → 执行步骤1 → 执行步骤2 → ... → 完成
适用场景:流程化任务、项目管理
执行后自我评估,从错误中学习,不断改进。
尝试 → 评估结果 → 反思改进 → 再次尝试
适用场景:需要高质量输出的场景
多个Agent分工协作,各司其职,完成复杂任务。
研究员 + 设计师 + 执行者 → 协作完成
适用场景:软件开发、内容创作等复杂协作
选择合适的框架能让你的Agent开发事半功倍
| 框架 | 语言 | 核心特点 | 学习难度 | 适用场景 | Star数 |
|---|---|---|---|---|---|
| LangChain | Python/JS | 生态最丰富 | 简单 | 通用AI应用 | 90k+ ⭐ |
| AutoGen | Python | 对话式协作 | 中等 | 多Agent对话 | 30k+ ⭐ |
| CrewAI | Python | 角色驱动 | 简单 | 团队协作 | 20k+ ⭐ |
| MetaGPT | Python | 软件团队模拟 | 较难 | 软件开发 | 44k+ ⭐ |
| LangGraph | Python | 状态图编排 | 中等 | 复杂流程 | 5k+ ⭐ |
| AutoGPT | Python | 完全自主 | 中等 | 长期任务 | 167k+ ⭐ |
工具调用是Agent扩展能力的核心机制,让AI能够执行真实世界的操作
工具是Agent可以调用的函数或API,用于完成特定任务。每个工具都有明确的名称、描述和参数定义。
Google搜索、维基百科
计算器、数据分析
读写文件、文档处理
调用第三方接口
# Python示例:定义一个搜索工具
from langchain.tools import Tool
def search_wikipedia(query: str) -> str:
"""在维基百科中搜索信息"""
# 实际搜索逻辑
return f"关于'{query}'的搜索结果..."
wikipedia_tool = Tool(
name="Wikipedia搜索",
description="在维基百科中搜索信息,适合查询事实性知识",
func=search_wikipedia
)
# 定义工具参数
tools = [
{
"name": "calculator",
"description": "执行数学计算",
"parameters": {
"expression": "数学表达式,如 '2+2' 或 'sqrt(16)'"
}
}
]
Agent分析任务
理解用户需求,判断需要哪些工具
选择合适工具
根据工具描述匹配最合适的工具
构造参数
生成符合工具要求的参数
执行工具
调用工具并获取结果
处理结果
解析工具输出,决定下一步行动
LangChain内置100+工具
原生函数调用支持
自定义工具
记忆系统让Agent能够记住历史信息,实现连贯的多轮对话和知识积累
ConversationBuffer
存储最近的对话历史
保持上下文连贯性
适合单次会话
Vector Store
持久化存储重要信息
跨会话记忆
知识积累
Entity Memory
存储关键实体信息
结构化存储
快速检索
# 短期记忆(对话历史)
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context(
{"input": "你好"},
{"output": "你好!有什么可以帮你?"}
)
# 获取历史
history = memory.load_memory_variables({})
# 长期记忆(向量存储)
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
vectorstore = Chroma(
embedding_function=OpenAIEmbeddings()
)
# 存储知识
vectorstore.add_texts([
"用户喜欢Python编程",
"用户在北京工作"
])
5分钟构建你的第一个AI Agent
# 1. 安装依赖
pip install langchain openai langchain-openai
# 2. 创建简单Agent
from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain import hub
# 定义工具
def get_weather(city: str) -> str:
return f"{city}今天晴天,25°C"
tools = [
Tool(
name="天气查询",
func=get_weather,
description="查询城市天气,输入城市名"
)
]
# 创建Agent
llm = ChatOpenAI(model="gpt-4", temperature=0)
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
# 3. 运行Agent
result = agent_executor.invoke({
"input": "北京天气怎么样?"
})
print(result)
# 安装
pip install crewai
from crewai import Agent, Task, Crew
# 创建研究员Agent
researcher = Agent(
role="研究员",
goal="深入研究AI Agent技术",
backstory="你是资深AI研究专家",
verbose=True
)
# 创建写作Agent
writer = Agent(
role="技术作家",
goal="撰写高质量技术文章",
backstory="你是专业技术写手",
verbose=True
)
# 定义任务
task1 = Task(
description="研究AI Agent的核心技术",
agent=researcher
)
task2 = Task(
description="基于研究结果撰写技术文章",
agent=writer
)
# 创建团队
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2]
)
# 执行
result = crew.kickoff()
从实际应用场景学习Agent开发
自动化数据处理与可视化
自动收集整理网络信息
智能客户服务自动化
智能代码生成与审查
经过验证的Agent开发最佳实践和常见陷阱
每个工具只做一件事,功能明确
工具描述要准确,帮助Agent正确选择
返回友好的错误信息,而非崩溃
相同输入产生相同输出
避免长时间阻塞,超时要有提示
记录关键操作,便于调试
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True # 开启
)
export LANGCHAIN_TRACING_V2=true export LANGCHAIN_API_KEY=xxx
for step in agent.iter():
print(step)
# 检查每一步输出
按照难度递进,系统掌握Agent开发技能
ChatGPT是单轮对话模型,只能生成文本回复。
Agent可以:
根据需求选择:
成本优化策略:
解决方案:
提升准确性方法:
完全可以!推荐模型:
💡 提示:选择支持Function Calling的模型效果更好