这是"从 LLM 到 Agent Skill"系列的第七篇。前面六篇,我们逐步搭建起了完整的 AI 能力栈:LLM 引擎 → Token 编码 → Context 记忆 → Prompt 指令 → Tool 工具 → MCP 协议标准。现在,我们要把这些积木全部组装起来,搭建一个"能自己干活"的系统——Agent(智能体)。


一、从"问答机器"到"自主干活的系统"

到目前为止,我们描述的 LLM 使用方式基本是:

用户提问 → 模型回答
用户再提问 → 模型再回答
……

这种模式下,模型是被动的。它等着你问,问一句答一句。

但如果用户的需求是复杂的呢?

"帮我规划下周去上海的出差行程,包括订合适的机票、查看那几天的天气、在到达当天下午找一个离机场近的咖啡厅方便我见客户。"

这不是一个"一问一答"能解决的问题。它需要:

  1. 查日历确定出行日期

  2. 搜索合适的航班

  3. 查询那几天的天气

  4. 搜索机场附近的咖啡厅

  5. 综合所有信息,输出一份行程规划

Agent 就是干这个的。


二、Agent 是什么?

Agent(智能体)是一个能够自主规划、自主决策、自主调用工具、持续迭代执行,直至完成复杂用户任务的 AI 系统。

拆解一下这四个"自主":

能力 说明
自主规划 把复杂任务拆解为多个子步骤
自主决策 根据每一步的中间结果,判断下一步该做什么
自主调用工具 根据当前需要,自行选择并调用合适的工具
持续迭代 循环执行"思考 → 行动 → 观察 → 再思考",直到任务完成

三、Agent = LLM + 工具 + 循环

用最简单的公式来表达 Agent:

Agent = LLM + Tool + Loop(循环)

3.1 核心循环:Think → Act → Observe

Agent 的工作模式是一个经典的循环:

        ┌──────────────────────────────────┐
        │                                  │
        ▼                                  │
┌──────────────┐                            │
│   Think      │                            │
│   思考下一步  │                            │
└──────┬───────┘                            │
       │                                    │
       ▼                                    │
┌──────────────┐                            │
│   Act        │                            │
│   调用工具    │                            │
└──────┬───────┘                            │
       │                                    │
       ▼                                    │
┌──────────────┐                            │
│   Observe    │                            │
│   观察结果    │                            │
└──────┬───────┘                            │
       │                                    │
       │  任务未完成                         │
       └────────────────────────────────────┘
       │
       │  任务完成
       ▼
   输出最终答案

每一步,模型都在做同样的决策:"我离目标还有多远?下一步该做什么?该用哪个工具?"


四、Agent 的实际工作过程

让我们用"查天气并找雨伞店"这个经典例子,看 Agent 是怎么工作的。

任务:用户问"今天北京天气如何?如果下雨,帮我找一家附近的雨伞店。"

第 1 轮

Think   → "用户想知道北京天气。我需要调用天气工具。"
Act     → 调用 get_weather("北京")
Observe → 返回结果:"北京今天小雨,18°C"

第 2 轮

Think   → "天气是小雨,用户可能需要雨伞。我需要搜索北京附近的雨伞店。"
Act     → 调用 search_places("雨伞店", "北京")
Observe → 返回结果:"天天伞店(王府井大街12号)、好伞坊(三里屯3号楼)"

第 3 轮

Think   → "找到了两家雨伞店。我的任务完成了,整合信息回复用户。"
Act     → (无需调用工具,直接生成回答)
输出    → "北京今天有小雨,气温18°C,出门记得带伞。
          附近有两家雨伞店:天天伞店(王府井大街12号)、好伞坊(三里屯3号楼)。"

注意:Agent 用了 3 个轮次才完成任务,而不是一次调用。每一轮都在思考、行动、观察。这就是 Agent 和普通 LLM 调用的本质区别。


五、Agent 和普通 LLM 调用的对比

普通 LLM 调用 Agent
任务复杂度 单轮问答 多步骤复杂任务
工具调用 被动等待指令 自主选择和使用
执行方式 一问一答,一次完成 多轮循环,迭代执行
规划能力 自主拆解任务
停止条件 输出完即止 判断任务完成后才停止
错误处理 没有 观察到失败后可以换策略重试

六、Agent 的工程实现模式

在实际开发中,Agent 通常按以下模式实现:

def agent_loop(user_task):
    context = build_context(user_task, tools_list)
​
    while not task_complete:
        response = llm.chat(context)  # Think
​
        if response.has_tool_call:
            result = execute_tool(response.tool_call)  # Act
            context.append(result)                       # Observe
        else:
            return response.text  # 任务完成,输出答案

核心就是:

  1. 把"思考"交给 LLM

  2. 把"行动"交给平台(执行工具)

  3. 把"观察"(工具结果)追加回 Context

  4. 循环,直到模型认为任务完成


七、Agent 的挑战

Agent 很强大,但并不完美。以下是当前 Agent 面临的核心挑战:

7.1 幻觉与错误传导

Agent 的每一次"思考"都可能出错。如果某一步调了错误的工具或填了错误的参数,后续步骤会在错误的基础上继续,导致"一步错,步步错"。

7.2 无限循环

如果 Agent 的停止条件设置不当,它可能在"Think → Act → Observe"中无限循环,永远找不到"任务完成"的时刻。

7.3 Token 消耗

Agent 的多轮循环意味着每一轮的 Context 都在增长。复杂任务可能消耗几十甚至上百轮,Token 用量——费用——直线上升。

7.4 安全性

Agent 能自主调用工具,意味着它能自主操作你的文件、数据库、外部服务。权限控制稍有疏漏,后果可能很严重。


八、总结

  1. Agent 是"能自己干活"的 AI 系统——自主规划、决策、调用工具、持续迭代。

  2. Agent 的核心是 Think → Act → Observe 循环,模型多轮迭代直到任务完成。

  3. Agent 面临幻觉传导、无限循环、Token 消耗和安全性的挑战,这些是工程实践的关注重点。

下一篇,也就是本系列的最后一篇,我们来聊聊 Agent 的"说明书"——Agent Skill。看看怎么为 Agent 预设工作流程,让它在特定场景下表现得更专业、更可靠。


本系列文章:

  1. LLM 大语言模型

  2. Token 与 Tokenizer

  3. Context 与 Context Window

  4. Prompt 提示词

  5. Tool 工具调用

  6. MCP 模型上下文协议

  7. Agent 智能体 ← 你在这里

  8. Agent Skill(待发布)

Logo

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

更多推荐