第一节 从零开始学AI Agent
视频:一堂课搞懂AI Agent智能体原理
与传统的聊天机器人不同,AI Agent能够自主规划任务、调用工具、执行复杂操作

一、什么是AI Agent
AI Agent是一种基于大语言模型(LLM)的智能系统,它超越了简单的问答模式,具备感知、决策、行动的完整闭环能力。

63%

37%
Agent vs 传统Chatbot
二、四大核心组件详解
规划(Planning)
规划是Agent的"大脑",负责将复杂目标分解为可执行的子任务。
常见规划策略:
#HmkBOrkhJKZh text { white-space: pre; }#HmkBOrkhJKZh .fb0 { stroke: var(--N900-FG, 0.15); }#HmkBOrkhJKZh .fb0 {stroke: rgba(31,35,41, 0.15)}#HmkBOrkhJKZh .fx0 { stroke-miterlimit: 10; }#HmkBOrkhJKZh .fx0 {stroke-miterlimit: 10}#HmkBOrkhJKZh .fa1 { fill: rgb(187, 191, 196); }#HmkBOrkhJKZh .fa1 {fill: rgb(187, 191, 196)}#HmkBOrkhJKZh .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#HmkBOrkhJKZh .fx1 {font-style: normal}#HmkBOrkhJKZh .fx2 { text-anchor: middle; }#HmkBOrkhJKZh .fx2 {text-anchor: middle}#HmkBOrkhJKZh .fx3 { dominant-baseline: central; }#HmkBOrkhJKZh .fx3 {dominant-baseline: central}#HmkBOrkhJKZh .fx4 { stroke: none; }#HmkBOrkhJKZh .fx4 {stroke: none}#HmkBOrkhJKZh .fc0 { fill: var(--text-caption); }#HmkBOrkhJKZh .fc0 {fill: #646a73}#HmkBOrkhJKZh .fa2 { fill: var(--text-link-disabled); }#HmkBOrkhJKZh .fa2 {fill: rgb(187, 191, 196)}#HmkBOrkhJKZh .fa3 { fill: rgb(246, 248, 250); }#HmkBOrkhJKZh .fa3 {fill: rgb(246, 248, 250)}#HmkBOrkhJKZh .fx5 { font: 700 18px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#HmkBOrkhJKZh .fx5 {font-style: normal}#HmkBOrkhJKZh .fx6 { text-anchor: start; }#HmkBOrkhJKZh .fx6 {text-anchor: start}#HmkBOrkhJKZh .fx7 { dominant-baseline: alphabetic; }#HmkBOrkhJKZh .fx7 {dominant-baseline: alphabetic}#HmkBOrkhJKZh .fc1 { fill: rgb(51, 51, 51); }#HmkBOrkhJKZh .fc1 {fill: rgb(51, 51, 51)}#HmkBOrkhJKZh .fx8 { font: 700 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#HmkBOrkhJKZh .fx8 {font-style: normal}#HmkBOrkhJKZh .fx9 { font: 400 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#HmkBOrkhJKZh .fx9 {font-style: normal}#HmkBOrkhJKZh .fb1 { fill: var(--N900-FG, 0.15); }#HmkBOrkhJKZh .fb1 {fill: rgba(31,35,41, 0.15)}#HmkBOrkhJKZh .fb2 { fill: rgb(225, 228, 232); }#HmkBOrkhJKZh .fb2 {fill: rgb(225, 228, 232)}#HmkBOrkhJKZh .fa4 { fill: var(--bg-body); }#HmkBOrkhJKZh .fa4 {fill: #fff}ABC12345策略描述适用场景任务分解ReActPlan-and-ExecuteTree of Thoughts将大任务拆分为小步骤推理-行动交替进行先完整规划再执行探索多条思维路径复杂项目管理需要实时反馈的任务结构化任务需要创造性解决方案
代码块
Python
# ReAct模式示例
def react_loop(agent, goal):
while not goal_achieved:
# 思考:分析当前状态
thought = agent.think(current_state)
# 行动:选择并执行工具
action = agent.select_action(thought)
# 观察:获取执行结果
observation = agent.execute(action)
# 更新状态
current_state = update_state(observation)
1.1
记忆(Memory)
记忆系统让Agent能够积累经验、保持上下文一致性。
🤜
三层记忆架构:
•
短期记忆(Short-term):当前对话上下文,通常存储在提示词中
•
工作记忆(Working):当前任务的中间状态和临时数据
•
长期记忆(Long-term):持久化的知识库,通常使用向量数据库存储
代码块
Python
# 向量数据库实现长期记忆from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
class AgentMemory:
def __init__(self):
self.short_term = [] # 最近N轮对话self.long_term = Chroma(embedding_function=OpenAIEmbeddings())
1.2
工具调用(Tool Use)
工具是Agent与外部世界交互的桥梁,极大扩展了Agent的能力边界。
常见工具类型:
#yRkThFEAUlaM text{white-space:pre}.fb0{stroke:var(--N900-FG, 0.15)}.fx0{stroke-miterlimit:10}.fa1{fill:#bbbfc4}.fx1{font:normal 400 12px MonospacedNumber,LarkHackSafariFont,LarkEmojiFont,LarkChineseQuote,-apple-system,BlinkMacSystemFont,Helvetica Neue,Tahoma,PingFang SC,Microsoft Yahei,Arial,Hiragino Sans GB,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.fx2{text-anchor:middle}.fx3{dominant-baseline:central}.fx4{stroke:none}.fc0{fill:var(--text-caption)}.fa2{fill:var(--text-link-disabled)}.fa3{fill:rgb(246, 248, 250)}.fx5{font:400 normal 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fx6{text-anchor:start}.fx7{dominant-baseline:alphabetic}.fc1{fill:rgb(51, 51, 51)}.fx8{font:700 normal 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fb1{fill:var(--N900-FG, 0.15)}.fb2{fill:rgb(225, 228, 232)}.fa4{fill:var(--bg-body)}ABC1234567类型示例Google Search, BingPython REPL, ShellREST APIs, GraphQL读写文件、PDF解析SQL查询、向量检索Playwright, Selenium用途获取实时信息运行代码和命令与外部服务交互处理文档数据数据存取网页自动化搜索工具代码执行API调用文件操作数据库浏览器
代码块
Python
from langchain.tools import Tool, tool
@tooldef search_web(query: str) -> str:
"""搜索网络获取最新信息"""# 实现搜索逻辑return search_results
@tool def execute_python(code: str) -> str:
"""执行Python代码并返回结果"""# 安全执行代码return exec_result
tools = [search_web, execute_python]
1.3
反思(Reflection)
反思机制让Agent能够从错误中学习,持续优化执行策略。
🤜
反思的三个层次:
结果评估:检查输出是否满足目标
过程分析:回顾执行步骤,找出可优化点
策略调整:基于反思结果修改后续计划
代码块
C++
def reflect(agent, task, result):
reflection_prompt = f"""
任务:{task}
执行结果:{result}
请分析:
1. 结果是否完全满足任务要求?
2. 执行过程中有哪些可以优化的地方?
三、主流Agent框架对比
表格加载中...
#SAZreCMfkSux text{white-space:pre}.fb0{stroke:var(--N900-FG, 0.15)}.fx0{stroke-miterlimit:10}.fa1{fill:#bbbfc4}.fx1{font:normal 400 12px MonospacedNumber,LarkHackSafariFont,LarkEmojiFont,LarkChineseQuote,-apple-system,BlinkMacSystemFont,Helvetica Neue,Tahoma,PingFang SC,Microsoft Yahei,Arial,Hiragino Sans GB,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.fx2{text-anchor:middle}.fx3{dominant-baseline:central}.fx4{stroke:none}.fc0{fill:var(--text-caption)}.fa2{fill:var(--text-link-disabled)}.fa3{fill:rgb(246, 248, 250)}.fx5{font:400 normal 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fx6{text-anchor:start}.fx7{dominant-baseline:alphabetic}.fc1{fill:rgb(51, 51, 51)}.fx8{font:700 normal 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fb1{fill:var(--N900-FG, 0.15)}.fb2{fill:rgb(225, 228, 232)}.fa4{fill:var(--bg-body)}ABCD1234567框架特点生态完善,组件丰富图结构工作流,状态管理强多Agent协作,角色定义清晰全自主执行,目标驱动软件工程流程模拟微软出品,对话式协作适用场景通用Agent开发复杂多步骤流程团队模拟场景探索性任务代码生成项目多Agent对话学习曲线中等较高低低中等中等LangChainLangGraphCrewAIAutoGPTMetaGPTAutoGen
实战代码示例
1.1
使用LangChain构建ReAct Agent
代码块
Python
from langchain.agents import AgentExecutor, create_react_agent
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain import hub
llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)
tools = [
Tool(
name="Search",
func=lambda q: search_api(q),
description="搜索网络获取信息"
),
Tool(
name="Calculator",
func=lambda expr: eval(expr),
description="执行数学计算"
💡 想要快速找到适合您需求的Agent工具?访问 AI Agent工具导航 获取完整的工具列表和对比。
1.2
使用CrewAI构建多Agent团队
代码块
SQL
from crewai import Agent, Task, Crew, Process
researcher = Agent(
role='研究员',
1.3
使用LangGraph构建状态机Agent
代码块
C++
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator
class AgentState(TypedDict):
messages: Annotated[list, operator.add]
next_step: strdef plan_step(state: AgentState):
# 规划下一步行动return {"next_step": "execute", "messages": ["计划完成"]}
def execute_step(state: AgentState):
# 执行行动return {"next_step": "reflect", "messages": ["执行完成"]}
Coding Agent:开发者的AI助手
Coding Agent是AI Agent在软件开发领域的专业应用,它们能够理解代码、编写程序、调试错误,甚至完成完整的开发任务。
2.1
主流Coding Agent对比
2.2
Coding Agent的工作流程
2.3
Coding Agent最佳实践
清晰的需求描述:提供详细的功能需求和约束条件
渐进式开发:将大任务拆分为小的可验证步骤
代码审查:始终审查Agent生成的代码
测试驱动:要求Agent同时生成测试用例
版本控制:使用Git追踪所有变更
四、Agent开发最佳实践
提示工程优化
python
代码块
Python
system_prompt = """
你是一个专业的任务执行Agent。
## 工作原则
1. 在行动前先分析任务,制定清晰的计划
2. 每次只执行一个工具调用
3. 仔细观察工具返回结果
4. 如果结果不符合预期,反思原因并调整策略
5. 完成任务后,总结执行过程
错误处理与恢复
代码块
Python
class RobustAgent:
def __init__(self, max_retries=3):
self.max_retries = max_retries
def execute_with_retry(self, task):
for attempt in range(self.max_retries):
try:
result = self.execute(task)
安全考虑
🤜
•
沙箱执行:代码执行应在隔离环境中进行
•
权限控制:限制Agent可访问的资源和操作
•
输入验证:对用户输入和工具输出进行验证
•
审计日志:记录所有Agent行为以便追溯
常见问题
4.1
Agent和RAG有什么区别?
🤜
RAG(检索增强生成)是一种增强LLM知识的技术,而Agent是一种能够自主执行任务的系统。Agent可以使用RAG作为其记忆系统的一部分,但Agent的能力远不止于此——它还包括规划、工具调用和反思等能力。
4.2
如何选择合适的Agent框架?
🤜
•
快速原型:选择CrewAI或AutoGPT
•
生产级应用:选择LangChain + LangGraph
•
多Agent协作:选择CrewAI或AutoGen
•
代码生成:选择MetaGPT或专业Coding Agent
4.3
Agent的Token消耗如何优化?
🤜
使用简洁的提示模板
4.4
Agent会取代程序员吗?
短期内不会。
当前的Coding Agent更像是强大的编程助手,能够处理重复性工作和加速开发流程,但复杂的系统设计、架构决策和创新性工作仍需要人类程序员。
Agent和人类的协作模式将成为主流。
五、总结
AI Agent代表了人工智能应用的重要演进方向。通过结合规划、记忆、工具调用和反思四大核心能力,Agent能够自主完成复杂任务,为各行各业带来效率革命。