
刚开始用系统提示词(System Prompt)定义 Agent 行为,效果还不错。但随着业务复杂度增加,你往提示词里加的指令越来越多——语气要求、政策约束、边界情况处理、品牌调性...
然后发现,Agent 越来越不听使唤了。它开始忽略某些指令,或者在不该发挥的时候自由发挥。
你试过用路由图(Routed Graphs)来解决?把对话流程画成图,每个节点定义不同场景的处理逻辑。但路由越多,面对真实世界多样化、微妙、非线性的交互时,系统越脆弱。
这就是 AI 的核心困境:提示词过载 vs 路由脆弱。
今天要介绍的 Parlant,就是专门来解决这个问题的。
GitHub:
开源替代方案
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 客服。