Agent 智能体开发实战指南(一):从 LLM 到 Agent 的认知升级

系列导读:这是《Agent 智能体开发实战指南》系列的第一篇,将从零开始介绍 Agent 的核心概念、工作原理,以及为什么它能让大语言模型从"只会回答"升级为"会做事"。


一、为什么我们需要 Agent?

1.1 LLM 的局限性

想象一下,你问一个博学但被关在密室里的专家:

“明天深圳的天气怎么样?”
“帮我查一下华胜天成的股价”
“给我订一张明天去北京的机票”

这个专家可以滔滔不绝地讲解气象学原理、分析股市走势、介绍订票流程——但他无法获取实时数据,也无法执行实际操作

这就是纯 LLM 的困境:

  • ❌ 无法访问实时数据(天气、股价、新闻)
  • ❌ 无法执行外部操作(发邮件、调用 API、操作文件)
  • ❌ 无法进行复杂计算(需要代码解释器)
  • ❌ 知识截止于训练数据,无法学习新信息

1.2 Agent 的诞生

Agent(智能体)= 大语言模型(大脑)+ 工具集(手脚)+ 决策逻辑(思维)

Agent 让 LLM 从一个"被动的问答机器"变成"主动的任务执行者":

能力维度 纯 LLM Agent
数据来源 训练数据(静态) 实时数据 + 训练数据
行动能力 仅生成文本 调用工具、影响现实
任务类型 单轮问答 多步骤复杂任务
决策方式 直接回答 思考→行动→观察→迭代

二、Agent 的核心架构

核心特点:

  • 目标驱动:围绕用户的具体任务目标展开工作。
  • 工具调用能力:能连接外部工具,弥补LLM 的局限性。
  • 自主决策与迭代:不需要人工干预,能根据工具返回的结果,判断是否需要继续调用工具,或直接生成最终答案。
    请添加图片描述

根据用户需求,创建工作流,根据工作流的进行自主调用不同的工具skills来完成任务

2.1 三层架构模型

┌─────────────────────────────────────┐
│           决策逻辑层(思维)          │
│  ReAct 框架:思考→行动→观察→再思考    │
├─────────────────────────────────────┤
│           大语言模型层(大脑)         │
│  ChatTongyi / GPT-4 / Claude 等      │
├─────────────────────────────────────┤
│           工具集层(手脚)            │
│  天气查询 / 股价获取 / RAG 检索 / ...  │
└─────────────────────────────────────┘

2.2 工作流程示意

用户提问
   ↓
┌──────────────────┐
│  LLM 分析任务     │ ← 思考:需要什么信息?
└──────────────────┘
   ↓
┌──────────────────┐
│  选择并调用工具   │ ← 行动:调用 get_weather()
└──────────────────┘
   ↓
┌──────────────────┐
│  接收工具返回结果 │ ← 观察:获取到天气数据
└──────────────────┘
   ↓
┌──────────────────┐
│  判断是否完成     │ ← 再思考:还需要其他信息吗?
└──────────────────┘
   ↓
 是 → 生成最终答案
 否 → 回到第一步

三、Agent vs Chain:本质区别

3.1 执行流程对比

普通 Chain(固定流程)

# 流程在代码中写死
step1 = get_user_input()
step2 = process_data(step1)
step3 = generate_output(step2)
return step3

Agent(动态决策)

# 流程由 LLM 根据任务决定
agent = create_agent(model, tools=[tool_a, tool_b, tool_c])
# LLM 自己决定:先调哪个工具?需要调几个?
result = agent.invoke({"messages": [user_query]})

3.2 适用场景对比

场景特征 选择 Chain 选择 Agent
任务步骤固定 ❌ 杀鸡用牛刀
需要条件分支 ⚠️ 代码复杂 ✅ LLM 自动决策
工具调用不确定 ❌ 无法处理 ✅ 核心优势
需要多轮推理 ❌ 难以实现 ✅ 天然支持

经验法则

  • 简单、标准化任务 → Chain
  • 复杂、需要决策的任务 → Agent

四、第一个 Agent 示例

4.1 最简天气查询 Agent

from langchain.agents import create_agent
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.tools import tool


@tool(description="查询天气")
def get_weather() -> str:
    return "晴天"


agent = create_agent(
    model=ChatTongyi(model="qwen3-max"),  # 智能体的大脑LLM
    tools=[get_weather],                   # 向智能体提供工具列表
    system_prompt="你是一个聊天助手,可以回答用户问题。",
)

res = agent.invoke({
    "messages": [
        {"role": "user", "content": "明天深圳的天气如何?"},
    ]
})

for msg in res["messages"]:
    print(type(msg).__name__, msg.content)

4.2 执行过程解析

当用户问"明天深圳的天气如何?"时,Agent 内部发生:

  1. 思考:用户问天气,我有 get_weather 工具可用
  2. 行动:调用 get_weather()工具
  3. 观察:工具返回"晴天"
  4. 生成答案:整合信息,回复用户

4.3 关键知识点

@tool 装饰器的作用

  • 将普通 Python 函数转换为 LangChain 可识别的 Tool 对象
  • 自动提取函数名、参数、类型注解
  • description 参数至关重要:LLM 靠它理解何时调用该工具
# 描述不够清晰
@tool(description="获取天气")

# 优秀的描述
@tool(description="查询指定城市的天气情况,返回包含气温、湿度、风向的详细信息")

五、核心概念速查

5.1 术语表

术语 含义
LLM 大语言模型,Agent 的"大脑"
Tool 工具,LLM 可调用的函数/API
ReAct Reasoning + Acting,Agent 的思考框架
Chain 固定的任务执行流程
Agent 能自主决策的工具调用系统
Stream 流式输出,实时展示思考过程

5.2 LangChain 核心组件

langchain.agents.create_agent  → 创建 Agent
langchain_core.tools.tool      → 定义工具
langchain_community.chat_models → 模型接入

六、常见误区与避坑指南

6.1 误区一:工具越多越好

错误做法:给 Agent 提供 50+ 工具,指望它自动找到合适的。

问题

  • LLM 选择工具的准确率随工具数量增加而下降
  • Token 消耗剧增(每个工具的 description 都要传入)
  • 调试困难

建议

  • 每个 Agent 专注 3-8 个核心工具
  • 按场景拆分不同 Agent(客服 Agent、数据分析 Agent 等)

6.2 误区二:description 随便写

错误做法

@tool(description="获取数据")  # 太模糊!

问题:LLM 不知道何时该用这个工具。

建议

@tool(description="获取股票价格,传入股票名称(如'华胜天成'),返回当前股价字符串")

6.3 误区三:忽略系统提示词

错误做法

agent = create_agent(model, tools, system_prompt="你是助手")  # 太简单

建议

system_prompt="""你是严格遵循 ReAct 框架的智能体,必须按「思考→行动→观察」的流程解决问题。
每轮仅能调用 1 个工具,禁止单次调用多个工具。
告知用户你的思考过程,解释为什么调用某个工具。"""

七、本章小结

核心要点

  1. Agent 的本质:让 LLM 从"被动回答"升级为"主动做事"
  2. 三层架构:决策逻辑 + 大模型 + 工具集
  3. 与 Chain 的区别:动态决策 vs 固定流程
  4. 关键组件:@tool 装饰器、description 描述、system_prompt

下章预告

下一篇我们将深入 工具调用系统,学习:

  • 如何设计优秀的工具函数
  • 工具描述的最佳实践
  • 多工具协作的场景
  • 工具参数设计技巧

系列文章导航

  1. Agent 智能体开发实战指南(一):从 LLM 到 Agent 的认知升级(本文)
  2. Agent 智能体开发实战指南(二):工具调用系统深度解析
  3. Agent 智能体开发实战指南(三):ReAct 框架深度解析
  4. Agent 智能体开发实战指南(四):流式输出与状态管理
  5. Agent 智能体开发实战指南(五):中间件系统与动态提示词
  6. Agent 智能体开发实战指南(六):RAG 与向量存储实战
  7. Agent 智能体开发实战指南(七):项目架构设计与工程化实践
  8. Agent 智能体开发实战指南(八):UI 集成与生产部署

本文是《Agent 智能体开发实战指南》系列的第一篇,下一篇将深入讲解工具调用系统。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐