385美元飞都柏林,AI代理悄然删除城市信息;工具提示在响应中,却仍保持沉默。

Reddit r/AI_Agents 工具

摘要

作者描述了一个AI代理,尽管工具备注中提示了信息遗漏,却仍从航班搜索结果中省略里斯本,强调需通过架构变更提升模型对信息缺口的透明度。

今天早上,五个城市被输入一次搜索。四个城市返回了价格,里斯本却毫无结果。问题是从JFK出发到都柏林、里斯本、巴塞罗那、马德里或米兰的最便宜往返机票,出发日期为2027年1月13日至15日,行程七晚,最多一次转机。它通过我运行的MCP服务器处理,因此我手头有原始工具结果与答案的对比。模型只进行了一次工具调用,而非工具描述要求的十五次,这点让我很满意。返回结果显示:都柏林机票为冰岛航空的385美元,巴塞罗那和马德里均为519美元,米兰为559美元。并指出385美元的价格“不错,但不算便宜”,因为谷歌追踪的该航线价格区间为345至440美元。所有信息均正确。答案中唯独缺少里斯本的价格。不是“没有飞往里斯本的航班”,而是完全缺席。实际情况是模型选择了limit: 12,但实际行数超过12,导致里斯本的三行数据被截断。我的服务器预见了这种可能性,因此在响应中附带了一个字段明确说明:“note”: “`limit` was 12, which is fewer than the number of date/destination combinations that returned flights, so 3 of them have no row in `results`: 2027-01-13 to LIS, 2027-01-14 to LIS, 2027-01-15 to LIS. Those searches ran and found flights; the answer simply had no room for them. Raise `limit` to see them.” 这句话就在上下文窗口中。模型读到了它,却未将其传递出去。顺便提一下,里斯本的价格是599美元,这不会影响推荐结果,而且这并非问题的核心。因此,我之前的认知有误:仅在载荷中包含遗漏备注是必要但远远不够的。备注属于散文体文字,容易被忽略。如果信息缺口至关重要,则必须通过架构设计,使得没有它就无法生成完整答案。接下来我正尝试引入一个“missing”数组,要求其为空才能使search_status状态为“ok”。你们有什么真正能让模型主动揭示自身盲点的方法吗?
查看原文

相似文章