Agent 架构 · 2024

ChatSOP: An SOP-Guided MCTS Planning Framework for Controllable LLM Dialogue Agents

ChatSOP 把企业式标准操作流程引入 LLM 对话智能体,先离线预测 SOP 图,再在对话中用 SOP-guided MCTS 规划下一步动作。论文同时构建 SOP 标注多场景对话数据集,并展示该方法在动作准确率、主动性、可控性和任务完成方面优于 CoT 与 CoT+SOP 基线。

作者
Zhigen Li1,2Jianxiang Peng1Yanmeng Wang2Yong Cao3Tianhao Shen1Minghui Zhang1Linxi Su1Shang Wu1Yihang Wu1Yuqian Wang1Ye Wang2Wei Hu2Jianfeng Li2Shaojun Wang2Jing Xiao2Deyi Xiong1
机构
  1. College of Intelligence and Computing, Tianjin University, Tianjin, China天津大学智能与计算学部,中国天津
  2. Ping An Technology平安科技
  3. Tübingen AI Center, University of Tübingen图宾根大学图宾根 AI 中心
进入中英精读arXiv

读前先抓住结论

ChatSOP 讨论的是一个很现实的矛盾:LLM 对话智能体越来越会聊天,却不一定会按业务流程办事。任务型对话里,用户不是来随便闲聊的,而是要完成信用卡激活、预约、售后、咨询、销售转化这类有明确步骤的目标。只要其中某个步骤被跳过,哪怕回复听起来很自然,任务也可能失败。

论文的核心判断是:可控对话不能只靠下一句回复生成,必须显式建模流程结构。为此,ChatSOP 把 Standard Operating Procedure,也就是 SOP,引入 LLM 对话智能体。SOP 在这里不是一句提示词,而是一个由智能体动作和用户状态组成的有向图;图上的边规定哪些状态和动作可以相连,哪些步骤必须先发生。

在这个基础上,ChatSOP 分成两个阶段。离线阶段,系统根据任务定义预测 SOP 图,得到一个邻接表;在线阶段,系统把当前对话状态放进 SOP-guided Monte Carlo Tree Search,也就是 SGM,用多步模拟选择下一轮智能体动作。LLM 仍然负责理解、判断和生成自然语言,但它不再单独决定流程,而是在 SOP 图和搜索算法的约束下工作。

论文还构建了 SOPDAIL 数据集。这个数据集的关键不只是有 3,114 段中文对话,而是每个任务都带有任务画像、用户画像、动作集合、用户状态、SOP 和对话路径等中间结构。这让研究者可以分别评测“能不能预测流程图”和“能不能沿流程生成对话”两个问题。

实验结果的主线很清楚:在 SOP 预测上,监督微调能显著提升图结构预测质量,Qwen1.5-72b 微调后 F1 达到 77.00,超过 GPT-4o 直接邻接表生成的 71.85;在对话生成上,SGM 在不同模型上普遍超过 CoT 和 CoT+SOP。例如基于 GPT-3.5 的智能体,SGM 的单轮动作准确率是 76.52,而 CoT 基线是 48.57,对应论文摘要中强调的 27.95% 绝对提升。

论文原图:任务型对话智能体的 pipeline。左侧是任务定义、离线 SOP 预测和在线 SGM 规划,右侧是信用卡激活对话如何沿 SOP 流程推进。
论文原图:任务型对话智能体的 pipeline。左侧是任务定义、离线 SOP 预测和在线 SGM 规划,右侧是信用卡激活对话如何沿 SOP 流程推进。

为什么任务型对话需要 SOP

任务型对话和开放域聊天的评价标准完全不同。开放域聊天里,回复有帮助、自然、有信息量通常就足够;任务型对话里,回复还必须符合流程。比如信用卡激活不能先介绍优惠再忘记身份核验,酒店入住不能绕开证件确认,售后处理不能在未确认问题类型前直接承诺解决方案。这些步骤不是语言风格问题,而是业务约束。

传统任务型对话系统通常依赖槽位、意图、规则树或人工设计的状态机。优点是流程可控,缺点是迁移成本高:换一个业务域,就要重新设计槽位和流程;遇到用户拒绝、追问、犹豫或偏离话题时,规则系统很难自然应对。LLM 刚好补上了理解和生成能力,却带来另一种风险:它可能给出看似体面的下一句,但从全局流程看已经跳步、漏步或提前结束。

论文在 Related Work 中把已有对话智能体分成几类:会话问答、开放域对话、任务型对话和会话推荐。前两类主要被动回应用户,任务型对话强调结构化服务,会话推荐强调主动引导目标。但现有对话规划常常还是贪心式的单轮预测,只关注下一步“像不像”,没有充分建模全局策略之间的依赖。ChatSOP 反过来问:如果我们先知道业务流程图,再选择动作,会不会更可控?

SOP 的价值就在这里。它不是替代 LLM,而是给 LLM 一个外部流程骨架。图中的节点可以是 Agent.VerifyIdentityUser.CardholderAgent.IntroduceActivationActivity 这类动作或状态;边表示允许的转移。这样,系统就能区分两类动作:一类是必须严格遵守流程的可控动作,另一类是回答问题、解释疑虑、尝试说服这类不一定写在 SOP 中、但对完成目标有帮助的主动动作

只靠下一句生成

模型根据当前上下文直接生成动作和回复。局部可能流畅,但容易把流程约束藏在 prompt 里,遇到多步任务时会跳步、漏步或过早结束。

SOP + 搜索规划

系统先把流程转成图,再在当前对话状态下模拟未来动作路径。SOP 提供边界,MCTS 提供多步前瞻,LLM 提供判断和自然语言表达。

这里的关键不是把 SOP 简单塞进上下文。论文的实验恰好说明,CoT+SOP 已经比 CoT 更好,但仍然不如 SGM。原因是“知道流程”不等于“会规划流程”:模型可能在 prompt 里看到了 SOP,却仍然按单轮直觉选择动作。MCTS 的加入让系统能多步向前看,评估某个动作是否会在后续更容易达到目标。

数据集不是普通对话语料

ChatSOP 的数据集 SOPDAIL 值得单独理解,因为它决定了这篇论文不是只提出一个搜索算法,而是把可控对话拆成了可监督、可评测的结构化任务。SOPDAIL 覆盖 32 个领域、53 个任务和 3,114 段中文对话;更重要的是,它包含任务定义、用户画像、智能体动作、用户状态、SOP 邻接表、对话路径和完整脚本。

论文的数据构建流程是四步。第一步定义任务,包括业务内容、任务目标、成功标志、用户画像、动作集合和状态集合。第二步让 LLM 作为 planner 草拟 SOP,得到流程中的必要节点和连接。第三步让 LLM 作为 screenwriter,从 SOP 中采样多轮对话路径,并插入主动动作与用户反应。第四步让 LLM 作为 scriptwriter,把动作和状态路径改写成自然语言对话。每一步之后,人工标注者都会审查、修订和验证结果。

论文原图:SOPDAIL 的角色扮演式数据构建流程。GPT-4o 负责生成候选任务、SOP、路径和脚本,人工审核负责质量控制。
论文原图:SOPDAIL 的角色扮演式数据构建流程。GPT-4o 负责生成候选任务、SOP、路径和脚本,人工审核负责质量控制。
1任务定义

明确业务目标、用户画像、动作集合和状态集合

2SOP 规划

把必要业务流程转成 SOP 图或邻接表

3对话路径

从 SOP 中采样路径,并插入主动动作与用户状态

4对话脚本

把结构化路径写成真实对话文本

5人工审核

检查流程、常识、知识和语言质量

这个流程的一个细节很重要:作者并没有完全相信 LLM 自动生成的数据。附录里写到,标注者需要先阅读指南、通过预标注,再进行正式标注;每个样本会分配给三名标注者交叉验证;平均每个样本标注 10.3 分钟,报酬为每小时 8 美元。换句话说,SOPDAIL 是“LLM 预生成 + 人工质检”的混合数据集,而不是纯合成数据。

数据集比较表说明 SOPDAIL 的定位。DSTC、CrossWOZ、SGD 等传统数据集更偏任务型服务,但不一定包含主动交互;OTTers 和 TOPDIAL 有主动性,却不强调流程可控。SOPDAIL 同时标注主动性和可控性,并覆盖开放定义的多领域业务任务。对 ChatSOP 来说,这类数据尤其关键,因为模型既要学会生成回复,也要学会流程图和动作路径。

更细地看,SOPDAIL 把“对话质量”拆成了几层。第一层是业务任务是否说清楚,例如服务方是谁、目标是什么、成功标志是什么、有哪些背景知识。第二层是用户信息是否足够,例如姓名、身份、账户或偏好等能否支撑身份核验和个性化服务。第三层是动作和状态是否覆盖业务过程,例如智能体能不能核验身份、介绍活动、答疑、尝试说服、礼貌结束,用户是否可能同意、拒绝、犹豫、询问或退出。第四层才是自然语言脚本是否流畅。这样的拆分让数据集不仅能训练回复生成,也能训练规划和评测。

这一点和很多对话数据集不同。普通对话语料往往只记录“用户说了什么、系统说了什么”,最多附带意图或槽位;SOPDAIL 则额外保存“这一轮为什么应该这样说”。如果模型选错了动作,研究者可以回到 SOP 图检查:是用户状态识别错了,还是候选动作不在可达邻接节点里,或者是主动动作虽然合理但未能推动任务目标。这样的可诊断性,是可控 agent 数据非常重要的价值。

论文中的 74% 可控性话语也值得注意。这说明数据集并不是以闲聊和补充说明为主,而是大量围绕流程节点展开。对模型来说,这会形成一种训练压力:它必须学会尊重业务顺序,而不是只学会生成自然、礼貌、信息充分的句子。对企业场景来说,这正好对应真实需求,因为业务系统最怕的不是回复不够漂亮,而是回复看起来漂亮但没有按流程完成关键步骤。

附录里的任务定义字段也很有工程参考价值。任务画像提供业务目标和知识,用户画像提供身份核验和个性化服务所需信息,智能体动作给出系统可选动作集合,用户状态给出用户当前任务状态。这样的结构让后续模型不必从一大段自由文本里猜测流程,而是可以在固定字段之间传递状态。

json
1{2  "task_profile": {3    "agent_identity": "Bank Credit Card Center Customer Service",4    "task_goal": "persuade the user to explicitly agree to activate the credit card",5    "success_mark": ["User.ClearAgreement"]6  },7  "agent_action": ["Agent.Start", "Agent.VerifyIdentity", "Agent.IntroduceActivationActivity"],8  "user_state": ["User.Cardholder", "User.WorryAndDoubt", "User.ClearAgreement"]9}

这段结构化输入背后的思想是:把业务流程拆成可枚举、可连接、可检查的单元。对于想复用 ChatSOP 的工程团队,这可能比 MCTS 本身还先要做。没有清晰的动作集合、状态集合和成功标志,搜索算法很难知道什么叫“走对了流程”。

方法总览

ChatSOP 方法整体可以看成一条双阶段流水线:离线规划器先从任务定义中预测 SOP,在线规划器再把 SOP 当成约束,用 MCTS 规划下一轮动作。两者之间通过邻接表连接,邻接表就是业务流程图的机器可读表示。

论文原图:ChatSOP 框架。对话开始前预测 SOP;对话进行中,Online Planner 基于工作记忆、SOP 图和 MCTS 选择动作。
论文原图:ChatSOP 框架。对话开始前预测 SOP;对话进行中,Online Planner 基于工作记忆、SOP 图和 MCTS 选择动作。

论文把 ChatSOP 拆成五个组件。LLM 模块负责管理和调用不同模型;SOPs Pool 存储可检索的 SOP 节点;Offline Planner 负责从任务定义中生成 SOP 邻接表;Online Planner 根据对话上下文规划下一步动作;Working Memory 维护历史对话、当前状态、任务信息和中间结果。这个结构让系统里的每个部件都有明确职责,而不是把所有判断都压进一个长 prompt。

工作流程从用户给出任务定义开始。系统先检索相关 SOP 节点,再由离线规划器生成完整邻接表。对话开始后,每轮用户输入都会更新工作记忆;在线规划器将当前状态作为搜索根节点,结合 SOP 图扩展候选动作,模拟未来对话路径,并把奖励回传到树中。最后,系统选择当前节点下价值最高的子节点,作为下一轮智能体动作,再让 LLM 生成自然语言回复。

1检索节点

从 SOPs Pool 中找到任务相关动作和状态

2预测 SOP

离线规划器生成邻接表,表示哪些节点可以相连

3更新状态

工作记忆根据历史对话和用户新话语维护当前状态

4树搜索规划

SGM 用选择、扩展、模拟和回传评估候选动作

5生成回复

LLM 根据选中动作生成自然语言回复

这套方法的设计重点是把流程控制分层。离线规划器解决“流程应该是什么”;在线规划器解决“当前上下文里下一步应该走哪条边”;LLM 回复生成解决“动作如何说成自然语言”。这样分层之后,系统的错误也更容易诊断:是 SOP 图错了,是状态识别错了,是搜索奖励错了,还是回复生成偏离动作了。

SOP 图如何变成控制信号

形式化目标

论文把一次多轮对话写成 Dt={(ut,st,at,rt)}t=1TD_t = \{(u_t, s_t, a_t, r_t)\}_{t=1}^T。其中 utu_t 是用户话语,sts_t 是用户状态,ata_t 是智能体动作,rtr_t 是智能体回复。这个四元组很朴素,但它把对话从纯文本序列改成了“状态-动作-回复”的结构,后续才能做状态预测和动作规划。

SOP 图 GtG_t 是有向图,顶点标注为智能体动作和用户状态,边表示流程允许的连接。邻接表 M\mathcal{M} 则是图的实现形式:每个节点对应一个后继节点列表。SOP 预测任务就是判断这些连接是否存在。

m^=argmaxmMP(mst,at)\hat{m} = \arg\max_{m \in \mathcal{M}} P(m \mid s_t, a_t)

在所有候选邻接关系中,选择在给定用户状态和智能体动作条件下概率最大的连接。它回答的是:当前动作或状态之后,SOP 图允许走向哪里。

这个公式看起来像普通分类问题,但它的意义更像流程编译。系统不是直接问“下一句话怎么说”,而是先问“流程图中哪些边应该存在”。如果 SOP 图被删边、加错边或漏掉关键节点,后面的在线规划就会基于错误流程做决策。因此论文强调,对 SOP 图的修改或删除会导致任务完成不准确。

随后,对话生成分成三步:先预测下一轮用户状态,再预测下一轮智能体动作,最后生成回复。三个条件概率都依赖历史对话、任务画像和 SOP 邻接表。直觉上,这等于把“先理解用户当前处于什么状态,再选择流程上合适动作,再说出回复”变成了明确建模目标。

离线规划器

Offline Planner 提供三种 SOP 预测方式。DAL 是最直接的:提示 LLM 直接输出 JSON 邻接表。它实现简单,但容易漏边或混淆节点关系。TCoT 多加一步,让 LLM 先用自然语言解释每个顶点和子顶点关系,再把解释转换成邻接表;这样做的动机是让模型先把业务流程讲清楚,再输出结构。SFT 则使用 SOPDAIL 的监督数据微调模型,让模型逐个顶点生成相邻节点。

直接提示模型生成邻接表,成本低但稳定性有限。

附录提示词揭示了这一步的工程形态。DAL prompt 要求模型扮演业务流程经理,根据任务画像和 SOP 顶点输出每个节点的邻接列表;TCoT prompt 先要求模型分析所有节点的交互过程,再把描述转成 JSON。这里的输出格式限制非常严格:字段必须包含所有节点,没有后继节点就返回空数组,节点名称必须与候选列表一致。这些限制能降低自由生成导致的结构漂移。

json
1{2  "Agent.Start": ["Agent.VerifyIdentity"],3  "Agent.VerifyIdentity": ["User.Cardholder", "User.NonCardholder"],4  "User.ClearRejection": ["Agent.PoliteEnd"],5  "Agent.PoliteEnd": []6}

这段邻接表示例说明了 SOP 图的核心:流程中每个节点都知道自己可以走向哪里。在线规划器看到当前状态是 User.Cardholder 时,不必从所有动作里盲选,而是可以优先考虑 SOP 局部子图中的动作。这也是 ChatSOP 区分“控制”和“生成”的关键。

从实现角度看,离线规划器的难点不是把 JSON 格式写对,而是把业务流程边界判断对。比如“核验身份之后可以进入介绍活动”是业务主干边;“用户提出疑问之后可以答疑”可能是主动交互边;“用户不是本人之后继续介绍活动”则应当被禁止。DAL 容易在这类边界上犯错,因为它直接从任务画像跳到邻接表;TCoT 先让模型解释节点关系,能让部分隐含约束被显式说出来;SFT 则让模型从人工修订过的数据中学习这些边界。

这也解释了为什么论文会同时保留三种离线方法。DAL 是低成本起点,适合快速生成候选 SOP;TCoT 是无训练条件下的推理增强,适合让模型先把流程讲清楚再结构化;SFT 是有数据积累后的稳定方案,适合把反复出现的业务流程知识沉淀进模型参数。实际系统可以把三者串起来:先用 DAL 或 TCoT 生成草稿,再由人修订,积累到一定规模后再做 SFT。

SOP 邻接表还有一个工程上的好处:它可以被版本化和审计。业务规则变化时,不必重新写整套对话 prompt,而是更新局部边或节点;线上出现事故时,也可以回放当时系统走过的节点序列,判断是否违反 SOP。如果对话智能体只是一个长 prompt 和一段历史上下文,这种审计会困难得多。

在线规划器:SOP-guided MCTS

在线阶段的目标是选择下一轮实际对话动作。论文把每个搜索节点看作对话状态 dtd_t,其中包含智能体动作和用户状态。搜索从初始状态 d0d_0 开始,经过选择、扩展、模拟和回传四个阶段。经过若干次迭代后,系统从当前节点的子节点中选择 QQ 值最高的动作,用于下一轮真实对话。

SGM 的核心不是“让模型想得更久”这么简单,而是把每一次思考都放进可更新的搜索树里。普通 CoT 通常只产出一条思考路径,路径中前面一步错了,后面很难恢复;ToT 虽然有多条候选思路,但如果没有清晰的回传机制,历史尝试对下一轮选择的影响仍然有限。MCTS 的优势是每次模拟都会改变访问计数和价值估计,让系统逐渐偏向更有希望的动作分支。

在对话场景里,这种价值累积尤其重要。一个动作当前看起来合理,不代表几轮后仍然能完成任务。例如用户刚完成身份核验时,直接结束对话显然不合理;介绍活动可能推动目标,但如果用户表示担心风险,就需要先答疑而不是继续硬推。MCTS 通过模拟后续状态,让系统把“当前动作对未来路径的影响”也纳入选择。

UCT 与奖励

选择阶段使用 UCT 来平衡探索和利用。高价值节点值得利用,访问次数少的节点值得探索。公式如下:

at=argmaxat[Q(dt,at)+wlnN(dt)N(c(dt,at))]a_t^* = \arg\max_{a_t} \left[ Q(d_t, a_t) + w \sqrt{\frac{\ln N(d_t)}{N(c(d_t,a_t))}} \right]

第一项 Q(dt,at)Q(d_t,a_t) 表示在状态 dtd_t 采取动作 ata_t 的期望价值;第二项是探索项,访问少的子节点会得到更大探索奖励;ww 控制探索和利用的平衡。

这里的 QQ 值不是简单的文本相似度,而是由逻辑合理性和任务完成程度组成。论文用 LLM prompt 多次评估当前动作是否合理,得到 L(dt,at)\mathcal{L}(d_t,a_t);同时用离散值表示任务完成状态,终止状态为 0.3,成功状态为 0.7,其他为 0。

Q(dt,at)=λ(L(dt,at)+(1λ)T(dt,at))Q(d_t,a_t)=\lambda \cdot \left(\mathcal{L}(d_t,a_t)+(1-\lambda)\cdot \mathrm{T}(d_t,a_t)\right)

L\mathcal{L} 衡量动作逻辑合理性,T\mathrm{T} 衡量任务完成状态,λ\lambda 是权重。论文实验中 λ=1\lambda=1,因此主要依赖 LLM 对动作合理性的二值采样评估。

这个奖励设计有一个值得注意的边界:当 λ=1\lambda=1 时,任务完成函数 TT 实际被弱化了。论文这样设可能是为了让 LLM 逻辑判断主导搜索,但工程复用时可以重新调权重。如果业务目标非常明确,例如是否完成激活、是否预约成功,增加任务完成奖励可能更稳。

奖励函数还有一个隐含假设:LLM 能较可靠地判断动作是否符合流程或有助于任务成功。这个假设在强模型上通常成立,但在小模型或高风险业务上未必足够。因此复用时可以把奖励拆成多个来源,例如 SOP 图硬约束、规则校验、知识库校验、用户情绪或合规检测,再把 LLM 判断作为其中一项。这样能减少单一模型裁判造成的偏差。

原文算法拆解

AlgorithmPlanning for LLM Dialogue Agents with MCTS
1Require: Initial dialogue state $d_0$, transition function $p_\theta$, reward function $r_\theta$, action generator $a_\phi$2Require: expand actions $M$, depth limit $L$, roll-outs $N$, exploration weight $w$3Initialize action memory $A$, children $c$, rewards $r$, value function $Q$, visit counter $N$4for $k \leftarrow 0, ..., N-1$:5  $t \leftarrow 0$6  while $N(d_t) > 0$:  # Selection7    update visit count $N(d_t)$8    choose $a_t$ by UCT over actions in $A(d_t)$9    move to child state $d_{t+1}=c(d_t,a_t)$10  while $d_t$ is not terminal and $t \leq L$:  # Expansion and Simulation11    for $i \leftarrow 1, ..., M$:12      sample action $a_t^{(i)}$, next state $d_{t+1}^{(i)}$, reward $r_t^{(i)}$13      update action memory, child mapping, and rewards14    choose action with maximum local reward for simulation15    move to next state and continue16  for $t' \leftarrow t, ..., 0$:  # Back propagation17    update $Q(d_{t'},a_{t'})$ with future rewards

这段算法把 ChatSOP 的在线规划压缩成初始化、选择、扩展、模拟和回传。SOP 影响候选动作扩展,LLM 提供动作生成、状态转移和奖励判断,MCTS 负责把多次模拟结果沉淀到 $Q$ 值中。

算法输入分三类。第一类是对话状态与模型接口:初始状态 d0d_0、状态转移函数 pθp_\theta、奖励函数 rθr_\theta、动作生成器 aϕa_\phi。这些接口通常由 LLM prompt 实现。第二类是搜索预算:扩展动作数 MM、深度限制 LL、roll-out 次数 NN。第三类是探索权重 ww,决定 UCT 中探索项的强度。

初始化阶段建立动作记忆 AA、子节点映射 cc、奖励表 rr、价值函数 QQ 和访问计数 NN。这些数据结构让每次模拟不只是一次独立调用,而是会改变搜索树的经验。访问次数告诉算法哪些路径已经看过,奖励和 Q 值告诉算法哪些路径更有希望。

选择阶段只在已有树中移动。从根状态开始,只要当前状态已经访问过,算法就用 UCT 从已有动作中选一个。这个阶段不会创造新动作,主要是在已经积累经验的分支里找到值得继续探索的叶节点。对于对话任务来说,它相当于沿着当前认为有希望的动作路径向前走。

扩展阶段发生在非终止叶节点。系统采样 MM 个候选动作,并通过状态转移函数预测后继状态,通过奖励函数估计奖励。论文在这里加入 SOP 约束:先利用 SOP 图的局部子图,再加入当前状态后两级子节点进行扩展。这样既不会完全锁死在 SOP 上,也不会让 LLM 任意跳到无关动作。

模拟阶段用于估计未来收益。为了效率,论文没有让搜索在全部空间中高随机性展开,而是沿着 LLM 采样并受 SOP 引导的候选对话策略向下模拟。这是一个很务实的取舍:任务型对话需要实时性,模拟过深过宽会让延迟和成本不可接受。

回传阶段把终止路径上的未来奖励聚合到各个状态动作对的 QQ 值中。完成预定迭代后,系统从当前节点的子节点中选 QQ 值最高的动作,指导真实对话的下一轮。这一步体现了 MCTS 与普通 CoT 的差异:CoT 只生成一条推理链,MCTS 会把多条候选路径的经验累积起来。

把这套算法落到真实系统时,还需要明确每个函数如何实现。动作生成器可以是一个提示词,让模型从候选动作列表中采样若干动作;状态转移函数可以让模型根据动作和上下文预测用户可能状态;奖励函数可以让模型判断动作是否符合 SOP 或推动目标。论文附录给出的提示词正是在定义这些接口。也就是说,SGM 并没有要求训练一个传统强化学习环境,而是用 LLM 模拟策略、世界模型和奖励模型。

不过,LLM 同时扮演多个角色也会带来相关性风险。如果动作生成、状态转移和奖励判断都由同一个模型完成,模型可能把自己的偏好重复强化。工程上可以用不同模型、规则检查或人工反馈来分离这些角色。例如用小模型生成候选动作,用规则和 SOP 图过滤,用强模型评分,用真实用户反馈或日志更新奖励。这些都能让 MCTS 更接近可部署系统。

还要注意,SOP-guided MCTS 并不是越深越好。深度越大,模拟更可能覆盖未来情况,但也更容易把模型生成的虚假用户反应带入决策。宽度越大,候选动作更多,但成本更高。论文使用 M=3M=3L=8L=8N=3N=3 是一种折中:足够进行多步规划,但不至于让搜索完全不可控。复用时应把这些参数视为产品延迟和业务风险之间的旋钮。

实验结果怎么读

实验分成两条线:SOP 预测和对话生成。SOP 预测回答“能不能从任务定义恢复流程图”;对话生成回答“有了流程图之后,能不能沿流程选择动作并生成对话”。这两个任务分别对应 ChatSOP 的离线规划器和在线规划器。

SOP 预测指标包括 Pre、Rec、F1、GED 和 GEDR。Precision 和 Recall 衡量预测边是否正确、是否漏掉真实边,F1 是二者折中;GED 是图编辑距离,GEDR 是编辑比例,二者越低说明预测图越接近真实 SOP。读这张表时不要只看 F1,还要看 GED/GEDR,因为一个看似高 F1 的图如果需要大量编辑才能匹配真实流程,部署风险仍然高。

主结果显示,TCoT 在多数模型上优于 DAL,特别是召回和 F1 有提升,说明“先解释关系再转邻接表”确实能改善部分模型的流程可用性。但提升最大的还是 SFT。Qwen1.5-72b 经过监督微调后 F1 达到 77.00,GEDR 降到 7.12;Llama3-8b SFT 也能达到 70.21 的 F1,明显超过它的 DAL 和 TCoT。这个结果说明 SOPDAIL 的结构化标注确实能训练模型掌握 SOP 预测。

对话生成指标包括 Acc T、Acc C、Acc P 和 Acc D。Acc T 是单轮动作准确率,Acc C 是可控动作准确率,Acc P 是主动动作准确率,Acc D 是整段对话准确率。整段对话准确率通常更难,因为它要求每一轮都正确;一个中间动作错了,后续即使语言流畅也可能不能算成功。

论文原图:人工评测、ToT 对比和案例研究。图中展示 SGM 相比基线在可控性、目标成功率和案例动作选择上的优势。
论文原图:人工评测、ToT 对比和案例研究。图中展示 SGM 相比基线在可控性、目标成功率和案例动作选择上的优势。

对话生成表的趋势很一致:SGM 基本在所有模型和指标上优于 CoT 与 CoT+SOP。以 GPT-3.5 为例,CoT 的 Acc T 是 48.57,CoT+SOP 提升到 63.24,SGM 进一步提升到 76.52。这说明把 SOP 放进 prompt 有帮助,但多步搜索规划还能带来额外收益。GPT-4o 上同样如此,SGM 的 Acc C 达到 91.19,说明强模型也会从 SOP-guided search 中获益。

开源模型结果也有一个清晰信号:模型规模仍然重要。Llama3-70b 的 SGM Acc T 是 78.35,而 Llama3-8b 是 46.85,差距很大。这说明 SOP 和 MCTS 不是万能补丁,底层模型仍需要足够的理解、状态识别和动作判断能力。另一方面,Qwen1.5-72b、Llama3-70b 这类开源模型在加入 SGM 后能接近甚至在某些维度超过较弱闭源基线,说明结构化流程和搜索能放大小模型可用性。

整段对话准确率 Acc D 普遍比单轮动作准确率低很多,这也符合任务型对话的连乘效应。单轮动作 80% 正确看起来不错,但一段对话有多轮时,任何一轮错都可能影响任务完成。SGM 的价值不是只把某一轮选择做对,而是降低整条路径中发生流程错误的概率。这也是为什么论文还要看目标成功率和人工评测。

SOP 预测结果

SFT 通常最强,说明结构化 SOP 标注能显著提升流程图预测。Qwen1.5-72b SFT 的 F1 为 77.00,超过 GPT-4o DAL 的 71.85。

对话生成结果

SGM 通常最强,说明仅有 SOP prompt 不够,多步模拟和回传能进一步提高动作准确率、可控性和整段任务完成。

人工评测补上了自动指标的盲区。作者在 100 段对话上评估可控动作、主动动作、知识准确率、目标成功率和逻辑连贯性。Llama3-70b 上,SGM 在可控性、目标成功率和连贯性上都有明显优势;GPT-4o 基线已经很强,但 SGM 仍能提升多个维度。知识准确率在各方法上都较高,说明主要瓶颈不是模型不知道业务知识,而是能不能按流程选择合适动作。

这个结论很关键。许多企业对话系统的问题不是“模型不知道答案”,而是“模型在错误时间说了正确答案”。例如用户还没有确认身份时,模型可能已经开始介绍优惠;用户表达担忧时,模型可能直接结束对话;用户已经同意时,模型可能继续说服。这些错误用知识准确率看不出来,但会体现在可控动作准确率、主动动作准确率、目标成功率和逻辑连贯性里。

因此读实验时应把指标和机制对应起来。SOP 预测表主要验证 Offline Planner 和 SOPDAIL 标注是否有用;对话生成表主要验证 Online Planner 是否能把 SOP 约束转化为更好的动作;人工评测验证自然语言回复是否在实际对话维度仍然可靠;成本效果分析说明这种可靠性需要付出多少计算代价。四类证据合在一起,才支撑论文的核心主张。

消融、成本与案例

论文还比较了 Tree-of-Thought 和 MCTS。ToT 也属于树式思考,但更偏把推理拆成多次 LLM 调用;MCTS 则有明确的选择、扩展、模拟和回传机制。结果显示,SOP 加入 ToT 也能提升性能,说明 SOP 本身是有效控制信号;但 SGM 在自动评测和人工评测中更好,说明 MCTS 的回传和价值累积更适合在线动作规划。

成本分析给了一个非常工程化的提醒:树搜索不是免费的。附录中,作者用 Llama3-70b-chat 比较目标成功率和 token 消耗。相对基础单步 CoT,MCTS 消耗约 9 倍 token,但目标成功率提升约 30%;相比 ToT,MCTS 更省 token 且效果更好;SFT 则在性能和计算效率上最好。

论文附录图:成本效果分析。树搜索提升目标成功率但增加 token 消耗,SFT 在性能和效率之间表现最好。
论文附录图:成本效果分析。树搜索提升目标成功率但增加 token 消耗,SFT 在性能和效率之间表现最好。

这意味着 ChatSOP 的部署形态不一定只有一种。如果系统已经积累了大量 SOP 标注数据,SFT 可能是更高效的长期方案;如果新任务很多、标注不足,SGM 可以作为少样本或零样本阶段的规划器;如果场景实时性要求极高,则需要限制搜索深度、roll-out 次数和候选动作数。

案例研究最能说明 MCTS 的优势。第一个案例中,办理某项业务前必须先核验身份;加入 SOP 后,CoT+SOP 和 SGM 都能选择符合流程的动作。第二个案例更有意思:最佳动作不在 SOP 中,而是主动说服。CoT+SOP 因为过度依赖显式 SOP,没有继续说服;SGM 通过模拟更深的对话路径,选择了更有利于目标达成的动作。这说明 SOP 不是把系统变成死规则,而是给主动规划提供边界。

附录中的提示词也证明了这一点。动作采样 prompt 会给出候选动作、对话上下文和 SOP 优先动作;奖励 prompt 会判断所选动作是否符合任务流程或有利于推动任务成功;用户状态 prompt 会根据当前对话选择最匹配状态。也就是说,MCTS 的每个接口都由 LLM 执行,但接口输入输出被严格结构化。

如果把案例放进更长的产品流程里看,ChatSOP 更像一个“决策层”而不是“话术层”。话术层决定一句话怎么表达,决策层决定现在是否该核验身份、是否该答疑、是否该继续说服、是否该结束。许多 LLM 应用失败,是因为把这两个层次混在一起,让一个生成模型同时负责状态识别、流程判断、目标优化和语言表达。ChatSOP 的贡献之一,就是把这些职责拆开。

成本章节也提示了一个部署策略:可以把 MCTS 用在困难轮次,而不是每一轮都跑完整搜索。比如问候、确认收到、简单解释可以用浅策略;身份核验、用户拒绝、关键成交、投诉升级等高风险节点再启用 SGM。这样可以保留多步规划带来的可控性,同时降低平均延迟和 token 成本。

另一个可行策略是把搜索结果缓存或蒸馏。大量相似任务反复出现时,可以把 MCTS 产生的高质量轨迹加入训练数据,后续用 SFT 模型直接预测动作。论文成本图里 SFT 的性能和效率最好,正好说明这种路径有价值:先用搜索探索策略,再用监督学习把策略固化下来。

局限与复用启发

ChatSOP 的第一类风险是 SOP 质量。如果离线预测出的 SOP 图有错,在线 MCTS 会在错误图上规划。搜索算法能缓解局部贪心,但不能凭空修复错误业务流程。因此真实系统里,关键任务的 SOP 仍然需要人工审核、版本管理和异常监控。

第二类风险是 LLM 幻觉。论文在局限中指出,方法依赖 ChatGPT、GPT-4 等模型的上下文学习能力,而 LLM 可能产生超出事实或业务规范的信息。SOP 可以约束动作路径,但不能保证自然语言回复中的每个业务细节都准确。涉及金融、医疗、法律等高风险场景时,知识库校验、工具查询和人工兜底仍然必要。

第三类风险是运行成本。MCTS 的宽度、深度和 roll-out 次数越大,越可能找到好策略,但响应延迟和 token 成本也越高。论文实验中 M=3M=3L=8L=8N=3N=3w=1w=1,这是一个可控预算;实际部署时可以根据任务重要性动态调整,例如普通咨询用浅搜索,高价值交易或投诉处理用更深搜索。

伦理上,论文强调方法不应强迫智能体达成指定目标,也不应强迫用户接受业务结果。这个提醒很必要,因为“可控”和“说服”在业务对话中容易越界。SOP 应该用于保证流程合规、信息准确和用户体验,而不是用来操纵用户。面向真实业务时,需要明确告知、隐私保护、拒绝权和人工申诉通道。

对工程复用来说,可以先不完整复刻 ChatSOP,而是按三个层级迁移。第一层,把任务画像、用户画像、动作集合、用户状态和成功标志结构化;第二层,把 SOP 表示成邻接表,并记录每次对话走过的状态动作路径;第三层,再引入搜索或微调,用真实评测反馈优化动作选择。只要前两层做好,后续无论接 MCTS、规则系统还是监督模型,都有了可审计的中间结构。

最后,ChatSOP 给 agent 研究的启发是:很多“LLM 不可控”的问题,不一定只能靠更强模型解决,也可以靠更清晰的外部结构 + 搜索反馈解决。SOP 图负责表达人类业务先验,MCTS 负责把先验用于多步规划,LLM 负责语言理解和生成。三者分工清楚时,对话智能体才更接近可部署的业务系统。

如果要在自己的 agent 项目中复用这篇论文,可以从一个小任务开始。先列出成功条件,例如“用户明确同意激活”“预约时间和地点确认完成”“售后工单创建成功”。再列出必要动作和可能用户状态,把它们连成最小 SOP 图。然后收集几十段真实或模拟对话,用人工检查每轮动作是否符合 SOP。最后再决定是否需要 MCTS。如果简单规则已经足够,就不必引入搜索;如果用户反应复杂、流程分支多、主动动作影响成功率,再加入 SGM。

复用时还应保留失败日志。每当系统选择动作失败,应记录当前任务画像、用户画像、历史对话、预测用户状态、候选动作、SOP 可达节点、搜索奖励和最终回复。这样的日志能帮助团队判断失败来自哪里:是状态识别错、SOP 缺边、奖励函数偏差,还是回复生成没有忠实执行动作。ChatSOP 的结构化设计天然适合这种诊断。

在评测体系上,也不要只看最终成交率或用户满意度。ChatSOP 的指标拆分给了一个更细的诊断模板:先看每轮动作是否正确,再看可控动作是否符合 SOP,再看主动动作是否真的推动目标,然后看整段对话是否成功。这样做可以避免一个常见误判:系统最终成功了,但中间其实多次违反流程;或者系统没有成功,但每一步都合规,只是用户真实意愿不接受。前者需要修可控性,后者不应被简单判为模型失败。

主动性尤其需要单独评估。任务型对话如果只追求 SOP 合规,很容易变成僵硬的流程机器人;如果只追求主动推进,又可能变成过度说服。论文把主动动作和可控动作分开,是因为二者对应不同风险。可控动作的错误通常是流程违规,主动动作的错误通常是目标过度、上下文不合适或用户体验下降。实际系统中可以为主动动作设置更严格的触发条件,例如用户表达疑问时答疑,用户犹豫时解释利益和风险,用户明确拒绝时礼貌结束,而不是无限尝试说服。

SOP 图的粒度也需要设计。节点太粗,比如只有“介绍业务”和“结束”,无法约束关键步骤;节点太细,比如把每一句话都变成节点,会让图复杂到难以维护。论文的做法是把节点定义为业务动作和用户状态,而不是自然语言话术。这个粒度比较适合复用:动作足够抽象,可以让 LLM 灵活表达;状态又足够具体,可以支撑流程判断。

还有一个容易忽略的边界是跨任务泛化。论文通过按任务级别划分训练、验证和测试来避免任务重叠,这比按对话随机划分更严格。原因是如果同一任务的不同对话同时出现在训练和测试中,模型可能只是在记住某个业务流程,而不是真正学会从任务定义预测 SOP。实际业务评估也应采用类似方式:用新业务、新流程或新产品测试模型,而不是只用同一流程的换皮对话。

对安全和合规场景,ChatSOP 还可以和权限系统结合。某些动作可以被标记为高风险动作,例如收集敏感信息、承诺费用、确认交易、修改账户状态。MCTS 可以提出这些动作,但执行前必须通过规则或人工审批。这样,搜索算法提供候选,合规系统决定是否允许执行,LLM 负责把获批动作表达给用户。这个分层能减少 agent 自主性带来的风险。

从产品体验看,SOP 也不应暴露成生硬流程。用户不关心系统内部节点叫 Agent.VerifyIdentity,只关心对话是否自然、是否尊重自己、是否解决问题。因此最终回复生成仍然很重要。ChatSOP 的动作规划只决定“现在该做什么”,不决定“必须怎么说”。好的实现应当在动作层严格,在话术层灵活:同一个核验身份动作,可以根据用户语气、历史关系和业务场景生成不同表达。

还有一个实践细节是状态更新频率。ChatSOP 每轮都要根据用户话语更新用户状态,再据此规划下一动作。如果用户一句话里同时包含多个信号,例如既确认身份又提出疑问,系统需要决定当前主状态是什么,或者允许一个复合状态进入搜索。论文的数据结构以单个用户状态为主,适合清晰流程;复杂业务中可以扩展为多标签状态,或者把主要状态和辅助意图分开记录。这样既能保持 SOP 主干稳定,也能处理用户临时提问。

多轮对话还会遇到状态回退。用户可能先同意,后面又反悔;可能先拒绝提供地址,经过解释后又愿意继续;也可能在中途切换到另一个任务。严格有向 SOP 图如果只允许向前走,就不一定能覆盖这些情况。工程实现可以在 SOP 中显式加入回退边、异常边和转人工边,也可以让 MCTS 在主动动作中选择澄清、确认和重设状态。这样系统既不破坏业务主流程,又能处理真实用户的非线性行为。

论文没有把响应内容评价作为主线指标,但真实部署中仍然要关注。一个动作选对了,回复也可能失败,比如语气过强、解释不清、遗漏必要免责声明、暴露隐私信息。比较稳妥的做法是把动作规划和回复审查分开:先由 SGM 选动作,再由回复生成模块写话术,最后用合规检查、知识检查和风格检查过滤。这样可以避免“动作正确但话术违规”的隐患。

如果任务非常长,完整 MCTS 也可能面临树膨胀。可以采用分段规划:先规划当前阶段目标,例如完成身份核验;阶段完成后再切到下一个局部目标,例如介绍活动或设置密码。每个阶段都有自己的局部 SOP 子图和终止条件。这样的层级化搜索能降低分支数量,也更符合企业流程中“阶段门”的管理方式。

ChatSOP 的另一个启发是把评测数据设计成训练数据。人工评测中标出来的可控错误、主动错误、知识错误和连贯性错误,都可以反过来成为奖励模型或监督微调样本。比如某次对话中模型在用户明确拒绝后继续说服,这不仅是一个失败案例,也是一条负样本边界:在该用户状态下,某些动作应被降权或禁止。把这些失败案例系统化收集,能让可控对话从一次性论文实验变成持续优化过程。

对于多业务团队,SOP 图还可以成为产品、法务、运营和算法之间的共同语言。产品定义用户路径,法务确认哪些节点必须出现,运营维护话术和异常处理,算法负责状态识别和动作选择。相比一段难以审计的长提示词,图结构更容易开会讨论、版本对比和责任划分。

论文也提醒我们,LLM agent 的“自主性”不应被理解为完全自由决策。更可靠的自主性,是在明确目标、明确边界、明确反馈的环境里做局部选择。ChatSOP 让 LLM 在 SOP 约束内选择动作,并通过搜索评估未来路径,这比让模型凭一句系统提示自行判断要稳得多。

如果把这篇论文放到更大的 agent 架构视角下,它其实是在给 planner 模块加外部制度。很多 agent 系统有工具、记忆和执行器,却缺少一套能表达业务规范的规划约束。SOP 图正好扮演这个角色:它不是知识库,也不是工具 API,而是告诉 agent 哪些动作顺序是允许的、哪些动作必须被避免。

因此,ChatSOP 最适合那些目标明确、流程可写、错误代价较高、但用户反应又有一定多样性的场景。如果任务完全开放,SOP 会过度约束;如果任务完全固定,传统状态机可能更便宜。它的优势区间,是规则系统太硬、纯 LLM 又太松的中间地带。

阅读这篇论文时,也可以把 SOP 看成一种“任务契约”。用户画像、任务画像、动作集合和状态集合定义了契约的边界,MCTS 在契约内寻找最优路径,人工评测检查契约是否被遵守。这个视角能帮助我们避免把可控性误解成单纯的提示词技巧。

它最终强调的是一种朴素但常被忽略的工程原则:越是让模型自主行动,越要把目标、边界、状态和反馈显式化。ChatSOP 的价值就在于把这些东西都放到了可观察的中间层。

这也是它对后续可控 agent 系统最直接、最值得落地验证和持续迭代改进优化的重要启发。

如果要继续推进这条研究线,一个自然方向是把 SOP 学习和在线反馈闭环打通。当前论文中,SOP 主要来自离线预测和人工标注;在线 MCTS 使用这个 SOP 做规划。未来可以把真实对话中的成功和失败反馈回 SOP 图,例如某条边经常导致失败,就降低其优先级或触发人工复核;某个主动动作在某类用户状态下效果好,就把它加入局部候选策略。这样,SOP 就不只是静态业务流程,而是可持续改进的流程知识库。

从研究角度看,ChatSOP 也留下了几个后续问题。第一,SOP 图能否自动从企业文档、客服手册或历史工单中抽取,而不是依赖人工定义动作和状态。第二,奖励函数能否引入真实用户反馈,而不是只依赖 LLM 判断。第三,搜索能否和长期记忆结合,让系统记住某类用户在某类业务中的常见反应。第四,如何在可控流程和用户自主之间保持平衡,避免“为了达成目标而过度说服”。这些问题都直接关系到 LLM agent 在真实业务中的可靠性。