本节摘要:Parlant 的差异不在某一个开关,而在一组咬合的特性:语义驱动的会话状态、客户作为一级实体、模块化工具链、分层可控与可解释、多租户隔离。把它们逐项和通用 Agent、规则引擎、纯 prompt 对照,才能看出「企业级」三个字到底垫在哪。
阅读完本节,你应当能够:
很多对话系统把会话当成「历史消息往提示词里一贴」。轮次一多,模型开始忘掉槽位、重复问出发地。规则引擎另一极端:状态节点写死,用户说半句口语就掉出图外。
原文把 Parlant 的会话写成语义驱动的状态管理。用户输入是触发迁移的事件,内部是会话状态图:节点是意图或任务阶段,边是条件与动作。订票例子:识别订票后初始化出发地、目的地、日期等槽位;用户补「经济舱」,更新对应槽位,而不是整句重解析。
状态本身有生命周期。原文举例:金融洞察工具被调用时,状态进入处理中,并通过状态通知避免前端以为卡死。这和通用 Agent 的「循环还在跑,前端转圈」不同——后者常常没有一等公民的会话状态。
持久化策略也是对照点。默认内存,适合原型;生产可切到本地 JSON 或 MongoDB。原文给的概念写法是在创建服务时指定 session_store。注意:这是存储后端替换,不是把状态格式改掉。语义压缩与版本意识被原文用来避免「模型升级后历史会话打不开」——具体算法细节原文未展开,本教程不编。
# 概念:同一套会话结构,换存储后端 async with p.Server(session_store="local") as server: pass # 本地持久化;生产可改为 MongoDB 连接串
| 能力 | 纯 prompt | 通用 Agent | 规则引擎 | Parlant |
|---|---|---|---|---|
| 会话表示 | 消息列表 | 消息+中间步骤 | 显式状态机 | 语义状态图+槽位 |
| 中断恢复 | 基本没有 | 取决于你自己序列化 | 有,但死板 | 内存/JSON/Mongo 可切换 |
| 处理中反馈 | 少见 | 看框架是否暴露回调 | 需自写 | ToolContext 可发进度与状态 |
| 历史兼容 | 无 | 无保证 | schema 迁移痛苦 | 原文强调结构一致、语义压缩 |
会话是河,客户是河床。原文把 Customer 做成一级实体:唯一标识,关联历史会话、偏好、权限、外部系统 ID。金融 VIP 接入时可调资产概览、投诉记录、风险偏好,再调话术。这不是「系统提示里写你是 VIP」——那句提示下次就丢。
存储同样可切内存、JSON、MongoDB,customer_store 与会话对称。schema 半结构化,业务可扩展属性。原文提到脱敏与访问钩子,对接 GDPR 一类要求。对照通用 Agent:用户画像往往在向量库或外部 CRM,框架不管身份连续性。对照规则引擎:客户表很完整,但对话层接不上口语。
⚠️ 常见坑:只用会话 ID 冒充客户 ID。服务器重启或用户换设备后,个性化全部归零,还可能串话。
💡 关键直觉:信任来自「你还记得我上次说过孩子升学」,这是实体记忆,不是上下文窗口碰巧还在。
孤立的语言模型只会说话。原文把工具注册成统一契约:REST、库查询、脚本、甚至另一个模型端点,对规划层暴露的是同一类输入输出。查询订单状态的概念形态是:声明工具、运行时由规划匹配、参数填入、结果回到生成。
组合上,原文用工作流把验证身份、检查可否退、创建工单、通知客户串起来。对照 ReAct 类通用 Agent:模型逐步想「下一步调哪个函数」,失败就换一个,路径每次不同。Parlant 更接近「规划引擎按指南调度」,工具能否出现在候选集,后面第 2 章会强调要由指南授权。
多租户与安全是企业对照里最容易被演示型框架省略的。原文写:租户命名空间隔离客户、会话、工具配置、提示模板;工具调用要显式权限;客户关联角色与策略;普通客服角色调不了删除用户。还有传输加密、字段级加密、敏感信息擦除,金融政府场景可接硬件密钥模块——这些是能力方向,部署细节以当时文档为准。

原文把流程分成感知、规划、执行。感知理解输入,规划决定下一步(调工具、追问、直接答),执行落地。企业规则插在规划层:金额超过一万必须人工审核——检测到就中断自动流程,转人工并附上下文。决策路径要记:模型原始输出、规则条件、最终动作。这和「生成完再扫描敏感词」不是同一层。
调试面板被原文当作降低门槛的手段:看状态图、工具调用链、中间变量。医疗金融里,这既是工程需求也是伦理需求。
社区方向原文写过:多模态进状态图、联邦学习优化共享工具、因果模块仍偏实验。同时留下未解题:超长上下文延迟、道德决策如何量化。这些不要写成已交付功能。
特性背后的哲学就一句:不靠模型更大,而靠把大模型嵌进真实业务流时方向盘还在不在。五根支柱缺一根,演示可以过,上线会把缺的那根变成事故报告标题。
特性对照若停在概念,上线时仍会被砍。把五根支柱写成非功能需求。会话:允许中断后续接,处理中必须有状态通知。客户:跨设备仍是同一实体,禁止只用会话号冒充身份。工具:生产接口不得以「模型可能会小心」作为权限模型。可控:金额超限在规划层硬闸,而不是生成后再删句子。租户:演示多客户时必须真隔离,而不是靠前缀碰运气。
存储选择是特性落地的第一刀。内存只用于自动化测试和现场演示。本地文档库适合单机预发。生产用可运维的文档数据库时,要同时规划备份与会话保留期限——这是隐私需求,不是框架彩蛋。切后端不应改变状态语义,若切完槽位丢了,说明序列化实现有问题,不要用「模型忘了」掩盖。
调试面板不是给领导看的大屏。它的用户是排障的人。要求能看见当前状态节点、激活的指南、被抑制的指南、工具入参是否过网关。缺「被抑制」这一项,运营会以为规则没写,其实是优先级把它压了。特性对照里,可解释性从这里开始变成日常工具,而不是论文词汇。
多租户常被小型团队省略,直到第一个外包客服接入。省略的代价是配置互相覆盖、提示模板串味。即使只有一个品牌,也建议用租户模型表达「测试 / 生产」隔离,避免预发指南污染线上。权限上,删除类工具默认不出现在客服角色候选集,注册了不等于可见。
社区方向里的多模态、联邦学习、因果模块,不要写进当前里程碑。当前里程碑能交付的是:状态可续、客户可认、工具可授权、规划可闸、租户可隔。五件都有了,再谈图像进状态图。特性贪多会把框架用成演示集市,和「经久可用」的原文立场相反。
不必等完美平台。一周内可验:会话重启后续接(持久化)、同一客户换入口仍被认出(客户实体)、低权限角色点名高权限工具被拒(权限)、超限进入人工而不是继续生成(规划层闸)、调试能看见状态节点(可解释雏形)。验不过的项写成风险,不要用路线图词汇覆盖。多租户若本周做不到,至少把测试与生产配置隔离。特性对照的意义是排期,不是用来写宣传稿。宣传稿会把未验项说成已有,这比缺少特性更危险。
围绕「五根支柱能否写成非功能需求」,把四条路径再过一遍。表里每格都是可执行判断,不是形容词。读完请把你的项目钉进一格,不要钉在两格之间假装都占了。
| 检查项 | 纯 prompt | 通用 Agent | 规则引擎 | Parlant |
|---|---|---|---|---|
| 决策权放哪 | 消息列表当会话 | 中间步骤当会话 | 死状态机 | 状态图加可切换存储 |
| 改口径谁动手 | 提示里写你是VIP | 画像外置向量库 | 客户表在库对话接不上 | 客户一级实体 |
| 行动如何被拦 | 描述里求模型小心 | 全量函数暴露 | 接口写死 | 契约加授权候选集 |
| 出事如何复盘 | 生成后再删 | 规划中碰壁 | 分支拒绝 | 规划层硬闸 |
| 口语进得来吗 | 无租户 | 后补隔离 | 自建多租户 | 命名空间隔离 |
| 上线第一周验什么 | 看像不像记住你 | 看循环能否续 | 看字段在不在 | 一周五项最小验收 |
把五项写进本周看板:续接、认出、拒绝越权、超限转人工、能看见状态节点。写不进看板的特性,等于还没有。
存储选错会伪装成模型健忘。切后端丢槽位,先查序列化,再怀疑模型。特性对照要防止错误归因。
下一节用场景反过来筛:谁该用这五根支柱,谁不该。