航班票务退款专员 - 题解
一、题目分析
本题要求根据国内航班退票规定,计算旅客退票时的退款金额和手续费。输出3个字段:refund_amount(整数)、fee_charged(整数)、policy_applied(策略列表)。涉及5条规则,核心难点在于规则间的优先级关系和舱位折扣。
二、难点分析
- 三层优先级嵌套:T.5误机 > T.4病退 > T.3特价 > T.1+T.2常规计算病退(T.4)可以覆盖特价限制(T.3),但误机(T.5)可以覆盖病退。LLM容易在"有医疗证明+已误机"场景下错误地全额退款。
- 时间区间边界:"7天含168小时":恰好168小时属于哪个区间?题目说">168小时"是5%,"≤168小时"是20%,恰好7天=168小时应收20%。这个边界设计专门针对LLM的"含"与"不含"理解偏差。
- 舱位代码的隐蔽性:Class C看起来像经济舱代码,实际是公务舱,手续费需打5折。LLM容易把C归类为经济舱。
- policy_applied的组合逻辑:病退+特价:需要列["T.3","T.4"](先触发T.3再被T.4覆盖)常规计算:必须同时列["T.1","T.2"]模型容易漏列或多列规则。
三、Prompt设计思路
- 命中即停的判定流水线:按优先级从高到低排列4个Step,每步判定后若命中则直接给出结果并"结束"。这种设计避免了模型在命中高优先级规则后继续执行低优先级计算。
- 每步给出完整输出模板:每个判定分支不仅写了条件,还直接写出对应的refund_amount、fee_charged、policy_applied值,模型只需匹配条件然后抄写结果。
- 时间判断用小时数量化:把"提前7天"转化为"168小时"进行比较,避免模型在"天"的边界上犯糊涂。并且给出多个时间点的判定示例(10天=240h, 7天=168h, 3天=72h等)。
- 舱位C的显式提醒:在Step4c处特别标注"Class C是公务舱,手续费要打5折!"这个提醒是针对模型常见错误的防御性设计。
- 关键示例精选:提供公务舱C+提前8天、经济舱Y+提前10天、经济舱B+提前12小时三个示例,分别覆盖舱位折扣、长时间区间、短时间区间。
四、关键技巧
- 优先级瀑布流:将互斥规则设计为瀑布式判定(命中即停),比让模型自行判断"哪条规则优先"更可靠。
- 量化时间避歧义:将天数转换为小时数进行比较,并用">"和"<="明确边界归属,消除自然语言的模糊性。
- 异常舱位显式标注:对违反直觉的分类(C=公务舱)做特殊提醒,比依赖模型的先验知识更稳定。
- thinking标签分离推理:要求先在<thinking>中判定,再输出JSON,避免模型跳过推理直接猜答案。
- 结果模板化:每个分支都给出完整的输出值,减少模型"知道走哪个分支但算错具体值"的情况。



京公网安备 11010502036488号