AI Agent 智能体:从入门到实战的学习路线

👨 作者简介:大家好,我是唐璜Taro,全栈 领域创作者

✒️ 个人主页 :唐璜Taro

🚀 支持我:点赞👍+📝 评论 + ⭐️收藏


RAG 让大模型读懂你的数据,而 Agent 让大模型自主完成任务。它是 AI 应用的终极形态------模型不再是问答机器,而是能思考、规划、使用工具的智能体。

一、什么是 Agent?

1.1 从对话到行动

复制代码
普通 LLM:   用户提问 → 模型回答(一问一答)

RAG:        用户提问 → 检索资料 → 模型基于资料回答

Agent:      用户提问 → 思考 → 选择工具 → 执行 → 观察结果 → 再思考 → ... → 最终回答

Agent 的核心能力:

  • 思考(Reasoning):拆解问题,制定计划
  • 行动(Action):调用工具、API、数据库
  • 观察(Observation):获取工具执行结果
  • 反思(Reflection):评估结果,决定下一步

1.2 Agent 的组成要素

复制代码
┌─────────────────────────────────────┐
│              Agent                   │
│                                      │
│  ┌──────┐  ┌──────┐  ┌──────────┐  │
│  │ LLM  │  │ 工具  │  │   记忆    │  │
│  │ 大脑 │  │ 双手  │  │   经验    │  │
│  └──────┘  └──────┘  └──────────┘  │
│                                      │
│  ┌──────────────────────────────┐   │
│  │         规划能力               │   │
│  │  ReAct / Plan-and-Execute    │   │
│  └──────────────────────────────┘   │
└─────────────────────────────────────┘
要素 作用 举例
LLM(大脑) 理解任务、推理决策 DeepSeek、GPT-4o、Claude
工具(双手) 执行具体操作 搜索、计算、读写文件、调用 API
记忆(经验) 保留上下文和历史 对话记录、长期知识
规划(策略) 拆解任务、制定步骤 ReAct、Plan-and-Execute

1.3 Agent vs RAG vs 微调

方案 核心能力 适用场景 局限
RAG 检索增强生成 知识问答、文档查询 只能回答,不能行动
微调 模型内化特定知识 特定风格/格式输出 不能实时更新
Agent 自主规划和执行 复杂多步骤任务 实现复杂、成本高

最佳实践:Agent + RAG 结合,让 Agent 具备知识检索能力。

二、Agent 核心原理

2.1 ReAct 框架

ReAct(Reasoning + Acting)是最经典的 Agent 模式:

复制代码
Thought:   我需要先搜索今天的天气
Action:    search("北京今天天气")
Observation: 北京今天晴,最高温度 28°C
Thought:   我已经知道天气了,可以直接回答
Final Answer: 北京今天晴天,最高温度 28°C,适合出行。

每一循环包含四步:

  1. Thought --- 思考下一步该做什么
  2. Action --- 选择并调用工具
  3. Observation --- 获取工具返回结果
  4. 循环或结束 --- 根据结果决定继续还是回答

2.2 Function Calling 机制

大模型本身不能执行代码,Function Calling 是桥梁:

复制代码
用户:"帮我查一下北京天气"

         ↓ 模型分析后决定调用

{
  "name": "get_weather",
  "arguments": {
    "city": "北京"
  }
}

         ↓ 程序执行函数,返回结果

"北京今天晴,28°C"

         ↓ 模型基于结果生成回答

"北京今天天气晴朗,最高温度 28°C。"

关键点 :模型只负责决定调用什么函数、传什么参数,实际执行是程序做的。

2.3 Plan-and-Execute 模式

复杂任务需要先规划再执行:

复制代码
用户:"帮我写一份竞品分析报告"

Plan:
  1. 搜索竞品信息
  2. 分析竞品功能特点
  3. 整理对比表格
  4. 撰写分析报告
  5. 输出最终文档

Execute:
  → 执行步骤 1(搜索)→ 完成
  → 执行步骤 2(分析)→ 完成
  → 执行步骤 3(整理)→ 完成
  → 执行步骤 4(撰写)→ 完成
  → 执行步骤 5(输出)→ 完成

Result: 生成完整的竞品分析报告

三、技术栈选型

3.1 Agent 框架对比

框架 开发者 特点 适合场景 学习成本
LangChain LangChain 生态最大,工具丰富 入门学习、快速原型
LangGraph LangChain 图状流程,状态机 复杂多步 Agent
CrewAI CrewAI 多 Agent 协作 多角色团队模拟
AutoGen 微软 多 Agent 对话 研究探索
Dify Dify 低代码,可视化 快速落地、非技术人员
Coze 字节 低代码,集成生态 快速搭建 Bot

3.2 大模型选型

模型 Function Calling 中文能力 价格 推荐
DeepSeek-V3 支持 优秀 便宜 入门首选
GPT-4o 优秀 中等 效果最好
Claude Sonnet 优秀 中等 长文本强
Qwen-Max 支持 优秀 便宜 国产替代
本地模型 部分支持 参差不齐 免费 隐私场景

3.3 工具生态

常用工具类型:

类型 工具 说明
搜索 Tavily、SerpAPI、Bing 互联网搜索
计算 Python REPL、Calculator 数学计算、代码执行
数据库 SQLDatabase、MongoDB 数据查询
文件 FileReader、FileWriter 读写文件
API Requests、HTTP Client 调用任意 API
代码 Code Interpreter 执行 Python 代码

四、环境准备

4.1 安装依赖

bash 复制代码
conda create -n agent python=3.10 -y
conda activate agent

pip install langchain langchain-openai langchain-community
pip install langgraph  # 复杂 Agent 流程
pip install tavily-python  # 搜索工具
pip install python-dotenv  # 环境变量管理

4.2 配置环境变量

创建 .env 文件:

env 复制代码
DEEPSEEK_API_KEY=your-api-key
DEEPSEEK_BASE_URL=https://api.deepseek.com
TAVILY_API_KEY=your-tavily-key

4.3 基础 LLM 初始化

python 复制代码
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

load_dotenv()

llm = ChatOpenAI(
    model="deepseek-chat",
    openai_api_key=os.getenv("DEEPSEEK_API_KEY"),
    openai_api_base=os.getenv("DEEPSEEK_BASE_URL"),
    temperature=0
)

五、实战一:单 Agent 基础

5.1 定义工具

python 复制代码
from langchain.tools import tool
import math

@tool
def calculator(expression: str) -> str:
    """数学计算器,支持基本运算和数学函数。输入如:2+3*4 或 sqrt(144)"""
    try:
        # 安全的数学求值
        allowed_names = {
            "abs": abs, "round": round,
            "sqrt": math.sqrt, "pow": pow,
            "sin": math.sin, "cos": math.cos,
            "pi": math.pi, "e": math.e,
        }
        result = eval(expression, {"__builtins__": {}}, allowed_names)
        return str(result)
    except Exception as e:
        return f"计算错误:{e}"

@tool
def get_current_time() -> str:
    """获取当前时间"""
    from datetime import datetime
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

@tool
def text_length(text: str) -> str:
    """计算文本的字符数和词数"""
    char_count = len(text)
    word_count = len(text.split())
    return f"字符数:{char_count},词数:{word_count}"

tools = [calculator, get_current_time, text_length]

5.2 创建 Agent

python 复制代码
from langchain.agents import AgentExecutor, create_react_agent
from langchain.prompts import PromptTemplate

prompt = PromptTemplate.from_template("""
你是一个智能助手,可以使用以下工具:

{tools}

工具名称:{tool_names}

请严格按以下格式回答(每步只能做一件事):

Question: 用户的问题
Thought: 我需要思考怎么回答
Action: 工具名称(只能从 [{tool_names}] 中选择)
Action Input: 工具的输入参数
Observation: 工具返回的结果
Thought: 我现在可以回答了
Final Answer: 给用户的最终回答

注意:
- 如果不需要工具,可以直接给出 Final Answer
- Action 只能使用上面列出的工具名称
- 每次只能调用一个工具

开始!

Question: {input}
Thought: {agent_scratchpad}""")

agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,
    max_iterations=5,
    handle_parsing_errors=True
)

5.3 运行测试

python 复制代码
# 测试 1:数学计算
result = executor.invoke({"input": "帮我算一下 (15 + 27) * 3 等于多少?"})
print("回答:", result["output"])

# 测试 2:获取时间
result = executor.invoke({"input": "现在几点了?"})
print("回答:", result["output"])

# 测试 3:多工具协作
result = executor.invoke({"input": "现在几点了?另外帮我算一下 2 的 10 次方"})
print("回答:", result["output"])

运行效果:

复制代码
> Entering new AgentExecutor chain...

Thought: 用户问了两个问题:1) 现在几点 2) 2的10次方。我先获取时间。
Action: get_current_time
Action Input: 
Observation: 2026-05-20 14:30:25

Thought: 时间已获取,现在计算 2 的 10 次方。
Action: calculator
Action Input: pow(2, 10)
Observation: 1024.0

Thought: 两个问题都已得到答案,可以给出最终回答。

Final Answer: 现在是 2026 年 5 月 20 日 14:30:25。2 的 10 次方等于 1024。

六、实战二:带搜索能力的 Agent

6.1 集成搜索工具

python 复制代码
from langchain_community.tools.tavily_search import TavilySearchResults

# 需要先注册 Tavily 获取 API Key(免费额度 1000 次/月)
search = TavilySearchResults(max_results=3)

tools = [search, calculator, get_current_time]

6.2 运行搜索 Agent

python 复制代码
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

result = executor.invoke({
    "input": "今天北京天气怎么样?如果温度超过 30 度,帮我算一下开空调 8 小时大概多少度电(1.5匹空调)"
})
print(result["output"])

Agent 会自动:

  1. 调用搜索工具查询北京天气
  2. 读取温度数据
  3. 如果超过 30 度,调用计算器计算耗电量
  4. 综合给出回答

七、实战三:LangGraph 复杂 Agent

LangGraph 用图(Graph)定义 Agent 流程,适合复杂场景。

7.1 安装

bash 复制代码
pip install langgraph

7.2 基础 LangGraph Agent

python 复制代码
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver
from langchain_openai import ChatOpenAI
from langchain.tools import tool

@tool
def search(query: str) -> str:
    """搜索互联网信息"""
    # 接入真实搜索 API
    return f"搜索结果:关于 '{query}' 的最新信息..."

@tool
def calculator(expression: str) -> str:
    """数学计算器"""
    return str(eval(expression))

# 创建 Agent(LangGraph 简化版)
agent = create_react_agent(
    model=llm,
    tools=[search, calculator],
)

# 运行
result = agent.invoke({
    "messages": [("user", "帮我搜索一下 2026 年 AI 行业的最新动态")]
})

7.3 带记忆的多轮对话

python 复制代码
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver

# 添加记忆
memory = MemorySaver()

agent = create_react_agent(
    model=llm,
    tools=[search, calculator],
    checkpointer=memory
)

# 多轮对话(通过 thread_id 区分会话)
config = {"configurable": {"thread_id": "user-123"}}

# 第一轮
result1 = agent.invoke(
    {"messages": [("user", "我叫小明,帮我搜索 AI Agent 的最新进展")]},
    config=config
)

# 第二轮(Agent 能记住"小明")
result2 = agent.invoke(
    {"messages": [("user", "总结一下刚才搜索的内容")]},
    config=config
)

八、实战四:Multi-Agent 多智能体协作

8.1 CrewAI 多 Agent 示例

bash 复制代码
pip install crewai crewai-tools
python 复制代码
from crewai import Agent, Task, Crew

# 定义 Agent(角色)
researcher = Agent(
    role="研究员",
    goal="搜索并整理关于 {topic} 的最新信息",
    backstory="你是一位资深的技术研究员,擅长信息搜集和整理。",
    verbose=True,
    llm=llm
)

writer = Agent(
    role="技术作家",
    goal="基于研究结果撰写一篇通俗易懂的技术博客",
    backstory="你是一位技术博客作者,擅长将复杂技术用简单语言解释。",
    verbose=True,
    llm=llm
)

reviewer = Agent(
    role="审稿人",
    goal="审查文章的准确性和可读性,提出修改建议",
    backstory="你是一位严谨的技术编辑,对细节要求很高。",
    verbose=True,
    llm=llm
)

# 定义任务
research_task = Task(
    description="搜索 {topic} 的最新进展、核心技术和应用场景",
    expected_output="一份结构化的研究报告,包含:核心概念、最新进展、应用场景、代表性项目",
    agent=researcher
)

writing_task = Task(
    description="基于研究报告撰写一篇 2000 字的技术博客",
    expected_output="一篇结构清晰、语言通俗的技术博客文章",
    agent=writer
)

review_task = Task(
    description="审查文章,检查事实准确性、逻辑连贯性和语言表达",
    expected_output="审查意见和修改建议",
    agent=reviewer
)

# 组建团队
crew = Crew(
    agents=[researcher, writer, reviewer],
    tasks=[research_task, writing_task, review_task],
    verbose=True
)

# 执行
result = crew.kickoff(inputs={"topic": "AI Agent 智能体"})
print(result)

8.2 工作流程

复制代码
研究员 Agent
    ↓ 搜索整理信息
研究报告
    ↓
技术作家 Agent
    ↓ 基于报告撰写博客
博客初稿
    ↓
审稿人 Agent
    ↓ 审查并提出修改意见
最终输出:审查意见 + 修改建议

九、实战五:Dify 低代码搭建(零代码方案)

不想写代码?用 Dify 可视化搭建 Agent。

9.1 部署 Dify

bash 复制代码
# Docker 一键部署
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

访问 http://localhost:3000 即可使用。

9.2 搭建步骤

  1. 创建应用 → 选择"Agent"类型
  2. 配置模型 → 添加 DeepSeek API Key
  3. 添加工具 → 搜索、计算、知识库等
  4. 编写提示词 → 定义 Agent 角色和行为
  5. 测试运行 → 在对话框中测试
  6. 发布上线 → 生成 API 或嵌入网页

9.3 Dify 适用场景

场景 做法
客服 Bot Agent + 知识库(RAG) + 工单工具
数据分析 Agent + SQL 查询 + 图表生成
内容创作 Agent + 搜索 + 写作模板
办公助手 Agent + 日历 + 邮件 + 文档

十、MCP 协议:Agent 工具的统一标准

10.1 什么是 MCP

MCP(Model Context Protocol)是 Anthropic 推出的开放协议,目标是统一 Agent 工具的接入标准

复制代码
之前:每个框架定义自己的工具格式,互不兼容

MCP 之后:统一协议,工具一次开发,所有框架通用

10.2 MCP 架构

复制代码
Agent(客户端)
    ↓ MCP 协议
MCP Server(工具服务)
    ├── 搜索服务
    ├── 数据库服务
    ├── 文件服务
    └── 自定义服务

10.3 MCP Server 示例

python 复制代码
# pip install mcp

from mcp.server import Server
from mcp.types import Tool, TextContent

server = Server("my-tools")

@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="get_weather",
            description="获取指定城市的天气",
            inputSchema={
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "城市名称"}
                },
                "required": ["city"]
            }
        )
    ]

@server.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get_weather":
        city = arguments["city"]
        return [TextContent(type="text", text=f"{city}今天晴,28°C")]

十一、Agent 调优技巧

11.1 Prompt 优化

技巧 说明 示例
角色定义 明确 Agent 的身份和能力边界 "你是一个专业的数据分析助手"
工具说明 清晰描述每个工具的用途和参数 "搜索工具:输入关键词,返回网页摘要"
输出格式 规定回答的结构 "用 Markdown 格式,包含标题和列表"
约束条件 限制 Agent 行为 "不要编造数据,不确定时说不知道"

11.2 常见问题

问题 原因 解决
Agent 死循环 工具返回结果不好,反复重试 设置 max_iterations、优化工具返回
选错工具 工具描述不清晰 改善工具的 description
回答太长 没有限制输出长度 在 Prompt 中要求简洁回答
成本太高 调用次数过多 减少工具数量、优化 Prompt

11.3 成本控制

python 复制代码
# 限制迭代次数
executor = AgentExecutor(
    agent=agent,
    tools=tools,
    max_iterations=5,        # 最多循环 5 次
    max_execution_time=30,   # 最多执行 30 秒
    early_stopping_method="generate"  # 超限时生成当前结果
)

十二、学习路线总结

复制代码
第 1 周:理解 Agent 概念 + ReAct 原理
    ↓
第 2 周:Function Calling / Tool Use 基础
    ↓
第 3 周:LangChain 单 Agent 实战(带 1-2 个工具)
    ↓
第 4 周:RAG + Agent 结合(知识增强 Agent)
    ↓
第 5 周:LangGraph 复杂流程 Agent
    ↓
第 6 周:Multi-Agent 多智能体协作
    ↓
第 7-8 周:项目实战 + 优化调优

推荐学习资源

资源 类型 说明
LangChain 官方文档 文档 最权威的参考资料
LangChain Academy 课程 免费官方课程
Dify 官方文档 文档 低代码方案参考
DeepSeek API 文档 文档 国产模型接入
CrewAI 文档 文档 Multi-Agent 学习

十三、总结

Agent 是 AI 应用的高级形态,核心公式:

复制代码
Agent = LLM(大脑) + Tools(双手) + Memory(记忆) + Planning(规划)

入门建议

  1. 先跑通单 Agent + 1 个工具的最小 demo
  2. 理解 ReAct 循环的工作原理
  3. 逐步添加更多工具和复杂流程
  4. 最终尝试 Multi-Agent 和生产级部署

Agent 的本质是让大模型从"能说"变成"能做"。掌握它,你就掌握了 AI 应用开发的核心技能。

相关推荐
@蔓蔓喜欢你3 小时前
CSS 变量:样式开发的新维度
人工智能·ai
sakiko_3 小时前
Swift学习笔记30-数据库SQlite语句
数据库·学习·swift
创世宇图3 小时前
【AI入门知识点】Agent 是什么?为什么说它是 AI 的下一阶段?
ai·agent
耶叶3 小时前
数字逻辑实验0:verilog语法和代码初步学习
学习
Cat_Rocky3 小时前
Linux学习-Zabbix 7
学习·zabbix
炽烈小老头3 小时前
【每天学习一点算法 2026/05/20】省份数量
学习·算法
清平乐的技术专栏4 小时前
【Flink学习】(七)Flink 状态编程入门,有状态实时计算
大数据·学习·flink
Python大数据分析@4 小时前
现在怎么去学习AI,在哪里去学习?
人工智能·学习
星幻元宇VR4 小时前
VR地震模拟平台|打造沉浸式防震减灾科普新模式
科技·学习·安全·vr·虚拟现实