02-从聊天机器人到智能体:大模型应用经历了什么变化
从聊天机器人到智能体:大模型应用经历了什么变化?
码海寻道 · 大模型、智能体与 RAG 工程组件系列第 2 篇
几年前,我们说“做一个 AI 应用”,很多时候指的是接入一个聊天机器人:用户输入问题,模型返回答案。
今天,越来越多项目开始讨论 RAG、工具调用、工作流和 Agent。模型不再只是回答问题,还被要求查询数据库、阅读文件、调用接口、编排任务,甚至在出现错误后继续尝试。
这并不是简单地把聊天窗口换了一个名字,而是大模型应用的系统结构发生了变化。
本文沿着一条清晰的演进路线,理解大模型应用是如何从“会聊天”逐步发展到“能完成任务”的。
一、第一阶段:模型 API 加聊天界面
最早的大模型应用通常非常简单:
用户输入
↓
后端调用模型 API
↓
返回模型文本
前端有一个输入框和消息列表,后端只需要把用户消息拼进请求,再把模型返回的文本展示出来。
这种模式适合:
- 通用问答;
- 文案生成;
- 翻译和摘要;
- 代码解释;
- 简单的头脑风暴。
它的优点是开发快、组件少、容易验证模型能力。但它也有明显限制:模型只知道当前上下文,无法自动访问企业数据,也不能真正执行外部操作。
如果用户问“帮我查一下订单状态”,模型最多只能生成一段看起来像答案的话,却无法确认真实订单状态。
二、第二阶段:多轮对话与上下文记忆
为了让聊天更自然,应用开始保存历史消息:
第 1 轮:用户介绍问题
第 2 轮:用户补充条件
第 3 轮:用户要求修改答案
后端每次调用模型时,都会把部分历史消息一同发送。这样模型能够理解“它”“上一个方案”“刚才的第二点”等指代关系。
会话记忆并不等于长期记忆
开发者需要区分几种不同的“记忆”:
- 短期上下文:当前对话中的历史消息;
- 会话记录:保存在数据库中的完整聊天内容;
- 用户偏好:用户主动保存的语言、格式和习惯;
- 外部知识:企业文档、产品资料和业务数据。
它们的存储方式和使用方式并不相同。Redis 可以缓存短期会话,PostgreSQL 可以保存持久化记录,而知识库通常还需要 Embedding 和向量检索。
上下文不是越长越好
把所有历史消息都发送给模型,会增加 Token 消耗和延迟,也可能让真正重要的信息被淹没。实际系统需要做历史截断、摘要、分层记忆和按需召回。
因此,多轮对话解决的是“模型能否理解对话过程”,还没有解决“模型能否获取外部事实”。
三、第三阶段:RAG 让模型能够参考外部知识
当用户开始询问企业内部资料,单纯依赖模型参数就不够了。RAG 由此成为大模型应用中最常见的增强方式之一。
标准流程是:
用户问题
↓
问题 Embedding
↓
向量检索知识库
↓
获得相关文档片段
↓
将片段放入上下文
↓
模型生成回答
RAG 的关键变化是:模型回答时不再只依赖训练数据和聊天历史,还可以参考应用在运行时提供的外部资料。
例如,企业制度问答系统可以从知识库取出《差旅管理办法》的相关段落,再要求模型基于这些内容回答并附带来源。
但 RAG 仍然主要是一条“检索后生成”的链路。模型通常不会自主决定要访问几个系统,也不会无限循环地规划任务。
四、第四阶段:结构化输出让模型更容易被程序使用
早期应用通常只读取模型返回的自然语言文本。后来,开发者开始要求模型按照 JSON 或特定 Schema 输出:
{
"intent": "refund_query",
"confidence": 0.91,
"need_human_review": false
}
结构化输出有几个重要作用:
- 让后端可以稳定解析模型结果;
- 把意图分类变成程序可执行的分支条件;
- 让工作流节点之间传递明确状态;
- 降低自由文本格式变化带来的错误。
它是从“模型输出给人看”走向“模型输出给程序使用”的关键一步。
但结构化输出本身也不代表模型拥有自主行动能力。它只是让模型更可靠地表达判断结果。
五、第五阶段:Tool Calling 让模型能够请求外部行动
如果说 RAG 让模型“读到外部知识”,那么 Tool Calling 则让模型“请求执行外部操作”。
开发者可以为模型声明工具:
{
"name": "query_order",
"description": "查询指定订单的当前状态",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
}
},
"required": ["order_id"]
}
}
用户问“订单 20260001 到哪了”,模型可以输出一个工具调用请求。真正执行查询的仍然是后端:
用户问题
↓
模型判断需要查询订单
↓
模型生成工具名称和参数
↓
后端校验权限与参数
↓
后端访问订单系统
↓
工具结果返回模型
↓
模型组织最终回答
这里有一个非常重要的安全边界:模型只是提出调用请求,不能绕过后端直接操作生产数据库。
六、第六阶段:从固定调用工具到 Agent
如果每个问题都固定调用同一个工具,那么它仍然可以用普通代码或 Workflow 实现。
例如:
用户输入城市
↓
固定调用天气 API
↓
生成天气说明
Agent 的出现,通常意味着任务路径变得不确定。用户只给出一个目标,模型需要根据当前状态决定下一步:
用户目标:分析销售下降原因
↓
模型判断先查询销售数据库
↓
读取统计结果
↓
模型发现需要按区域拆分
↓
再次调用分析工具
↓
模型判断是否需要搜索市场信息
↓
综合结果并输出报告
Agent 的典型循环可以概括为:
理解目标
↓
选择行动
↓
调用工具
↓
观察结果
↓
继续行动或结束
与普通聊天机器人相比,Agent 的核心变化不是“回答更长”,而是它开始参与任务规划和环境交互。
七、第七阶段:Workflow 让 Agent 变得可控
Agent 能动态行动,但完全自由的动态行动并不适合所有业务。金融、合同、订单、医疗和企业审批等场景,需要明确的权限、审计和人工确认。
因此,生产系统经常采用 Workflow 约束 Agent:
固定节点:问题分类
↓
固定节点:权限判断
↓
受限 Agent:在白名单工具中完成分析
↓
固定节点:结果校验
↓
固定节点:人工审批或执行
Workflow 负责边界和流程,Agent 负责边界内部的不确定决策。两者不是互相替代,而是互相补充。
LangGraph 官方文档把 Workflow 描述为预先确定代码路径的系统,把 Agent 描述为动态决定过程和工具使用的系统。它还将状态、节点和边作为构建图式应用的基本要素。
八、从聊天到智能体,究竟增加了哪些组件?
可以用下面的对比理解系统复杂度变化:
| 阶段 | 主要组件 | 新增能力 |
|---|---|---|
| 单轮聊天 | 模型 API、前端、后端 | 文本生成 |
| 多轮对话 | 会话存储、上下文管理 | 理解对话历史 |
| RAG 应用 | 文档解析、Embedding、向量库 | 参考外部知识 |
| 工具调用 | 工具 Schema、业务 API、权限校验 | 获取实时数据、执行动作 |
| Agent | 状态、规划、循环、终止条件 | 动态选择行动 |
| 生产级 Agent | Workflow、监控、评估、人工介入 | 可控、可审计、可恢复 |
组件变多并不等于系统一定更好。每增加一种能力,就增加了延迟、成本、故障点和安全边界。
九、一个典型智能客服是如何演进的?
假设我们要做一个电商客服,可以分阶段建设。
第一步:通用问答
模型回答“退货规则是什么”,但内容可能过时,也没有引用来源。
第二步:接入 RAG
模型从最新的售后政策中检索相关段落,再生成带依据的回答。
第三步:接入订单工具
用户询问具体订单时,模型可以请求后端查询订单状态。
第四步:加入工作流
退款、换货和投诉分别进入不同流程,高风险操作转人工审核。
第五步:引入受限 Agent
面对复杂问题,Agent 可以在允许的知识库、订单查询和物流查询工具之间选择,但不能直接退款或修改订单。
这是一条渐进式路线,而不是一开始就部署“全能 Agent”。
十、不要把“自主性”当成唯一目标
大模型应用的价值不只是让模型做更多决定,也包括让系统更稳定地完成任务。
在以下场景中,固定流程通常优于 Agent:
- 每次处理步骤完全一致;
- 需要严格审计和重放;
- 操作风险高;
- 可以用明确规则解决;
- 任务不值得承担额外模型调用成本。
在以下场景中,Agent 才更有价值:
- 用户目标明确,但实现路径不确定;
- 需要组合多个工具;
- 中途需要根据结果调整计划;
- 人工很难提前枚举所有分支;
- 任务允许一定程度的探索和重试。
十一、用四个问题判断项目处在哪个阶段
当你面对一个新的 AI 需求,可以依次询问:
- 只需要生成文本,还是需要访问外部知识?
- 只需要访问知识,还是需要查询实时业务数据?
- 工具调用路径固定,还是需要模型动态选择?
- 任务是否需要审批、人工介入、状态恢复和完整审计?
如果答案依次是“文本、知识、固定、严格”,你更适合从聊天或 RAG + Workflow 开始;如果答案逐渐走向“实时数据、动态选择、复杂任务”,才有必要引入 Agent。
结语:智能化是逐步增加能力,不是一次堆满名词
从聊天机器人到智能体,大模型应用经历的不是一次简单升级,而是能力边界逐步外扩:
生成文本
↓
理解对话
↓
检索知识
↓
调用工具
↓
动态规划
↓
在受控流程中完成任务
理解这条演进路线后,你就不会再把 RAG、Agent 和 Workflow 当成三个互相竞争的概念。
它们分别解决知识、行动和流程问题,真正成熟的系统,往往会根据业务风险和任务不确定性,把三者组合在一起。
下一篇,我们继续进入模型与向量基础:
《Embedding 是什么?大模型为什么需要把文字变成向量?》
参考资料
- LangChain Documentation:Workflows and agents
- LangGraph Documentation:Graph API overview
- LangGraph Documentation:LangGraph overview
- OpenAI Platform Documentation:Using tools
本文为“码海寻道”原创技术文章。模型能力、工具调用格式和框架 API 会随版本变化,正式开发时请以对应项目的最新官方文档为准。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)