从Chatbot到Agent:交互范式转换中的产品与工程挑战
从Chatbot到Agent:交互范式转换中的产品与工程挑战
摘要/引言
各位技术同仁、产品爱好者们,大家好!我是深耕智能交互领域7年的老码农兼技术博主阿杰——曾经在大厂做过日均千万次对话的电商客服Chatbot架构,最近两年又扎进了多Agent协作系统的产品化与工程化,踩过的坑能堆成一个小土坡,挖到的金矿(至少我觉得是能加速落地的方法论)也攒了一小箱。
最近刷到的业界动态特别有意思:先是OpenAI的GPT-4o mini掀起了一波「轻量级Agent人人可用」的小高潮,接着字节跳动的豆包智能体、智谱的智谱清言Agent平台、甚至阿里的通义千问Agent Studio都开始向C端B端双管齐下推;再看学术界,NeurIPS 2024上光是Agent相关的论文接收数就超过了300篇,占总接收量的近1/8——整个智能交互圈,好像一夜之间从「聊得像人」的Chatbot狂欢,转向了「做得成事」的Agent革命。
但热闹归热闹,真正落地的时候,你会发现从Chatbot到Agent的转换,绝不是加个「工具调用API」「给个任务目标Prompt」这么简单。昨天还有个初创公司的产品经理找我吐槽:「我让GPT-4o帮我做一份竞品分析报告的Agent,结果它要么找错了公开财报的年份,要么写的分析全是套话,要么把PPT生成得乱七八糟,最后我自己花的时间比直接写还多!」还有个同是架构师的朋友哭诉:「我搭的多Agent协作平台,内存占用动不动就炸,任务执行到一半Agent就『失忆』,对话上下文稍微长一点,工具调用的准确率就直线下降到50%以下,这哪是生产力工具,明明是祖宗啊!」
是的,这就是我们今天要聊的核心痛点:从「被动/有限主动的对话交互」到「主动/多轮/工具驱动的任务执行交互」,交互范式发生了本质性的变化,随之而来的产品设计逻辑、工程架构方案、甚至团队协作模式都得推倒重来——如果还用做Chatbot的那套「意图识别+槽位填充+固定话术库/知识问答库」的思路去做Agent,大概率会死得很惨。
那今天这篇10000字的长文,我就会从「交互范式转换的底层逻辑」讲起,先帮大家建立对Chatbot和Agent的清晰认知(还会给大家放对比表格、ER图、交互图,绝不含糊);然后分别拆解产品设计层面的5大核心挑战和工程架构层面的6大核心挑战,每个挑战都会结合我自己踩过的坑和业界的最佳实践,给出具体的解决思路;接着会给大家展示一个我最近参与的小项目——「个人旅行规划多Agent协作系统」的完整落地过程,从需求分析、环境安装、架构设计、接口设计、核心代码实现到最佳实践,全是干货;最后会聊聊这个领域的发展历史和未来趋势,给大家指几个可以提前布局的方向。
如果你是产品经理,读完这篇文章,你会知道怎么设计一个「真能用、好用、愿意用」的Agent;如果你是软件工程师,读完这篇文章,你会知道怎么搭一个「稳定、高效、可扩展、可观测」的Agent系统;如果你是创业者或者决策者,读完这篇文章,你会知道怎么判断一个Agent项目的可行性,怎么避免踩那些常见的坑。
好,废话不多说,咱们正式开始!
正文
第一章 交互范式转换的底层逻辑:从「对话助手」到「任务执行伙伴」
在聊产品和工程挑战之前,我们必须先搞清楚一个最根本的问题:Chatbot和Agent到底有什么区别?它们的交互范式、核心能力、目标用户、应用场景到底有哪些本质性的不同?
很多人可能会说:「Agent不就是会用工具的Chatbot吗?」这句话对,但又不完全对——「会用工具」只是Agent的一个显性特征,交互范式的转换才是它们之间最核心的隐性区别。
那什么是交互范式?简单来说,交互范式就是「用户和系统之间『谁主导、谁配合、怎么配合』的一套约定俗成的规则」。为了让大家更直观地理解,我先给大家举两个小例子:
1.1 两个直观的小例子
例子1:传统电商客服Chatbot的交互
假设你现在想买一双Nike Air Max 270的运动鞋,你打开某电商平台的客服窗口,输入:「Nike Air Max 270多少钱?」
这时候,传统的电商客服Chatbot会做什么?
- 意图识别:通过NLP模型识别出你的意图是「商品价格查询」;
- 槽位填充:识别出你的槽位是「商品名称:Nike Air Max 270」;
- 知识问答/固定流程触发:如果知识库里面有这个商品的实时价格,它就直接给你一个价格链接;如果没有,它就会问你:「请问您要看哪个颜色、哪个尺码的呢?」;等你补充完槽位信息,它再给你价格,或者如果还是解决不了,就会转人工客服。
整个交互过程中,用户是绝对的主导者:用户要明确地告诉系统自己的需求(哪怕需求很碎),用户要补充系统缺少的所有信息,用户要确认每一步的输出,系统只是一个「被动的信息提供者/流程执行者」。
例子2:个人旅行规划Agent的交互
还是假设你想买运动鞋,但这次你打开的是某旅行规划Agent的应用,输入:「下周五到下周日,我想带爸妈从上海去杭州玩,预算每人2000块,爸妈腿脚不好,不能走太多路,最好能泡温泉,我自己想拍点好看的照片发朋友圈。」
这时候,一个好的个人旅行规划Agent会做什么?
- 任务理解与拆解:首先理解你的核心目标是「下周五到下周日,带腿脚不好的上海父母去杭州,每人2000元预算,既要泡温泉,又要拍照片」;然后把这个大任务拆解成一系列的小任务:
- 小任务1:查询下周五到下周日上海到杭州的高铁票(优先选商务座或者一等座的靠窗位置?不对,爸妈腿脚不好,应该优先选一等座或者二等座的车厢前排、靠近车门、靠近厕所的位置,还要考虑出发和到达的时间——不能太早也不能太晚,早上8点左右从上海虹桥出发,晚上6点左右从杭州东站回来比较合适;
- 小任务2:预订符合预算、靠近温泉、靠近地铁站(因为不能走太多路)、有电梯、有早餐、有适合老年人的设施(比如扶手、防滑垫)的酒店;
- 小任务3:规划符合预算、不用走太多路、既能泡温泉又能拍照片的行程:
- 下周五:上午高铁到杭州,中午在酒店附近吃杭州特色菜(比如知味观·味庄的分店?不对,味庄的总店在杨公堤,人多,而且离地铁站有点远,应该选靠近酒店的、环境安静的知味观分店),下午在酒店休息或者泡温泉,晚上在酒店附近看西湖夜景(比如坐西湖游船的豪华商务舱?不对,豪华商务舱太贵,应该选游船的普通舱但选靠窗的位置,或者直接在酒店附近的西湖边散步拍夜景——但爸妈腿脚不好,散步的时间不能超过30分钟);
- 下周六:上午去灵隐寺飞来峰?不对,飞来峰要爬楼梯,爸妈腿脚不好,应该直接去灵隐寺的天王殿、大雄宝殿、药师殿这些平地的地方,而且最好预约灵隐寺的VIP通道(不用排队);中午在灵隐寺附近吃素斋(比如灵隐寺的净慈寺素斋馆?不对,净慈寺离灵隐寺还有一段路,应该选灵隐寺门口的素春斋分店);下午去西湖断桥残雪、平湖秋月这些平地的地方拍照片,或者直接去西溪湿地的洪园坐摇橹船(不用走太多路,而且能拍很多好看的自然风光照片);晚上回到酒店泡温泉;
- 下周日:上午在酒店附近的商场给爸妈买杭州特产(比如西湖龙井、藕粉、杭扇),中午在商场吃午饭,下午高铁回上海;
- 小任务4:估算整个行程的总预算,确保每人不超过2000块;
- 小任务5:把整个行程规划、高铁票预订链接、酒店预订链接、西湖游船预约链接、灵隐寺VIP通道预约链接、西溪湿地摇橹船预约链接整理成一个清晰的Markdown文档或者PDF文档发给你;
- 小任务6:询问你对这个行程规划是否满意,如果不满意,需要修改哪些地方;
- 小任务7:如果你满意,就帮你自动预订所有的高铁票、酒店、游船、VIP通道、摇橹船——但这里需要注意,预订需要你的授权,而且需要输入你的身份证号、银行卡号等敏感信息,所以Agent应该先询问你的授权,再提供一个安全的支付链接或者跳转页面;
- 工具调用与执行:调用各种外部工具来完成这些小任务——比如调用12306的API查询高铁票,调用携程的API预订酒店,调用百度地图的API查询地点之间的距离和交通方式,调用OpenAI的GPT-4o生成行程规划和Markdown文档,调用支付宝的API生成安全的支付链接;
- 状态管理与记忆:记住你的所有需求——预算、时间、爸妈的身体状况、你想拍照片的需求;记住工具调用的中间结果——比如高铁票的价格、酒店的位置、西溪湿地摇橹船的预约时间;记住整个行程规划的修改历史——比如你可能觉得洪园的摇橹船太贵,换成了免费的西湖电瓶船;
- 主动纠错与优化:如果调用12306的API发现下周五上午8点左右上海虹桥到杭州东站的一等座车厢前排靠近车门的位置已经卖完了,它不会直接告诉你「没票了」,而是会主动帮你查询下周五上午7点半到8点半之间的、二等座车厢前排靠近车门的位置,或者主动帮你查询上海站到杭州站的高铁票,或者主动帮你调整行程的出发和到达时间,然后询问你的意见;
- 多轮对话与协作:在整个过程中,它会和你进行多轮对话——比如询问你对高铁票座位的偏好、对酒店房间的偏好、对素斋馆菜品的偏好;如果需要,它还可以和其他Agent进行协作——比如如果它自己不会估算杭州特产的价格,它可以调用一个「杭州特产价格查询Agent」来帮它估算。
整个交互过程中,Agent是任务的主导者和执行者,用户是任务的监督者和决策者:用户只需要告诉Agent一个模糊的、复杂的、长周期的任务目标,Agent就会主动地理解任务、拆解任务、调用工具、执行任务、管理状态、记忆信息、纠错优化、协作沟通,最后给用户一个完整的、可执行的、符合用户所有需求的解决方案。
1.2 核心概念:Chatbot vs Agent的定义
看完了两个直观的小例子,我们再来看看学术界和业界对Chatbot和Agent的权威定义:
1.2.1 Chatbot的定义
学术界对Chatbot的定义最早可以追溯到1950年图灵提出的「图灵测试」,但真正的商业化Chatbot是从2016年左右开始兴起的。根据维基百科的定义:
Chatbot(聊天机器人) 是一种通过文本或语音进行对话的计算机程序,它可以模拟人类对话者的行为,提供信息查询、服务预约、娱乐互动等功能。
而业界对Chatbot的定义则更偏向于「有限场景下的任务型或问答型交互工具」,比如腾讯云智能客服、阿里小蜜、京东京小智都是典型的商业化Chatbot。
1.2.2 Agent的定义
学术界对Agent的定义最早可以追溯到1986年Minsky提出的「心智社会(Society of Mind)」理论,该理论认为人类的心智是由大量简单的、相互协作的Agent组成的。而目前被广泛引用的Agent定义是1995年Wooldridge和Jennings提出的:
智能Agent(Intelligent Agent) 是一个处于特定环境中的计算机系统,它具有自主性(Autonomy)、反应性(Reactivity)、主动性(Pro-activity)、社会性(Social Ability) 四大核心特征,能够感知环境、做出决策、采取行动,以实现其预设的目标。
而随着大语言模型(LLM)的兴起,LLM驱动的Agent(LLM-based Agent) 成为了当前智能交互领域的研究热点和商业化重点。根据OpenAI的GPT-4o Technical Report和斯坦福大学HAI实验室2024年发布的《Agentic AI:A New Paradigm for Building Intelligent Systems》报告的定义:
LLM驱动的Agent(LLM Agent) 是一种以大语言模型为核心大脑,结合记忆模块(Memory)、工具使用模块(Tool Use)、推理模块(Reasoning)、规划模块(Planning)、协作模块(Collaboration) 等组件的计算机系统,它能够理解用户的自然语言指令,感知并适应环境,自主地制定并执行任务计划,调用各种外部工具,与其他Agent或人类进行协作,以完成复杂的、长周期的、开放域的任务。
1.3 概念之间的关系:核心属性维度对比、ER实体关系图、交互关系图
为了让大家更系统、更全面地理解Chatbot和Agent的区别与联系,我接下来会从核心属性维度对比、ER实体关系图、交互关系图 三个方面来展开。
1.3.1 核心属性维度对比:Markdown表格
我整理了Chatbot和Agent在12个核心属性维度上的对比,包括交互范式、主导者、任务类型、核心能力、输入要求、输出要求、记忆能力、推理能力、工具使用能力、协作能力、可扩展性、可观测性,具体如下:
| 核心属性维度 | 传统/基于规则/基于小模型的Chatbot | 基于大模型的Chatbot(ChatGPT Plus、Claude 3 Opus、文心一言4.0等) | LLM驱动的Agent(包括单Agent和多Agent) |
|---|---|---|---|
| 交互范式 | 被动/有限主动的问答交互或有限流程交互 | 被动/弱主动的开放域对话交互 | 主动/多轮/工具驱动/协作驱动的任务执行交互 |
| 主导者 | 用户绝对主导 | 用户主要主导,系统偶尔主动提问补全信息 | Agent主要主导任务理解、拆解、执行,用户主要主导任务授权、修改、验收 |
| 任务类型 | 封闭域、单轮/短多轮、简单、明确、有固定答案/流程的任务(比如商品价格查询、酒店预订、账单查询、 FAQ问答) | 开放域、单轮/中多轮、简单/中等难度、模糊/明确、无固定答案/流程的任务(比如聊天、写作文、写代码片段、翻译、总结文档) | 开放域、长多轮、复杂、模糊、无固定答案/流程、需要外部工具/协作的任务(比如竞品分析报告撰写、个人旅行规划、软件开发项目管理、医疗诊断辅助) |
| 核心能力 | 意图识别、槽位填充、知识问答/固定流程触发 | 自然语言理解(NLU)、自然语言生成(NLG)、上下文理解(短上下文)、简单逻辑推理 | 自然语言理解(NLU)、自然语言生成(NLG)、长上下文理解、复杂逻辑推理(Chain-of-Thought、Tree-of-Thought、Graph-of-Thought)、任务理解与拆解、工具使用、状态管理与记忆、主动纠错与优化、协作沟通 |
| 输入要求 | 明确、具体、结构化/半结构化的自然语言指令(比如「Nike Air Max 270多少钱?」) | 模糊/明确、具体/抽象、非结构化的自然语言指令(比如「帮我写一篇关于人工智能的高考作文,800字左右,论点明确,论据充分」) | 模糊/明确、具体/抽象、非结构化的自然语言任务目标(比如「下周五到下周日,我想带爸妈从上海去杭州玩,预算每人2000块,爸妈腿脚不好,不能走太多路,最好能泡温泉,我自己想拍点好看的照片发朋友圈」) |
| 输出要求 | 固定/半固定的文本/语音/图片/链接(比如「Nike Air Max 270的价格链接:xxx」) | 非结构化的文本/语音/图片/视频/代码片段(比如一篇800字的高考作文、一段Python代码、一张AI生成的图片) | 完整的、可执行的、符合用户所有需求的解决方案(比如一个Markdown/PDF格式的行程规划文档、所有需要预约的链接、一个安全的支付链接、甚至直接帮你完成所有预约和支付) |
| 记忆能力 | 几乎没有记忆能力,或者只有很短的对话记忆(比如只能记住当前对话的前3-5轮) | 有中等长度的对话记忆(比如GPT-4o mini有128K tokens的上下文窗口,Claude 3 Opus有200K tokens的上下文窗口) | 有长期的、结构化的记忆能力(包括对话记忆、工具调用记忆、任务执行记忆、用户偏好记忆)——不仅有短期的上下文记忆,还有长期的向量数据库/关系型数据库记忆 |
| 推理能力 | 几乎没有推理能力,或者只有基于规则的简单推理(比如「如果用户输入了『退货』,就触发退货流程」) | 有简单的逻辑推理能力(比如可以做简单的数学题、可以理解简单的因果关系) | 有复杂的逻辑推理能力(比如可以做复杂的数学证明题、可以理解复杂的因果关系、可以进行假设推理、可以进行反事实推理)——通常会使用Chain-of-Thought(CoT)、Tree-of-Thought(ToT)、Graph-of-Thought(GoT)等推理技术 |
| 工具使用能力 | 几乎没有工具使用能力,或者只有基于规则的、有限的工具使用能力(比如只能调用预定义的几个API) | 有基于大模型的、有限的工具使用能力(比如只能调用OpenAI Function Calling、Claude Tools预定义的API,而且工具调用的准确率随着上下文长度的增加而下降) | 有基于大模型的、开放的工具使用能力(比如可以调用任意的API、可以执行任意的Python代码、可以操作任意的文件系统)——通常会使用工具检索(Tool Retrieval)、工具规划(Tool Planning)、工具验证(Tool Verification)等技术来提高工具调用的准确率和安全性 |
| 协作能力 | 几乎没有协作能力,或者只能和人工客服进行简单的协作(比如转人工) | 有很弱的协作能力(比如可以和其他基于大模型的Chatbot进行简单的对话,但无法进行复杂的任务协作) | 有很强的协作能力(包括与人类的协作、与其他Agent的协作)——多Agent协作系统通常会使用角色分工(Role Division)、任务分配(Task Assignment)、信息共享(Information Sharing)、冲突解决(Conflict Resolution)等协作机制 |
| 可扩展性 | 非常差——要新增一个意图或槽位,需要重新标注数据、重新训练模型、重新编写规则 | 中等——要新增一个功能,通常只需要修改Prompt或者新增几个预定义的API,但如果要新增一个复杂的功能,还是需要修改架构或者重新训练模型 | 非常好——要新增一个功能,通常只需要新增一个工具或者新增一个Agent,不需要修改核心架构或者重新训练模型(当然,如果要优化核心推理能力,还是可以微调大模型的) |
| 可观测性 | 非常好——每一步的意图识别、槽位填充、流程触发都是可预测、可解释、可追踪的 | 非常差——大模型的决策过程是黑盒,很难预测、很难解释、很难追踪——比如你很难知道为什么GPT-4o会生成这样一段文本,为什么会调用这样一个API | 中等——可以通过日志、追踪、可视化等技术来观测Agent的任务执行过程、工具调用过程、推理过程,但大模型的核心决策过程仍然是黑盒 |
1.3.2 ER实体关系图:Mermaid架构图
接下来,我用Mermaid架构图来展示Chatbot和Agent的ER实体关系图——也就是它们的核心组成实体以及实体之间的关系:
(1)传统/基于规则/基于小模型的Chatbot的ER实体关系图
从这个ER实体关系图可以看出,传统Chatbot的核心组成实体非常简单,只有用户、Chatbot本身、NLU模块、意图识别模型、槽位填充模型、知识库、规则引擎、固定流程、外部API(可选)、NLG模块、模板库、短期记忆(可选) 这几个,而且实体之间的关系也非常简单——都是单向的调用或查询关系。
(2)基于大模型的Chatbot的ER实体关系图
从这个ER实体关系图可以看出,基于大模型的Chatbot的核心组成实体比传统Chatbot稍微复杂一点,但也只有用户、LLM Chatbot本身、短期上下文记忆、LLM核心、工具调用模块(可选)、预定义外部API(可选) 这几个,而且实体之间的关系仍然主要是单向的调用或存储关系——LLM核心是整个系统的大脑,但它的能力仍然主要局限于自然语言理解和生成,工具使用能力也非常有限。
(3)LLM驱动的单Agent的ER实体关系图
从这个ER实体关系图可以看出,LLM驱动的单Agent的核心组成实体非常复杂,有用户、单Agent本身、用户界面模块、任务理解与拆解模块、LLM核心、长期用户偏好记忆、规划模块、任务执行历史记忆、推理模块、CoT/ToT/GoT提示模板库、工具使用模块、工具检索子模块、工具数据库、工具规划子模块、工具执行子模块、开放外部API、Python代码执行环境(可选)、文件系统(可选)、工具验证子模块、状态管理与记忆模块、短期上下文记忆、错误纠正与优化模块、NLG模块 这20多个,而且实体之间的关系也非常复杂——有单向的调用、查询、存储关系,还有双向的反馈关系(比如错误纠正与优化模块会查询短期上下文记忆,然后把优化后的结果反馈给任务理解与拆解模块或规划模块或工具使用模块)。
(4)LLM驱动的多Agent协作系统的ER实体关系图
从这个ER实体关系图可以看出,LLM驱动的多Agent协作系统的核心组成实体比单Agent还要复杂得多——它不仅包含了单Agent的所有核心组成实体,还新增了协调者Agent、任务分配模块、Agent数据库、信息共享模块、共享记忆、冲突解决模块、任务监控与评估模块、多个专业Agent、多个专业工具数据库 这十几个,而且实体之间的关系也更加复杂——有协调者Agent和专业Agent之间的双向交互关系,有专业Agent和专业Agent之间通过共享记忆和信息共享模块的双向交互关系,还有任务监控与评估模块和所有Agent之间的双向反馈关系。
1.3.3 交互关系图:Mermaid架构图
最后,我用Mermaid架构图来展示Chatbot和Agent的交互关系图——也就是它们和用户、环境之间的交互流程:
(1)传统/基于规则/基于小模型的Chatbot的交互关系图
从这个交互关系图可以看出,传统Chatbot的交互流程非常固定、非常线性——用户必须明确地输入指令,Chatbot必须严格地按照「意图识别→槽位填充→知识问答/固定流程触发→NLG生成」的顺序执行,而且如果槽位信息不完整,Chatbot就会一直问下去,直到槽位信息完整为止。
(2)基于大模型的Chatbot的交互关系图
从这个交互关系图可以看出,基于大模型的Chatbot的交互流程比传统Chatbot稍微灵活一点,但仍然主要是「用户输入→LLM核心处理→LLM核心输出」的循环——LLM核心的决策过程是黑盒,而且工具使用能力也非常有限(只能调用预定义的API)。
(3)LLM驱动的单Agent的交互关系图
更多推荐

所有评论(0)