开源项目
petergpt/bullshit-benchmark avatar
petergpt/bullshit-benchmark

BullshitBench v2:用 100 个胡说八道的问题,测出 AI 何时该闭嘴

该项目围绕「petergpt/bullshit-benchmark」构建,面向真实业务场景提供可复用的开源实践方案,支持稳定落地与可扩展的项目实践。

1,867 个 Star74 个 ForkPythonMIT

秒懂

它是什么?
BullshitBench 是一个 Python 编写的开源基准测试,专门衡量 AI 模型能否识别并拒绝无意义的提示,而不是自信地胡编答案。本文拆解它的机制、运行方式、局限与适用场景。
适合谁用?
BullshitBench 适合需要评估模型在客服、内容审核或专业问答中是否容易产生幻觉的团队,尤其是那些希望量化推理设置对输出质量影响的场景。它不适合作为通用模型排行榜,因为它只测试一种特定能力,即对无效前提的识别。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 2 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题:AI 的礼貌性胡说

主流基准测试都在问模型能答对多少题,但 BullshitBench 问的是另一件事:模型遇到完全站不住脚的问题时,是直接指出问题,还是顺着错误前提一本正经地编下去。这个问题在现实中很常见,比如用户问一个不存在的软件框架的安装步骤,或者问一个基于错误物理假设的计算。模型如果缺乏怀疑能力,就会给出自信但完全虚构的答案。这个项目由 Peter Gostev 创建,用一套可重复的流程测量模型的这种表现。它面向的是需要评估模型可靠性的工程师和产品经理,尤其是那些部署对话机器人的团队。

衡量机制:三种反应等级与三裁判聚合

BullshitBench 把模型的回答分成三个等级:Clear Pushback,即明确拒绝错误前提;Partial Challenge,即指出问题但仍参与错误前提;Accepted Nonsense,即把胡说八道当作有效内容。每个回答由三个固定的评审模型打分,分别是 anthropic/claude-sonnet-4.6、openai/gpt-5.2 和 google/gemini-3.1-pro-preview,采用 full 模式和 mean 聚合。这意味着每个回答都经过三票平均,而不是单一裁判。v2 版本彻底移除了旧版的争议平局机制,固定为三裁判。这种设计提高了评分的一致性,但也意味着评审本身依赖这三个模型的主观判断,如果它们对某种胡说八道有共同偏见,结果就会失真。

问题集与领域分布:100 个陷阱的构造

v2 的问题集包含 100 个荒谬提示,分布在五个领域:软件 40 个,金融、法律、医学、物理各 15 个。问题不是随机生成的,而是来自 drafts/new-questions.md,通过 scripts/build_questions_v2_from_draft.py 构建。更重要的是,问题被归类为 13 种胡说八道技术,比如 plausible_nonexistent_framework(听起来合理但不存在的框架)、misapplied_mechanism(错误套用机制)、nested_nonsense(嵌套胡说)、specificity_trap(利用具体细节诱导模型)。这些分类让用户能分析模型在哪种陷阱下容易失守。领域覆盖是刻意的,因为软件领域的问题可能更容易被识别,而法律或医学问题需要更深的知识来判断前提是否错误。

运行方式:从环境变量到端到端脚本

运行 BullshitBench 需要设置 API 密钥。最基本的做法是导出 OPENROUTER_API_KEY,因为默认路由是 OpenRouter。如果某些模型需要走 OpenAI,还要设置 OPENAI_API_KEY,并可选设置 OPENAI_PROJECT 和 OPENAI_ORGANIZATION。模型到提供方的路由在 config 文件的 collect.model_providers 和 grade.model_providers 中配置,例如 {"*":"openrouter","gpt-5.3":"openai"}。然后运行 ./scripts/run_end_to_end.sh 执行收集和主评审,默认使用 Claude。如果要跑 v2 并发布到独立数据集,用 ./scripts/run_end_to_end.sh --config config.v2.json --viewer-output-dir data/v2/latest --with-additional-judges。本地查看结果可以加 --serve --port 8877,然后打开 http://localhost:8877/viewer/index.v2.html。整个流程是脚本化的,但需要你理解配置文件的键值,否则容易跑错数据集。

可视化与数据分析:从排行榜到推理成本

v2 的查看器提供了多个图表,不只是排行榜。Detection Rate by Model 显示每个模型的绿/黄/红比例,Domain Landscape 对比整体与各领域的检测率,Detection Rate Over Time 按发布日展示趋势。最有趣的是 Does Thinking Harder Help?,它用散点图展示推理强度与绿率的关系,并带有 tokens/cost 切换。这直接回应了一个常见争论:更强的推理是否让模型更善于识别胡说八道。根据更新日志,Qwen 3.8 Max 在最小推理时达到 94% 的清晰拒绝率,但在最大推理时只有 26%,这说明推理强度并不总是有帮助,甚至可能适得其反。这类分析是其他基准测试很少提供的。

已知的权衡与局限

BullshitBench 有明显的局限。第一,它只有 100 个问题,每个领域的问题数量不等,软件领域占 40%,这可能导致对某些领域的评估不够稳定。第二,评审依赖三个商业模型,这意味着运行成本不低,而且评审模型本身可能更新,导致历史结果难以直接比较。第三,项目没有提供任何关于问题质量验证的信息,比如是否有独立的人工审核确保这些问题确实是无意义的。第四,README 中提到的模型名称如 Ox Alpha、GLM 5.3 等,在现实中可能不存在,但这可能是文档中的假设性名称,也可能是未来模型,读者需要自行核实。最后,这个基准只测量一种能力,不测量事实准确性、安全性或其他维度,所以不应作为模型选型的唯一依据。

替代方案与差异

一个自然的替代方案是 TruthfulQA,它测试模型是否生成虚假的常识性陈述,但它的方法不同:TruthfulQA 的问题本身是有意义的,只是需要模型给出真实答案,而 BullshitBench 的问题是根本无效的,要求模型拒绝回答。另一个方向是使用对抗性提示测试,比如一些红队工具会生成恶意或偏见提示,但那些更关注安全漏洞,而不是无意义前提。BullshitBench 的独特之处在于它专门针对胡说八道场景,并且提供了推理强度与性能的关系分析,这是其他基准没有的。如果你关心模型在无效输入下是否诚实承认不知道,BullshitBench 是更贴近的测试,而 TruthfulQA 更适合测试知识准确性。

维护与许可证

项目使用 MIT 许可证,这意味着你可以自由使用和修改,只要保留版权声明。仓库的主要分支是 main,没有标记为归档,但最近的推送时间未知,也没有发布任何正式 release。更新日志显示 v2 在 2026-08-25 有更新,添加了多个模型并增加了 880 条 v1 和 1600 条 v2 响应行,以及 7440 条评审评估。这表明项目在持续维护,但节奏可能不稳定。升级成本方面,如果你要添加新模型,需要修改 config 文件中的模型列表和提供方路由,并重新运行端到端脚本。由于评审模型是固定的,如果你更换评审模型,历史数据将无法直接比较。许可证允许商业使用,但你需要自己承担 API 调用成本。

编辑结论

BullshitBench 适合需要评估模型在客服、内容审核或专业问答中是否容易产生幻觉的团队,尤其是那些希望量化推理设置对输出质量影响的场景。它不适合作为通用模型排行榜,因为它只测试一种特定能力,即对无效前提的识别。在采用之前,你应该先检查 questions.v2.json 中的问题是否覆盖你关心的领域,并确认 3 个评审模型的 API 密钥可用,同时考虑评审成本。最终判断是:BullshitBench 提供了一个可复现的、针对胡说八道场景的测试框架,但它测的是模型的怀疑能力,而不是综合能力。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
社区笔记

社区笔记