
你的 AI 旅行助手正在骗你——直到被困异乡,你才会发现
去年,一位女士给我们发来一封邮件,附带一张截图。她用一款热门的 AI 旅行规划工具,为家人预订了一趟哥斯达黎加之旅。这个 AI 推荐了一个名字类似“Tabacon Springs Eco-Lodge”的地方——描述郁郁葱葱,每晚不到 200 美元,照片看起来也很吻合。她为四个人订了机票,租了车,还告诉孩子们要去树屋里看猴子。
那家旅馆根本不存在。
不是“它关门了”或“它在装修”。它字面意义上就不存在。这个 AI 把两三家真实哥斯达黎加度假村的细节混合在一起——用了其中一家的名字、另一家的设施、街那头一家青年旅舍的价位——然后拼凑成一处描述得美轮美奂、却从未建成的房产。预订链接指向一个通用的支付页面,扣了她的信用卡,却什么也没给她。
读到那封邮件时,我没有感到惊讶。我感到的是似曾相识。因为我在 VeriPrajna 的团队已经花了好几个月盯着这种失败模式,把它层层剖开,从架构层面理解它为什么会发生。答案既简单,又让所有在旅游行业构建 AI 产品的人深感不安:业内最热门的那些 AI 系统,被优化成听起来正确,而不是确实正确。这个区别在一个诗歌生成器里微不足道。但在旅行物流中,它就是一场假期和一场灾难之间的差别。
为什么你的 AI 会凭空捏造出不存在的酒店?
关于大语言模型——GPT-4、Claude、Gemini,所有这些——大多数人有一点没搞懂。它们并不像数据库“知道”事情那样“知道”事情。一个酒店预订系统知道 JW 万豪的 412 号房从 3 月 3 日到 3 月 7 日已被预订。这是一个事实,存储在一行数据里,可以查询。
大语言模型不是这么工作的。它基于训练数据中的统计规律来预测序列里的下一个词。当你向它询问“哥斯达黎加 200 美元以下的豪华生态旅馆”时,它会激活一簇簇关联——“哥斯达黎加”牵出“郁郁葱葱”“雨林”“生态旅馆”。它开始生成在统计上很可能跟在那些词后面的文本。而当它需要给这处房产命名时呢?它就把碎片混合起来。它从见过的成千上万条评价中提取片段,拼合成一个听起来貌似可信的东西。
在创意写作中,这种混合叫做想象力。在旅行中,它叫做幻觉。而模型无法分辨两者的区别。
模型在优化的是连贯性,而不是正确性。它被设计成产出一个看起来像有效答案的回应,而不是一个经过实时库存核验、确实是有效答案的回应。
更糟的是这些模型的训练方式。在基于人类反馈的强化学习(RLHF)过程中,人类评分者始终更偏爱全面而自信的答案,而不是说“我不知道”的答案。于是模型在深层学到:自信地猜测会得到奖励,而承认无知会受到惩罚。一个靠猜测房态的人类旅行社员工会被开除。而一个靠猜测房态的 AI 却因其“流畅”受到称赞——直到顾客降落在一个异国他乡,却无处过夜。
我意识到“流畅”才是问题的那一夜
有一个瞬间我一直反复想起。当时我们在测试一个早期原型——不是我们发布的产品,而是一个内部实验,用来理解大语言模型如何处理旅行查询。我让它帮我在纽约时装周期间,找一家中央公园附近、每晚 250 美元以下的酒店。
它给出了三个选项。详尽的描述。价格。设施。其中一个甚至提到有一个能看到公园景色的屋顶酒吧。语言如此精炼,如此具体,以至于我的第一反应就是点击“预订”。
然后,我的一位工程师——一个比较安静、非常有条理的人——用同样的查询去比对 Amadeus 酒店搜索 API。三家酒店中有两家确实存在,但在时装周期间没有空房。第三家酒店的名字很接近一个真实的房产,却与系统里的任何酒店 ID 都对不上。那个屋顶酒吧呢?属于六个街区之外一家完全不同的酒店。
就是在那一夜,我明白了:危险的不是那种会明显失败的 AI。一个说“我不明白你的问题”的聊天机器人令人恼火,但无害。危险的是那种完全听懂了你的问题、却用雄辩、有说服力、事实上却错误的信息来回应的 AI。我们开始把这称为可靠性的“恐怖谷”——系统的语言智能高到让用户对事实核验放松了警惕。
加拿大航空聊天机器人一案让这一点在法律层面变得具体。一个聊天机器人凭空捏造了一项退款政策。法院裁定航空公司需要承担责任——不是 AI 供应商,也不是把聊天机器人当作“测试版工具”推脱。部署这个智能体的公司要为该智能体的断言负责。如果你的 AI 承诺 200 美元一间海景套房,而 GDS 里只有 400 美元一间的标准房,你可能就要为这个差价买单。或者更糟,为一趟被毁掉的旅程买单。
当你把大语言模型当作大脑而不是嘴巴,会发生什么?

那个测试之夜过后,我的团队进行了一场漫长的争论。就是那种人们在白板上涂涂画画、彼此抢着说话的争论。问题很简单:我们是设法让大语言模型更准确,还是彻底改变架构?
一派主张更好的提示词、更多的护栏、检索增强生成。用旅行数据对模型进行微调。另一派——我最终加入的这一派——则认为问题不在于模型的知识。问题在于模型的角色。我们是在要求一个文本生成器去干库存管理员的活。这就像要求一位小说家去经营一家航空公司。他们能把飞行的体验描绘得美妙动人,但他们没法告诉你上午 8 点飞往希思罗的航班上还有没有座位。
于是我们做了一个决定,它改变了之后我们构建的一切:大语言模型永远不会成为旅行信息的来源。它将是意图的路由器。
用户说“帮我找一家中央公园附近的酒店”。大语言模型的工作是理解这个意图,把它分解成结构化的参数——地点、日期范围、预算、偏好——然后把这些参数交给一个查询真实库存的工具。工具返回实际的数据。大语言模型的第二项工作是用自然语言呈现这些数据。但它绝不生成数据。它只是翻译数据。
我们不再构建谈论旅行的 AI。我们开始构建执行旅行的 AI——查询真实系统,解读真实的状态码,只确认它能核验的内容。
这就是业内所说的从“LLM 套壳”到智能体 AI 系统的转变。而这个差别并非渐进式的。它是物种层面的改变。我在我们研究的交互式版本中深入写过这套架构。
编排者-工作者模式:为什么一个智能体不够用

起初,我们尝试把所有事情都交给单个智能体处理。一个提示词处理机票、酒店、租车、饮食限制、企业差旅政策。它在自身的重压下崩溃了。上下文窗口被填满。指令相互冲突。这个智能体会在确认航班日期之前就先订了酒店,然后不得不把一切推倒重来。
于是我们构建了我们所称的编排者-工作者模式。可以把它想象成一位从不碰键盘的资深旅行顾问,管理着一支各自把一件事做到极致的专家团队。
编排者是一个高推理能力的模型——GPT-4o 或 Claude 3.5 Sonnet——它与用户对话,维护对话历史,并决定接下来需要发生什么。它不直接接触 GDS。在它之下坐着专门的工作者:一个懂 Amadeus 航空 API、理解 IATA 代码的航班工作者;一个懂 Sabre 住宿内容服务、知道押金与担保区别的酒店工作者;一个在任何内容呈现之前检查企业差旅规则的政策工作者。
当用户说“帮我订下周二飞纽约的航班和一家中央公园附近的酒店”时,编排者会把它分解成两个任务,识别出酒店搜索取决于航班的到达时间,先启动航班工作者,然后用正确的日期启动酒店工作者。如果酒店工作者失败了,编排者仍会呈现航班选项,并询问用户是否想用不同的酒店条件重试。什么都不会崩溃。什么都不会产生幻觉。
关键的洞见在于把思考和执行分开。编排者思考。工作者执行。而两者都不假装自己是对方。
为什么“200 OK”差点骗了我们

这是一个至今仍让我心头一紧的故事。当时我们正深入进行与 Sabre 预订 API 的集成测试。我们的酒店工作者会发送一个预订请求,收到一个 HTTP 200 响应——在 Web 开发中这意味着“成功”——然后把它传给编排者。编排者就会告诉用户:“您预订成功了!”
只不过他们没有。并非总是。
我们花了长得令人尴尬的时间才发现这个问题。HTTP 响应之所以是 200,是因为消息被成功送达了。但在响应体内部,GDS 段状态码却是UC——无法确认(Unable to Confirm)。酒店拒绝了这个请求,通常是因为缓存的房态已经过期。在搜索和预订尝试之间那几毫秒里,房间被卖掉了。
传输层与应用层之间的脱节是一个经典陷阱,而我们径直踩了进去。HTTP 层面的 200 OK 说的是“你的消息已送达”。GDS 层面的UC说的是“你的预订失败了”。我们的系统读的是信封,却忽略了里面的信。
就是从那时起,我们实现了我在如今认为是整套架构中最重要的一环:验证循环。每一个预订响应都要经过一个独立的验证步骤——要么是一个确定性的代码检查,要么是一个充当质量审计员的专门提示词——然后才允许任何确认信息抵达用户。规则是绝对的:
AI 智能体绝不允许输出确认消息,除非它已经解析出具体的 GDS 段状态码,并将其验证为 HK——已确认持有(Holding Confirmed)。其他一切都是失败,无论 HTTP 报头怎么说。
HK意味着库存已锁定。UC意味着酒店拒绝了你。NN意味着请求待处理——先别做任何承诺。NO意味着未采取任何操作。这些代码就是一间订好的房与一位滞留旅客之间的差别,而大多数 AI 旅行系统甚至不去解析它们。
关于我们状态码处理与验证架构的完整技术拆解,请参见我们的研究论文。
AI 智能体如何应对“房间刚刚被订走”?
这正是智能体系统体现价值的地方。“查得到、订不上”(Look-to-Book)的落差在旅行业中普遍存在——你搜索、看到有房、点击预订,房间就没了。旺季期间这种情况不断发生。基于套壳的 AI 对这种情况毫无应对之词。它要么说“我订好了!”(错误),要么说“失败了”(毫无帮助)。它没法说“一秒钟前它还在,但被别人抢走了——这是你的下一个最佳选择”。
我们的智能体可以。当一个预订返回UC时,系统会自动为同一家酒店触发一次新的房态搜索。如果有另一间房或另一种房价可用,它就呈现这个选项:“之前的房价已售罄,但我找到了一间类似的房,只贵 10 美元。”如果什么都没有,它就从最初的搜索结果里取出下一个最佳酒店,转而推荐它。这要求智能体维护状态——一份记忆,记住它已经搜索过什么、用户已经拒绝过什么、有哪些备选。套壳是无状态的。它们做不到这一点。它们每次都从头开始,否则就靠幻觉来伪造连续性。
没人谈论的归一化问题
有一件事让我惊讶——真真切切地惊讶到我——那就是 Amadeus 和 Sabre 之间的数据结构有多么不同。Amadeus 以严格的嵌套 JSON 把价格拆成基础价、总价和税费。Sabre 则有时把税打包进去,有时不打包,取决于房价方案。字段名也不一样。一个系统里的amount在另一个系统里是totalPrice。
如果你把两边的原始响应都喂给一个大语言模型,让它比较酒店,它就会犯糊涂。它可能引用 Amadeus 的税前价格和 Sabre 的税后价格,让 Amadeus 那家酒店看起来便宜 50 美元,而实际上它反而贵 20 美元。我们在测试中见过这种情况发生,而这正是那种用户几乎不可能察觉的错误。
于是我们构建了一个归一化工作者——一个确定性的代码层,它接收来自两个系统的各不相同的 JSON,把它们转换成单一的标准化 schema。编排者永远看不到原始的 GDS 数据。它看到的是干净、一致的字段:名称、含税总价、星级、距用户兴趣点的距离。大语言模型呈现的是这份归一化后的数据。它不解读原始 API 响应。它翻译经过整理的事实。
“直接用 GPT 就行”——以及投资人常说的其他话
人们不断问我,为什么我们不直接用检索增强生成——把酒店数据拉进一个向量数据库,让大语言模型去搜索。或者用旅行数据微调一个模型。或者干脆加一条更好的系统提示词。
曾有一位投资人直截了当地对我说:“直接用 GPT 配一条好的提示词就行。模型足够聪明。”我尊重这种直觉——它是最简单的方案,而简单的方案通常是对的。但在这里行不通。当失败模式是一家人睡在机场时,它就行不通。
RAG 对静态知识有帮助——“泰国的签证政策是什么?”——但它没法告诉你 AA123 航班此刻有没有空座。微调有助于语气和领域词汇,但它不会把模型连接到实时库存。一条更好的系统提示词有助于格式,但它无法阻止模型生成一个在任何 GDS 里都不存在的酒店名。
在旅行中,唯一能防止幻觉的,就是把 AI 的输出锚定在记录系统那实时的、经过核验的数据之上。那个系统就是 GDS。其余一切都只是装饰。
没有约束的创造力就是混乱。在旅行中,约束就是现实——那个存在或不存在的航班座位,那间可订或不可订的酒店房间。这里没有中间地带,而 AI 必须停止假装有中间地带。
那慢的那部分怎么办?
我不会假装智能体系统很快。一个用户请求可能触发四次工具调用——搜索、比价、政策检查、回应合成。这可能要花 10—15 秒。在电子商务里,这是一个永恒。
我们用三种方式来处理这一点。第一,我们把智能体的推理过程流式地展示给用户:“正在 Amadeus 搜索航班……”“正在检查企业差旅政策……”把工作过程展示出来,能极大地降低感知延迟。第二,我们并行运行工作者——航班工作者和酒店工作者同时搜索,而不是依次进行,把总等待时间大约缩短了一半。第三,我们在 Redis 中把房态结果缓存 15 分钟。如果用户说“再给我看一次那第二家酒店”,我们就不再去访问 GDS。我们从缓存里取。
它有没有一个两秒钟就编出答案的套壳那么快?没有。它是否快到足以满足一个想要真实答案的用户?是的。
这一部分,我承认我们目前还做不到什么
没有哪个 AI 系统能处理所有情况。带签证依赖的复杂多程行程、冷门的航空联盟、需要协商价的团体预订——这些仍然会出问题。我们知道这一点,因为我们为此构建了检测机制。当智能体陷入循环却无法解决,或者当情感分析标记出用户的挫败感时,系统就会降级到我们所称的“副驾模式”。它会通知一位人类旅行社员工,把对话的完整结构化上下文传递过去,由这位人类使用智能体准备好的工具来完成预订。
人们问我这算不算一种失败。我认为恰恰相反。最危险的 AI 是那种不知道何时该停下来的 AI。知道自己的极限并优雅地移交,是一项功能,而不是一个缺陷。那个说“让我帮您转接一位专家”的智能体,比那个不停地自信猜测的智能体更值得信赖。
接下来这会走向何方
我们今天在构建的是地基,而不是天花板。我们处在我称之为 3 级自主的阶段——智能体执行特定任务,但在资金流动之前由用户来确认。前进的道路包括:不只预订挂牌价、而是向酒店 API 查询批量折扣的谈判智能体;把机票和酒店打包成带受控利润的定制产品的动态打包引擎;以及主动式中断管理——那些全天候监控航班状态的智能体,一旦发生取消,就在旅客甚至还不知道出了岔子之前,已经在下一个最佳选项上锁好了一个座位。
这些没有一样能在套壳上实现。只要系统会产生幻觉,其中就没有一样行得通。上述每一项能力,都需要我们一直在构建的那种有状态、经核验、以工具为锚的架构。
旅游业正处在一个拐点。第一波 AI 采用浪潮——那些套壳、那些聊天机器人、那些“加个 GPT 就行”的实验——造出了某种诱人却危险的东西:那些听起来像你见过的最棒的旅行社员工、却实际上订不了一间房的系统。下一波浪潮将由一个更难、更不光鲜的问题来定义:不是“这个 AI 能不能写出一份优美的行程?”,而是“这个 AI 能不能确认那份行程上的每一项,此时此刻,都确实以它所报的价格存在?”
哥斯达黎加那家人本应得到比一篇写得再美的虚构更好的对待。每一位旅客都是如此。那个靠猜测的 AI 时代已经结束。接下来到来的,是那个会核查的 AI——只有在它确知时才开口。