旅行场景天然存在价格库存实时波动、成交不可逆、产品迭代快等挑战,对 Agent 的准确性要求极高。
飞猪的实践表明,制约旅行 Agent 能力上限的,并非模型代际的强弱,而是框架与边界的设计。模型幻觉(如捏造房型 ID、沿用失效价格)不会随模型升级自然消失——根本原因在于错误代价的不对等:模型输出成本低,但错误撤回成本极高。
为此,飞猪以"错了能不能撤回"为核心原则,划定模型与工程的边界:
本次分享将围绕循环、边界、上下文、评测四个维度,展开飞猪旅行 Agent 落地过程中的思考与实践。
演讲提纲
1. 场景与判据:不可逆性决定边界在哪里
2. Loop:确定性由代码保证,不由模型自述
3. 职责边界:三件事分别交给谁
- 能算清楚的交给求解器
- 不可逆的动作交给用户
- 呈现方式交给产品
4. Context:模型可见事实,不可见标识
- 模型只接收可读事实
- 标识只在代码侧流转
- 出屏前整批校验
5. 评测:先定位根因,再决定怎么修
实践痛点
- 自主性 vs 确定性:要接住口语化的改单就得给模型空间,要让成交可预测就得收紧;旅行的成交动作不可逆,容错窗口比问答类场景窄
- 边界的精确位置没有现成答案:太靠代码,可枚举的分支越铺越多、对话变僵;太靠模型,一次措辞漂移就可能变成资损。熔断阈值同样缺理论依据,只能经验取值,靠单一事实源保证各处一致
- 表达外置的代价:正文的呈现规范交给模型执行后,一致性不再由代码兜底,只能靠评测发现、prompt 迭代收敛;产品每改一版,模型侧就要重新对齐一次
- Judge 模型自身的校准:分数收进代码只解决了漂移,一旦错在事实层,映射只会把错误精确地传下去;而标注集随业务口径变动就得重做,这部分难以自动化
演讲亮点
- 区别于把边界画在“模型能不能做”上,我们按“错了能不能撤回”划:模型只提议方案,票种组合由求解器算定,创单与支付不注册为工具,酒店房型标识不进模型、卡片由代码用当轮检索结果现拼
- 区别于业界只在模型与代码之间划边界,我们把产品态表达也单列一层:卡片字段与正文的排版口吻由产品定义、运行时注入,卡片由代码渲染,模型只按规范组织正文
- 区别于把打分直接交给 Judge 模型,我们让它只输出事实、分数由代码按规则计算:三层评测分层下钻先定位到出错的那一步,同一批样本可复算
听众收益
- 获得一条可复用的边界判据 按“错了能不能撤回”决定每一步交给谁——查询、筛选、改单提议放开给模型,票种组合交给求解器,创单支付交给用户;决策归模型、执行归代码、表达归产品
- 掌握与框架无关的 Loop 与 Context 做法 终止判据只看行为不问模型、阈值收敛为单一事实源、真实标识不进上下文、跨轮改单用显式作废信号
- 带走一套可复算、能回流的评测方法 三层分层下钻控制 Judge 模型调用量,Judge 模型只出事实、分数由代码算,失败样本按根因归类,回流 prompt 迭代与模型定向优化