← 返回
AI技术

8个LLM,480个问题,1个Kaggle基准:谁能解释流量下降?

✍️ zhirenhun 📅 2026/9/28 👁 219 阅读 ⏱ 27 分钟
8个LLM,480个问题,1个Kaggle基准:谁能解释流量下降?

这是对 Kaggle 基准测试挑战赛 的投稿。

我基准测试的内容

简短版本

我构建了 InsightTrack,一个开源的网络分析
平台。它具有一个名为 Pulse 的 AI 分析师。您会问 "为什么上周 /pricing 页面的流量下降?",然后 Pulse 会选择合适的工具,读取数据,并用通俗易懂的英语作答。

Pulse 需要一个语言模型作为后盾。我想用证据而不是直觉来选择该模型,所以我
把 Pulse 的实际工作变成了一个基准测试:480 个问题,自动评分,答案来自 InsightTrack 自身的代码。

问题:AI 分析师可能会自信地犯错

分析助手不仅仅是用来提供趣味事实的聊天机器人。人们会根据它的说法行动:他们可能会修改页面、暂停广告活动,或停止担心。当它出错时,错误通常表现为以下两种代价高昂的情况之一:

  1. 它会编造原因。 流量变化可能源于枯燥的原因(比如假期、新闻通邮或纯粹的噪声),而助手会自信地将其归咎于谷歌排名。您可能会花一天时间去修复其实并未出问题的 SEO。
  2. 它会忽略真实问题。 流量可能减半,而助手却说“没有显著变化”。您可能要等一个月后才发现。

这两种情况都比说“我不知道”更糟。一个有用的分析师需要具备三种习惯,而这些习惯在通用 AI
排行榜上看不到。

为什么通用基准无法回答这个问题

公共基准在告诉您哪个模型在数学方面更强、编码更好或
函数调用更正确方面表现出色。但为产品选择模型是一个 产品决策,它有
三个它们无法为您回答的问题:

  • 错误类型:一个模型因说“不确定”而有10%的错误率,比一个因编造内容而有5%错误率的模型更安全。
  • 成本:昂贵的模型是否值得,或者十分之一价格的模型能否完成同样的工作?
  • 回答这些问题的唯一方法是在实际工作中测试模型。这就是这个基准所做的。

    它包含什么

    InsightTrack 分析师基准 包含四个任务的 480 个自动评分用例。前三个是 Pulse 今天的工作;第四个是 SQL,这是 Pulse 尚未采取的一步:在没有内置工具适用时编写查询。

    任务 Pulse 必须做什么 模型获得什么 何时正确
    工具选择 决定如何回答 用户问题 + InsightTrack 真实的 23 种工具目录 它选择正确的工具和参数,或者在没有工具能完成时说“无”
    数据读取 理解结果 InsightTrack 真实输出格式的工具结果 它得到正确的数字,或者返回 not_available 而不是编造一个数字
    诊断 解释变化 8 周的页面流量 + 前后的 Google 结果 它说明变化是否真实、方向以及 确切 的原因集合
    SQL 深入挖掘(Pulse 路线图上的下一步) InsightTrack 的 DuckDB events 和 sessions 表 其查询,只读执行,返回正确的行

    每个任务有 80 标准 + 40 困难 个用例。困难用例体现在粗心的推理中:

    一个案例,逐步分解

    以下是一个简化后的诊断问题示例:

    正确答案:下降是真实的,但搜索并未导致它。 在 InsightTrack 的术语中,
    {"significant": true, "direction": "drop", "causes": ["unexplained_by_serp"]}。诱人的错误
    答案是 "你的排名下降"。说出这种答案的模型会让用户去修复其实并未损坏的 SEO。

    这就是基准的核心:模型能否区分真实原因和巧合?

    为什么这些答案可以被信任

    没有 LLM 会给另一个 LLM 打分:

    每个评分者还会标注 how 模型出错:虚构原因,将真实变化称为噪声,
    编造数字,拒绝回答可回答的问题,使用不存在的工具。这将把得分转化为你可以采取行动的东西。

    谁会受益

    已测试的模型

    所有模型均通过 Kaggle 的模型代理在同一任务版本上运行。我按配对挑选它们,以便每个
    比较都能回答一个实际问题:

  • 最便宜的选项: GPT-5.4 nano. “足够好”就足够好吗?
  • OpenAI 的旗舰模型: GPT-5.5,作为参考点。
  • 发现

    模型 工具选择 数据读取 诊断 SQL 总体 成本 (480 病例)
    Claude Sonnet 5 100 100 100 100 100.0 $2.08
    GPT-5.5 100 100 96.7 100 99.2 $3.23
    Grok 4.20 (reasoning) 100 96.7 100 95.0 97.9 $1.21
    Gemini 3.7 Flash 100 100 100 90.8 97.7 $1.07
    Gemini 3.5 Flash-Lite 98.3 88.3 49.2 88.3 81.0 $0.20
    Claude Haiku 4.5 98.3 82.5 44.2 86.7 77.9 $0.63
    Grok 4.20 (no reasoning) 98.3 82.5 35.0 92.5 77.1 $0.40
    GPT-5.4 nano 93.3 61.7 20.0 93.3 67.1 $0.07

    1. 工具选择问题已解决。诊断是模型分歧的地方。

    每个模型至少有 93% 的时间选择了正确的工具。因此,“它能否调用工具?”对于分析助手来说不再是有趣的问题。真正的问题是它是否理解该
    数字 意味着什么。在诊断方面,前三名模型得分 100%,GPT-5.5 得分 96.7%,而每个更便宜的
    模型得分在 20% 到 49% 之间。

    这张图显示了8种不同的AI模型在处理120个完全正确的原因(实体或噪声,方向,精确原因)时的表现

    2. 同一模型,推理开启 vs. 关闭:100% 对比 35%

    Grok 4.20 带有推理功能在所有诊断病例中答对。同一模型在没有推理功能的情况下答对率为
    35%。它在所有 16 个多因素病例中失误,以及 12 个干扰项中的 9 个。结果中其他方面没有移动如此
    程度。如果你的助手回答“X 为什么会变化?”,推理功能不是可有可无的。

    3. 便宜模型以两种相反的方式失效

    危言耸听者。 没有推理,Grok 凭空编造了 34 次搜索原因。 在一种情况下,流量
    上升 从 437 次浏览增加到 538 次浏览,而该页面在 Google 上的排名从第 3 位下降到第 5 位。 提示明确说明,1–2 位的变动是正常抖动,绝不是原因。 Grok 回答:

    {"significant": true, "direction": "spike", "causes": ["rank_drop"]}
    

    他们把流量 rise 的增长归因于排名 drop 的下降。正确答案是 unexplained_by_serp:这一变化
    并非来自搜索。

    耸肩者。 GPT-5.4 nano 则走向了另一方向,将真实的变化称为噪声,共 73 次。一个页面的浏览量
    从 209 降至 110 次(−47%),就在它从 Google 排名 #14 滑落到 #26 之后。Nano 回答:

    {"significant": false, "direction": null, "causes": []}
    

    对一款分析产品来说,这种失误最危险:报假警的模型让你白忙活一下午,满不在乎的那个
    则在你流量被腰斩时,还一直告诉你一切正常。

    4. 信号混杂时,所有更便宜的模型全部失灵:8题0分

    在最难的那批案例里,一个关键词排名下滑,另一个关键词却在上升,而整体流量是下降的。正确答案应当
    只指出那处下降,因为上升解释不了流量为何减少。Flash-Lite、Haiku、不开推理模式的 Grok,以及
    nano,8道题全部得 0 分。比如 Haiku 把流量下滑归咎于 ai_citation_gained,可提示词里写明
    这条规则只在流量上涨时才适用。真实页面往往同时排上多个关键词,所以这种情况是
    家常便饭,而非罕见边角案例。

    5. 读取数据:便宜的模型要么拒答,要么瞎编

    在读取数据这项上,面对数据本身无法回答的 24 道标准题,7 个模型全都正确地回复了
    not_available。但难题集里的陷阱让它们高下立判:

    一个分不清“我算不出来”和“这根本算不出来”的模型,两头都靠不住。

    6. SQL 出错是习惯问题,不是逻辑问题

    Gemini 3.7 Flash 在 JSON 类题目上得了 0/7,而其余题目几乎全对。每一次,
    它都写出这样的代码:

    WHERE properties->>'name' = 'signup'
    

    在 PostgreSQL 中这没问题。在 DuckDB 中,->> 的优先级低于 =,因此会被解析为
    properties ->> ('name' = 'signup') 并导致崩溃。加上一对圆括号即可解决。这看起来是从 PostgreSQL 带来的习惯,而在示例中 PostgreSQL 的使用远多于 DuckDB。

    Claude Haiku 在回答过程中自我纠正。 在 9 次 SQL 回答中,它先写出一个查询,然后发出 "等等,让我
    重新考虑……"
    ,接着给出第二个查询。提示只要求给出查询,因此评分者采用第一个答案。在这 9 次中,有 8 次第二个查询是正确的。如果以最后一个查询为准,Haiku 的 SQL 分数本应为 93.3%,而实际上只有 86.7%。这正是在工具调用中大声思考的真实成本:模型与数据库之间的任何中间内容都会读取第一个答案。

    7. GPT-5.5 的唯一失误来源于我的提示

    GPT-5.5 在诊断上恰好犯了四次错误,且这四次错误完全相同。每次,一个页面刚好滑过第 10 名(#10 到 #11 两次,#10 到 #12 一次,#9 到 #11 一次):它掉出了第一页,因此答案是 page_one_exit。GPT-5.5 每次都回答 unexplained_by_serp。

    重新审视我的提示后,我发现其中有两条规则相互冲突:

    • page_one_exit: "位置之前在 1–10 范围内;现在低于 10"。
    • "1–2 个位置的变动是正常抖动,并且绝不是原因。"

    我本意是让抖动规则覆盖 rank_drop 和 rank_gain。GPT-5.5 将 “never” 理解得字面意思。Claude Sonnet 5、Gemini 3.7 Flash 以及带有推理能力的 Grok 都理解了我的意图。两种理解都不算粗心。有一种模型遵循指令的字面意思,而其他模型则遵循其精神,这一点值得我们在为任何模型制定规则时了解。这也提醒我们 基准测试的提示本身也是代码。下一个版本将会说明 “never 不应计入 rank_drop 或 rank_gain”,而我将按现状报告得分,而不是悄悄修复它。

    8. 价值:Gemini 3.7 Flash 是最佳选择

    Gemini 3.7 Flash 在大约 Claude Sonnet 5 一半的成本下达到了 97.7%。GPT-5.5 是成本最高的一次运行(3.23 美元),但仍然仅次于 Sonnet。在前四名之后出现断崖:每次运行成本低于 0.65 美元的模型没有一个得分超过 81%,而且它们在诊断环节全部失效。

    Pulse 将由什么驱动?

    Gemini 3.7 Flash 默认使用。 在判断相关的三项任务中,它得分 100%,而成本仅为最准确模型的一半。其唯一的弱点可以通过代码修复:在运行任何生成的 SQL 前,将 ->> 比较用括号括起来。

    Claude Sonnet 5 作为后备 对于任何 SQL 密集型任务,因为它在所有地方都表现完美,并且
    相比 GPT-5.5 更具成本优势。

    没有更便宜的模型用于诊断。 一个在面对 47% 下降时耸耸肩的助手,成本高于其所能节省的。

    基准测试也支持 InsightTrack 已经采用的这一设计选择。在产品中,Pulse's
    explain_traffic_change 工具在代码中计算显著性和原因,而模型仅用纯英文解释结果。这些结果说明了原因:如果让模型独自完成这种推理,每个更便宜的模型至少有一半时间会出错。

    如果你正在构建 AI 助手,这意味着什么?

    这些经验适用于任何处理数字的助手:

    1. 计算而非询问。 任何涉及阈值(显著性,“这是趋势吗?”)的任务都应放在代码中。让模型解释结果,而非自行决定。
    2. 将“无变化”和“我不知道”设为有效答案,并进行测试。 如果你的测试仅包含有原因的案例,你将永远看不到耸肩者或报警者,除非用户亲自遇到。
    3. 在答案为“为什么”时使用推理。 这是结果中最大的单一因素:同一模型在 100% 与 35% 之间的差距。
    4. 将生成的 SQL 与你的实际数据库方言进行对比。 这里的大多数失败源于 PostgreSQL 的使用习惯,而非逻辑错误,少量重写或检查即可捕获。
    5. 不要解析模型说的第一句话。 请求一个干净的最终答案,或读取 最后 一句话,因为模型会自行纠正。
    6. 按任务路由。 工具选择成本低且易于正确,因此小模型可以胜任。诊断则不然。

    我想要测量的下一步是什么?

    • 一致性: 对每个模型运行三次,统计同一案例翻转的频率。
    • 固定抖动规则: 重新运行每个模型,观察 GPT-5.5 是否达到 100%,以及其他模型的得分是否发生变化。
    • 真实工具调用: 多轮运行中,模型实际调用 InsightTrack 的工具,而不仅仅是提及它会调用的工具。
  • Messier 证据:季节性,就像一个假日的下降(非搜索),伴随着指向不同方向的关键词。
  • 坦白说,局限

    • "正确" 意味着符合 InsightTrack 的规则。 所有规则和阈值都写入了提示,因而这考察的是仔细应用,而不是猜测某种隐藏的惯例。
    • 合成数据,每模型一次运行,全部通过 Kaggle 模型代理。
    • SQL 的评分严格以第一个查询为准。 如上所述,这会产生 Haiku 费用。
    • 诊断提示中的一条规则存在歧义(抖动规则 vs. page_one_exit)。这解释了 GPT-5.5 的全部四次失误。下个版本计划对其措辞进行修正。

    我的基准

    Kaggle 基准: https://www.kaggle.com/benchmarks/nishikantaray/insighttrack-analyst-bench

    数据集(案例、示例表格、评分器): https://www.kaggle.com/datasets/nishikantaray/insighttrack-analyst-bench

    它所基于的产品: https://github.com/NishikantaRay/InsightTrack

    您如何使用它

    • 测试另一个模型: 四个任务在 Kaggle 上公开可用,任何人都可以在 Kaggle 目录中的任何模型上运行它们,并与上面的表格比较。
    • 为自己的产品重用此方法: 取您代码已经强制执行的一条规则,将其转换为由您代码提供答案的生成测试用例,包含正确答案为“无”的情况,并标记错误的 类型 以及得分。

    基于 Kaggle Benchmarks 构建。任务模式参考其
    其 dataset_evaluation.py 示例。它的覆盖范围接近 BFCL 和 τ-bench(工具调用),
    InfiAgent-DABench 和 DSBench(数据分析),以及 Spider 2.0 和 BIRD(文本到 SQL)。它的区别在于:
    对某个真实产品的工作进行端到端测试,以及评估模型是否能够识别出 什么都没发生 的情况。

    ——

    广告 广告
    🧑‍💻

    zhirenhun

    一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

    devchallenge kagglechallenge ai machinelearning