彻底消除幻觉,摆脱 AI 指令越多越不听话的窘境

0 阅读6分钟

刚开始用系统提示词(System Prompt)定义 Agent 行为,效果还不错。但随着业务复杂度增加,你往提示词里加的指令越来越多——语气要求、政策约束、边界情况处理、品牌调性...

然后发现,Agent 越来越不听使唤了。它开始忽略某些指令,或者在不该发挥的时候自由发挥。

你试过用路由图(Routed Graphs)来解决?把对话流程画成图,每个节点定义不同场景的处理逻辑。但路由越多,面对真实世界多样化、微妙、非线性的交互时,系统越脆弱。

这就是 AI 的核心困境:提示词过载 vs 路由脆弱

今天要介绍的 Parlant,就是专门来解决这个问题的。

GitHub:

github.com/emcie-co/pa…

开源替代方案

Parlant 的定位很明确:Ada、Decagon、Sierra 的开源替代方案

这几个都是企业级客服 AI 平台的标杆,但都是商业产品。Parlant 要做的是把核心能力开源出来,让开发者能构建一致、合规、符合品牌调性的客服 Agent。

它面向的场景:

  • B2C 客服 —— 面向消费者的业务交互
  • 敏感 B2B 交互 —— 需要严格合规的企业级对话

上下文工程:在正确的时间给正确的上下文

Parlant 的核心思路是上下文工程(Context Engineering),针对对话控制优化。

传统做法是把所有指令、知识、工具都塞进系统提示词,然后祈祷 Agent 能正确理解。Parlant 的做法完全不同:

你定义规则、知识、工具一次,引擎实时缩小上下文,只保留与当前对话轮次相关的内容。

什么意思?

假设你有一个航空公司的客服 Agent。有些客户是金融专业人士,用 DTI、摊销这样的术语;有些客户是第一次坐飞机的新手。

传统做法:把两种应对策略都写进提示词,让 Agent 自己判断。

Parlant 做法:

# 只在客户使用金融术语时触发
expert_customer = await agent.create_observation(
    condition="customer uses financial terminology like DTI or amortization",
    tools=[research_deep_answer],
)

# 当观察成立时,总是深度回答
expert_answers = await agent.create_guideline(
    matcher=p.MATCH_ALWAYS,
    action="respond with technical depth",
    dependencies=[expert_customer],
)

# 新手客户用简化回答
beginner_answers = await agent.create_guideline(
    condition="customer seems new to the topic",
    action="simplify and use concrete examples",
)

# 两者都匹配时,新手规则优先
# 专家级工具数据和指令不会进入 Agent 上下文
await beginner_answers.exclude(expert_customer)

关键区别:专家级的工具和指令根本不会进入新手客户的上下文。Agent 不会因为上下文里有太多信息而 confused,它只拿到当前需要的东西。

三大设计目标

Parlant 的每个设计决策都围绕这三个目标:

目标一:对对话体验的最大控制

开发者应该能精确控制 Agent 的行为。在客户-facing 对话中,小细节很重要:

  • 语气是正式还是亲切?
  • 什么时候该主动提供帮助?
  • 遇到边界情况怎么处理?
  • 政策约束如何表达?
  • 品牌声音如何体现?

Parlant 让这些方面易于配置和管理。这种方式增加了一些复杂度,但换来了对真实对话的 tighter 控制。

目标二:对不良行为的最大预防

Parlant 把"不对齐"视为核心设计问题,而不是事后打补丁。

它基于模型准确性和一致性的研究,让 Agent 更难超出预期边界,也更容易检测和纠正当它越界时。

关键区别:不是把护栏 bolt 在输出上(输出后检查),而是将约束和控制点应用到 LLM 使用方式本身(输入前控制)。

目标三:从产品反馈到实现的最快路径

负责 Agent 对话体验的人(可能是产品经理、客服主管)应该能以直观方式塑造其行为,不需要等工程师排期。

Parlant 支持快速反馈循环:

  • 小调整不需要手动重新连接路由图
  • 小优化不需要微调模型
  • 工程师时间只用于深度变更

核心概念

Parlant 用几个核心概念来组织对话控制:

Observations(观察) —— 条件触发的事件。比如"客户使用了金融术语"、"客户表达了不满情绪"。

Guidelines(指南) —— 指令规则。定义在什么条件下采取什么行动。

Journeys(旅程) —— 标准操作流程(SOPs)。复杂的业务流程可以定义成步骤化的旅程。

Retrievers(检索器) —— 领域知识。产品信息、政策文档、FAQ 等。

Glossary(术语表) —— 领域术语。确保 Agent 理解行业黑话。

Variables(变量) —— 记忆。跨对话轮次保持的状态。

这些东西在对话进行时,由上下文匹配引擎(Contextual Matching Engine)动态组合,生成一个聚焦的上下文窗口,然后才送给 LLM 生成回复。

工作流程

Parlant 的工作流程可以用这张图理解:

观察 + 指南 + 旅程 + 检索器 + 术语表 + 变量
                ↓
      上下文匹配引擎
                ↓
         工具调用器
                ↓
      聚焦的上下文窗口
                ↓
           消息生成

关键点是:不是把大段系统提示词和原始对话直接丢给模型,而是先组装一个聚焦的上下文——只匹配与当前对话轮次相关的指令和工具——然后基于这个精简的上下文生成回复。

快速开始

安装:

pip install parlant

5 分钟快速入门:github.com/emcie-co/pa…

适合谁用

做客服 AI 的开发者 —— 如果你在用系统提示词或路由图做客服 Agent,遇到了"指令越多越不听"或"路由越复杂越脆弱"的问题,Parlant 值得一试。

需要开源方案的企业 —— 不想被 Ada、Decagon、Sierra 锁定,想要自主可控的客服 AI 基础设施。

对 Agent 行为控制有高要求的产品 —— 金融、医疗、法律等敏感领域,需要精确控制 Agent 的输出边界。

想快速迭代对话体验的团队 —— 产品经理和客服主管可以直接调整规则,不需要等工程师排期。

写在最后

Parlant 解决的是一个很实际的问题:如何在复杂业务场景下精确控制 AI Agent 的行为

它的思路很聪明——不是让提示词越来越长,而是让上下文越来越精准。通过观察、指南、旅程等概念,把对话控制从"写一大段提示词祈祷 Agent 理解"变成"定义规则让引擎自动匹配"。

而且它的设计很完整,从控制(精确调节 Agent 行为)到预防(内置安全机制)到效率(快速迭代),形成了一个完整的解决方案。

如果你也在做客服 AI,也在为 Agent 的不可控性头疼,Parlant 值得一试。


关注

如果这篇文章对你有帮助,欢迎点赞、收藏、转发。我会持续分享实用的 AI Agent 开发资源和对话系统设计思路,关注我,一起打造更可控的 AI 客服。