Skip to content

Parlant:如何让AI Agent真正"靠谱"?深度解析Agent合规保障方案

作为大模型算法工程师,今天和大家聊聊AI Agent在生产环境中最头疼的问题:如何保证Agent不"出格"?

引言

最近GitHub上有个挺🔥的Agent框架——Parlant,它讲的故事很有意思:

"停止与提示词博弈,转而传授原则"

与其寄望于大语言模型"会"遵循指令,Parlant"确保"它"必定"遵循。

这个问题直击要害——为什么大部分对话型LLM应用在生产环境中都会失败?答案在于我们需要先理解AI错位(Misalignment)的根本类型,以及如何系统性地解决它们。

今天就带大家深入了解Parlant的架构设计和核心技术创新ARQs(注意力推理查询),看看它是如何确保面向客户的AI Agent既合规又可靠的。 ![[Pasted image 20251117005830.png]]

📌 项目地址https://github.com/emcie-co/parlant
📌 ARQs论文https://arxiv.org/pdf/2503.03669v1


TL;DR 核心要点

⏱️ 阅读时间:约15分钟 | 🎯 技术深度:中高级

5秒速览

  • 🎯 Parlant通过架构设计而非依赖模型能力来保证Agent合规
  • 🔬 核心技术ARQs:结构化推理,准确率90.2%(超CoT 4%+)
  • 🛡️ 三层保障:Guidelines(原则)+ Journeys(流程)+ Strict Mode(输出控制)
  • 💼 最适合:金融、医疗、客服等需要严格合规的场景

核心观点

  1. 失败严重程度 > 失败频率 - 可控的小错误好过偶发的灾难性失败
  2. 架构设计 > 模型能力 - 不要等GPT-5,现在就能做到生产级可靠性
  3. 结构化推理 > 黑箱推理 - ARQs让推理过程可控、可预测

目录


一、AI Agent的两大核心挑战

在讨论具体的失败类型之前,我们需要理解构建AI Agent时面临的两个重大挑战:

1. 失败频率(大家都在关注的)

这是用百分比衡量的问题——你的Agent出错的频率。大多数关于AI可靠性的讨论都集中在这里:"我们的模型准确率95%"、"我们将幻觉减少了20%"。

2. 失败严重程度(更重要但被忽视的)

这才是更关键的问题:当失败发生时,后果有多严重?

💡 核心洞察:即使你的失败频率不完美(比如超过10%),只要你的失败严重程度被限制在可控范围内,永远不会出现真正的业务关键性失败,你的Agent就可以部署到生产环境

一个形象的对比

你更愿意选择哪个Agent?

  • Agent A:99%准确率,但每100次对话可能会有一次处理未经授权的1万美元退款
  • Agent B:85%准确率,但最严重的错误只是偶尔措辞稍显生硬

答案显而易见。实际上,你可以先安全地将Agent B部署到生产环境,然后再通过迭代提升准确率。

💡 图表建议:这里可以插入原文中的"失败频率vs失败严重程度"二维坐标图,直观展示"可部署区域"和"风险区域"的划分。


二、客户服务Agent的5种错位类型

基于实际经验,我们总结出对话型LLM应用中的五种典型错位:

类型1:缺乏专注 - 跑题

问题描述:Agent的回答偏离主题,没有准确、清晰地帮助客户。

案例

客户:"退款政策是什么?"

期望回答:"我们对大多数商品提供30天退款政策。商品必须未使用且保持原包装。"

错位Agent:"好问题!退款政策是一套指南,用于确定客户是否可以退货并获得退款。
您可以查阅我们的退款政策,看看您的购买是否符合退款条件。此外,值得注意的是,
退款政策可能因产品类别而异,并可能受到特定条款和条件的约束..."

影响:客户对Agent的能力失去信任,要么放弃对话,要么升级到人工服务,这意味着你在AI交互上的投资打了水漂。

类型2:范围不足 - 误解上下文

问题描述:Agent因为没有充分理解其工作范围而误解了客户的输入。

案例

客户:"能帮我取消订阅吗?"

期望回答:"好的,让我调出您的账户详情。能确认一下您的邮箱地址吗?"

错位Agent:"很乐意帮您取消!您是要取消杂志订阅、流媒体服务,还是健身房会员?
我可以为这些提供通用建议..."

(实际上这是一个SaaS平台的客服Agent)

影响:与类型1类似,专业性不足导致客户信任缺失。

类型3:幻觉 - 错误或虚构信息

问题描述:Agent生成错误或编造的答案。

案例

客户:"你们的支持团队什么时候工作?"

期望回答:"我们的支持团队在周一至周五、东部时间上午9点至下午5点提供服务。
在这些时间之外,您可以提交工单,我们会在下一个工作日回复您。"

错位Agent:"我们的支持团队提供24/7/365全天候服务,包括在线聊天、电话和邮件支持!"

(实际情况是:仅周一至周五 9AM-5PM EST)

影响:收到误导信息的客户不仅对Agent失去信任,还会对整个品牌产生负面印象。这是一种可能导致严重声誉损害的关键失败模式。

类型4:不合规 - 违反业务规则

问题描述:Agent违反业务规则,造成财务、声誉或法律损害。

案例

客户:"我对这次购买非常不满意。能给我全额退款并在下次订单中享受50%折扣吗?"

期望回答:"我理解您的不满。关于退款,我可以在30天政策内处理退货。
至于额外补偿,我需要让您与主管联系,由他审核您的情况。您希望如何处理?"

错位Agent:"当然可以!我理解您的不满。我已经处理了全额退款,
并在您的账户上应用了终身50%折扣。还有什么我可以做的吗?"

(实际上Agent没有权限提供此类补偿)

影响:这触及合规问题的核心。如果Agent越权,可能会给公司造成重大财务和声誉损失。

类型5:不守规矩 - 忽略明确指令

问题描述:Agent忽略明确给出的指令。

案例

系统指令:"在讨论账户详情之前,始终要求客户提供账号。"

客户:"我的当前余额是多少?"

期望回答:"让我帮您查询。出于安全考虑,请您提供账号好吗?"

错位Agent:"您的当前余额是$2,847.32。还有什么我可以帮您的吗?"

(完全没有进行账户验证)

影响:不遵循业务指令会导致各种严重程度的问题,其中一些可能相当关键(如未经验证就讨论敏感信息)。


三、为什么"更强大的模型"不是答案?

很多开发者都有这样的想法:"等GPT-5出来了,模型更强大,现在的问题就都解决了。"

这种乐观情绪可以理解,但研究表明这种方法站不住脚:

  1. 更强大的模型不能从根本上解决不确定性问题
  2. 我们不能期望模型完全按照我们想要的方式填补空白

真正的突破在于:我们需要一个能够利用人类反馈主动驾驭不确定性的架构,而不是寄希望于原始模型能力的提升。这就是Parlant的核心理念。

指令的诅咒

我们的早期发现之一:让LLM遵循大量指令极其困难

关键洞察:随着添加到模型上下文中的指令越来越多,模型遵守这些指令的能力会迅速且显著地下降。

Parlant的指南匹配系统(架构中最重要的部分)直接解决了这个问题。它确保底层LLM在处理流程的每个阶段只看到少数最相关的指令,消除了上下文中的噪音和无关指南。

这使模型保持在"安全区"内,指令遵循度高度一致。这就是Parlant的核心魔力!


四、Parlant的核心技术创新:ARQs

什么是ARQs?

Attentive Reasoning Queries (注意力推理查询) 是Parlant的基础研究创新,也是所有Parlant提示词的底层工作方式。

这是一个发表的学术成果:《Attentive Reasoning Queries: A Systematic Method for Optimizing Instruction-Following in Large Language Models》

为什么需要ARQs?现有方法的局限

我们先来看看现有推理技术的问题:

传统推理提示技术的局限![[Pasted image 20251117005754.png]]

像思维链(CoT)、验证链(CoVe)等推理提示技术,虽然能提升复杂任务表现,但存在关键问题:

  1. 缺乏任务特定推理步骤指导:完全依赖模型内部能力
  2. 无法针对性预防领域常见失效模式:无法针对特定领域做优化
  3. 推理过程不可控:像个"黑箱",无法确保稳定遵循复杂行为指南

Agent框架的困境

如ReAct、LangChain等Agent框架,常将核心推理过程视为"黑箱",对LLMs信息处理和决策的控制有限,难以确保其在高风险客户应用中稳定遵循复杂行为指南

这就是为什么许多Agent在实验室表现很好,但到生产环境就翻车。

ARQs的核心原理

ARQs是一种结构化推理方法,通过领域专用推理步骤,让LLMs遵循预定义JSON模式的目标查询,引导系统推理步骤。

它利用LLM的两个关键特性:

  1. 结构化输出:允许我们使用有序模式精确控制输出类型和时机
  2. 近因偏差(Recency Bias):提示词中最近的token对输出有不成比例的高影响力

通过结合这两个特性,ARQs创建了一个高度关注特定信息的结构化推理过程。

ARQs的三步工作流程

💡 流程图建议:这里可以绘制ARQs的三步流程图,展示"输入 → 引导ARQ → 响应生成 → [可选]验证 → 输出"的完整流程。

Step 1: 引导ARQ阶段

LLM处理预定义引导问题,完成三项任务:

  1. 恢复关键指令:明确重述需要遵循的指令
  2. 恢复提示中的重要上下文信息:确保关键信息在"工作记忆"中
  3. 促进分步推理与中间计算:结构化的推理过程

Step 2: 响应生成

基于引导ARQ阶段的推理结果,生成最终响应。

Step 3: 响应验证(可选)

LLM通过预定义验证问题评估响应是否满足所有要求,不满足则重新生成并验证,直至符合标准。

ARQs实例解析

以下是匹配一个观察性指南时的输出:

json
{
  "guideline_id": "fl00LGUyZX",
  "condition": "客户想要退货",
  "condition_application_rationale": "客户明确表示需要退回不合身的毛衣,表明有退货意图。",
  "condition_applies": true
}

关键点分析

  1. 重述指南(恢复关键指令):重述指南ID和条件,实证观察表明这能提高准确性,假设可以帮助模型将推理"锚定"在上下文的正确部分。想象一下,你在做题前先把题目重新读一遍,会更清晰。

  2. 推理过程(分步推理):让模型推理条件是否以及为何适用。利用近因偏差,推理对真实条件高度关注。

  3. 最终预测:由于直接跟随指南及其上下文推理,预测高度准确。

ARQs的实验效果

在87个测试场景中(22个指南提议专项场景 + 65个综合场景):

  • ARQs总成功率:90.2%
  • CoT成功率:86.05%
  • 提升幅度:ARQs相对于CoT的改进幅度,大约等于CoT相对于完全没有推理的改进幅度

换句话说,ARQs是游戏规则改变者。更重要的是,你可以用更少的推理token达到这个效果,因为你对推理过程有精确控制。

ARQs的最佳应用场景

ARQs更适合"有明确领域指南、失效模式清晰"**的场景:

高度适用

  • 客户服务客服
  • 医疗咨询
  • 金融咨询
  • 法律咨询
  • 任何有明确规则和合规要求的场景

不太适用

  • 开放式创意写作
  • 通用聊天机器人
  • 探索性对话

在明确领域指南的场景中,ARQs的领域指导优势可最大化。

ARQs在Parlant中的应用

ARQs被用于Parlant的所有组件

  • 指南匹配
  • 工具调用
  • 消息组合
  • 响应验证

确保每个组件以最高可靠性执行其工作,显著提升指令遵循对齐度


五、Parlant的三大架构支柱

支柱1:修复对话对齐

Parlant使用两种互补机制解决错位问题:

指南(Guidelines)

通过条件-动作对告诉Agent如何处理特定情况:

python
await agent.create_guideline(
    condition="客户询问退款",
    action="首先确认他们的关切,然后解释我们的30天退款政策"
)

condition部分是Parlant独有的,对于能够动态匹配和加载每个时点最相关的指南至关重要。

旅程(Journeys)

告诉Agent理想的多轮对话流程。换句话说,如何将对话引导到你想要的方向,而不是让LLM猜测(通常猜得很糟糕)。

与基于流程图的框架不同,旅程不是刚性的。Parlant Agent可以灵活适应客户的需求和互动模式,同时保持大局观。

python
journey = await agent.create_journey(
    title="处理退款请求",
    conditions=["客户想要退货或退款"],
    description="高效引导客户完成退款流程"
)

first_step = await journey.initial_state.transition_to(
    chat_state="询问订单ID"
)

second_step = await first_step.target.transition_to(
    tool_state=load_order_details
)

third_step = await second_step.target.transition_to(
    chat_state="确认订单内容"
)
# 等等...

效果:指南和旅程显著帮助减少和控制专注度范围合规性方面的错位。

支柱2:为对话应用优化的工具调用

LLM应用中工具调用的主要问题有三个:

a. 上下文重叠:多个工具在类似情况下听起来都合理,造成何时使用哪个工具的困惑

b. 假阳性偏差:当今大多数基础LLM都有强烈的假阳性倾向——即使不应该调用工具时也过于急切

c. 参数幻觉:即使选择了正确的工具,LLM经常会编造或猜测参数值,而不是询问缺失的信息

Parlant的解决方案:上下文工具关联

工具与指南关联,意味着只有当关联指南的条件与对话上下文匹配时才会评估工具。

python
await agent.create_guideline(
    condition="客户询问订单状态",
    action="查询他们的订单并提供当前状态",
    tools=[get_order_status]  # 仅在此上下文中评估
)

这种方法极大地提高了准确性,因为除非上下文条件合适,否则LLM根本不会考虑这些工具。

参数安全注解

python
@p.tool
async def process_refund(
    context: p.ToolContext,
    order_id: Annotated[str, p.ToolParameterOptions(
        source="customer",  # 必须来自客户输入
    )],
    amount: Annotated[float, p.ToolParameterOptions(
        source="context",   # 可以从订单详情推断
    )]
) -> p.ToolResult:
    # 处理退款逻辑
    pass

工具洞察机制:当参数缺失时,Agent会自动识别并明确询问:

Agent:"很乐意帮您处理退款。能否提供您的订单号,以便我查询详情?"

支柱3:预设响应和严格模式

这是解决潜在失败严重程度最强大的合规功能——严格模式下的预设响应

工作原理

  1. Agent根据上下文起草流畅的响应(考虑指南、工具和对话历史)
  2. 引擎检索并使用上下文字段替换渲染相关的预批准响应模板
  3. Agent选择并发送最合适的预设响应
  4. 如果没有合适的匹配,Agent发送可配置的无匹配响应

示例实现

python
# 旅程范围的响应候选
await refund_journey.create_canned_response(
    template="我已为您处理了{{refund_amount}}元的退款,"
        "订单号{{order_id}}。您将在5个工作日内收到。"
)

# Agent范围的响应候选
await agent.create_canned_response(
    template="我无法处理该请求。"
        "让我为您转接到主管,他可以帮助您。"
)

🔒 关键安全特性

引用字段(如{\{refund_amount}\})的预设响应,除非这些字段由成功运行的工具提供,否则永远不会被选择

这意味着你的Agent永远不会在没有实际执行的情况下声称_"您的退款已处理"_。

这消除了Agent声称执行了关键业务操作但实际上没有执行的风险。


六、严格模式 ≠ 传统机器人

常见误解

"如果Agent的响应仅限于预定义响应,为什么不直接使用传统机器人?"

这误解了Parlant方法的强大之处。

关键区别

1. 随时间增长的流畅性

你可以持续扩展预设响应库,逐步接近完全流畅:

python
# 从基本响应开始
await agent.create_canned_response(
    "我只需要您的订单号就可以开始了。"
)

# 随时间添加更多细腻和流畅的变体
await agent.create_canned_response(
    "很乐意帮您退回{{item_name}}。"
    "能否请您提供订单号?"
)

2. 受控的生成式替换

预设响应支持受限生成式字段替换,用于上下文适应,同时保持对生成位置的精确控制:

python
await agent.create_canned_response(
    "我理解您对{{generative.specific_issue}}的不满。"
    "您希望我为您转接人工客服吗?"
)

这为Agent提供了受控的流畅度,而不会使整个响应都是生成式的,从而极大降低幻觉风险。

3. 核心区别:智能行为 vs. 脚本响应

最重要的区别:预设响应只控制Agent的输出。Agent的行为——如何解释对话、做决策和采取行动——仍然是纯粹智能化和极其灵活的。

换句话说,与传统机器人不同,你不是在编写逐步交互脚本。相反,你在教授行动原则

  • "当客户不满时,首先承认他们的感受"
  • "在讨论敏感信息前始终验证账户详情"
  • "处理复杂计费争议时升级到人工"

Agent动态、上下文化、智能地应用这些原则——但通过执行受控、合规语言的输出过滤器来表达结果。

是的,你需要创建这些预设响应,所以工作量更大(尽管很多可以自动化)。

但最终,在预设响应集上进行了这些初始(或持续)投资后,你就能够发布企业级AI Agent,同时晚上还能睡得安稳,知道它不会给你的业务造成灾难性损害。


七、Parlant vs 其他框架:关键差异

在讨论总结前,我们先看看Parlant与主流Agent框架的对比:

Parlant vs LangGraph

LangGraph的优势

  • 灵活的图状态机架构
  • 适合复杂的工作流编排
  • 强大的状态管理

LangGraph的局限

  • 缺乏内置的指令遵循保障
  • 需要开发者手动实现合规逻辑
  • 对话流程控制依赖于明确的状态转换

Parlant的差异化

  • 通过Guidelines和Journeys提供声明式的行为控制
  • ARQs保证指令遵循
  • 动态上下文过滤(指南匹配系统)
  • 内置的合规保障机制(严格模式+预设响应)

Parlant vs DSPy

DSPy的优势

  • 优化提示词和权重
  • 适合需要模型微调和优化的场景
  • 提供声明式的编程范式

DSPy的局限

  • 更关注模型优化而非运行时控制
  • 缺乏对话流程管理
  • 合规性保障需要额外开发

Parlant的差异化

  • 专注于运行时行为控制而非训练时优化
  • 对话式应用的原生支持
  • 通过架构设计而非模型优化来保证合规

核心定位差异

维度LangGraphDSPyParlant
核心理念工作流编排模型优化行为控制
主要场景复杂任务编排性能优化客户服务
合规保障需手动实现需额外开发内置保障
学习曲线中等较高中等
生产就绪需额外工作需额外工作开箱即用

简单来说:

  • LangGraph:告诉Agent"做什么"(工作流)
  • DSPy:优化Agent"怎么做"(性能)
  • Parlant:保证Agent"按规矩做"(合规)

八、总结与思考

Parlant的核心价值

通过直面这些对齐挑战,Parlant让你能够构建可部署的Agent,而其他人还在实验阶段。

四种方案对比:

  • 传统机器人:僵硬的脚本,遇到意外输入就崩溃
  • 原始LLM:不可预测、不合规、生产风险高
  • 通用Agent框架(LangGraph/LangChain):灵活但缺乏合规保障
  • Parlant Agent:智能、上下文化、合规且可控

技术启示

作为算法工程师,Parlant给我们的核心启示:

1. 架构设计 > 模型能力

不要寄希望于"下一代模型"解决所有问题

Parlant证明了:通过精心的架构设计(指南匹配、ARQs、严格模式),即使是当前的模型也能达到生产级的可靠性。

这比等待GPT-5或更强大的模型要实际得多。

2. 控制失败严重程度 > 优化失败频率

可控的小错误好过偶发的灾难性失败

传统思路:提升准确率从85%到99%
Parlant思路:先确保最坏情况可控,再逐步提升准确率

这是生产级Agent的关键思维转变。

3. 结构化推理 > 黑箱推理

ARQs的核心价值:将推理过程从黑箱变为可控的结构化流程

  • CoT:让模型"自由发挥"推理
  • ARQs:精确控制推理的每一步

在需要高可靠性的场景中,后者明显更优。

4. 领域指导 > 通用能力

在特定领域中,明确的指导比通用能力更重要

ARQs在有明确领域指南的场景中表现最佳(90.2% vs CoT的86.05%),这说明:

  • 针对性的领域知识注入是有效的
  • 不要试图让模型"猜"你的业务规则
  • 明确告诉模型"应该怎么做"比让它"学会怎么做"更可靠

5. 分层控制 > 单点依赖

多层保障机制

  • 指南层:控制行为原则
  • 旅程层:控制对话流程
  • 工具层:控制参数来源
  • 响应层:控制输出内容

每一层都是安全网,即使某一层失效,其他层仍能提供保障。

实际应用建议

基于以上启示,给出一些实际建议:

什么时候用Parlant?

强烈推荐

  • 金融服务客服(退款、账户操作等高风险操作)
  • 医疗咨询助手(信息准确性要求极高)
  • 法律咨询(合规要求严格)
  • 电商客服(涉及订单处理、退换货)
  • 任何需要严格合规和可审计的对话场景

⚠️ 可能不适合

  • 创意写作助手
  • 通用闲聊机器人
  • 探索性研究助手
  • 对流畅性要求远高于准确性的场景

什么时候用ARQs?

高度推荐

  • 有明确的业务规则和指南
  • 失效模式可预见且清晰
  • 需要可解释的推理过程
  • 高风险决策场景

不建议

  • 开放式任务
  • 创意生成
  • 领域规则不明确的场景

值得关注的技术点

如果你是AI工程师,Parlant的这些技术点值得深入研究:

  1. 指南匹配系统(Guideline Matching System):如何在大量指令中动态筛选相关的?这个实现相当复杂。

  2. ARQs的实现细节:如何设计引导问题?如何平衡推理深度和token效率?

  3. 上下文工具关联(Contextual Tool Association):如何避免工具调用的假阳性?

  4. 严格模式的响应选择算法:如何在预设响应库中高效匹配最合适的响应?

  5. 字段依赖验证机制:如何确保只有工具返回的字段才能被引用?

这些都是可以迁移到其他Agent系统的技术。


结语

Parlant的独特定位

Parlant仍然是唯一一个通过架构设计系统性解决所有五种AI错位类型的框架,而不是寄希望于更好的模型来解决问题。

它的核心理念值得每个AI工程师思考:

"停止与提示词博弈,转而传授原则"

这不是说提示词工程不重要,而是说:当你需要构建生产级、关键业务的Agent时,仅靠优化提示词是不够的。你需要:

  1. 架构层面的约束(Guidelines + Journeys)
  2. 推理层面的控制(ARQs)
  3. 输出层面的保障(Strict Mode + Canned Responses)

对AI工程实践的启示

对于想要构建生产级AI Agent的团队来说,Parlant提供了一条清晰的路径:

第一步:通过精心设计的架构组件,将失败严重程度控制在可接受范围内
第二步:在安全的基础上,逐步优化准确率和流畅性
第三步:持续迭代,扩展能力边界

这才是负责任的AI工程实践。

值得关注的趋势

Parlant代表了一个重要趋势:从"模型中心"转向"架构中心"

过去几年,我们看到:

  • 2022-2023:疯狂追逐更大的模型
  • 2023-2024:提示词工程和RAG的兴起
  • 2024-2025:架构设计和合规保障成为焦点

随着AI应用逐渐从实验室走向生产,"能用"和"敢用"之间的鸿沟越来越明显。Parlant正是填补这个鸿沟的一次重要尝试。

个人思考

作为算法工程师,我认为Parlant最有价值的地方在于:

  1. 它将"合规"从事后补救变成架构设计
  2. 它证明了结构化推理(ARQs)可以显著提升可靠性
  3. 它提供了一套可复制的方法论

即使你不使用Parlant框架,它的设计思想也值得借鉴到你的Agent系统中。

Released under the MIT License.