桃子桃子快讯
返回首页
工具

Booth:在 LLM 调用前后加一道「安检门」的轻量库

开发者推出开源 Python 库 Booth,可在 LLM 调用前后加入结构化检查点,支持歧义识别、置信度校验、验证器与…

2026.08.31 · 周一4 分钟阅读

在构建 LLM 应用时,模型输出往往不可控:答非所问、置信度低、格式不合规等问题频发。开发者近日在 Hacker News 以「Show HN」形式开源了 Python 库 Booth,定位是在应用与 LLM 调用之间插入一个「安检门」,对模型返回内容做结构化校验后再决定是否放行。Booth 当前版本为 v0.4.3,与具体模型、向量库或框架解耦,属于 provider-agnostic 的通用层。

核心思路:在调用外层做检查

Booth 的设计哲学很克制:库本身不声称「知道真相」,只负责判断一次 LLM 输出是否满足调用方预设的「准入条件」。其名取自 toll booth / ticket booth —— 一个收费站无需了解外部全貌,只检查「该付的钱是否付了」即可放行。

调用方式上,开发者只需将原本的 call_llm 包进 booth.check()

  • 传入待调用函数与 prompt;
  • Booth 会要求模型以 JSON 形式同时返回 ambiguousinterpretationschosen_interpretationanswerconfidence 字段;
  • 再按预设规则顺序决定结果状态。

五种结果状态

Booth 最终会返回五种显式状态,便于上层逻辑分支处理:

  • VERIFIED:通过全部校验;
  • REPAIRED:初次未达标,经重试后达标;
  • AMBIGUOUS:问题本身存在多种合理解读,直接拦截;
  • UNCERTAIN:经重试仍无法获得可接受结果;
  • BLOCKED:被自定义验证器否决。

歧义检测优先级最高,即使答案置信度极高、验证器也通过,只要模型识别出多种解读,Booth 也会返回 AMBIGUOUS 而不再触发后续校验。

主要功能模块

Booth 提供的能力包括:

  • 歧义检测:识别「What is the capital of Georgia?」这类存在多义的问题;
  • 自报置信度校验:默认阈值 0.7,可通过 threshold 参数调整,模型自报的置信度不经过额外校准;
  • 重试机制:当置信度低于阈值或验证失败时,使用包含上一次回答的特定提示词让模型重新作答,达到阈值则标记为 REPAIRED;
  • 解析失败处理:与低置信度分开走另一条重试路径,通过 result.all_parse_failed 可判断是否所有尝试都因格式问题失败;
  • 自定义验证器:调用方可传入 validator 函数,可返回纯布尔值,也可返回 (bool, str) 元组附带具体失败原因,该原因会原样回传给模型用于重试;
  • 证据一致性检查:通过 check_with_evidence() 与调用方已有的 RAG、搜索或数据库证据做比对;
  • 同步与异步接口均可用,结果对象附带 result.methodresult.parsed,便于排查。

定位与局限

Booth 解决的是「工程层」问题,而非模型能力本身。它不重试幻觉、不校准置信度,也不能保证输出事实正确。对于已有检索或工具流水线、需要把「模型答了什么」与「应用侧已知证据」对账的团队,它提供了一套相对干净的胶水层;对于只是想换个 prompt 模板的用户,引入成本可能高于收益。整体而言,它更适合作为 LLM 应用中的横切关注点(cross-cutting concern)来使用,而非模型层替代方案。

信源