gut 是一个 Python 库,用于对文本进行小型判断,返回 YES、NO 或 UNSURE。它专为 TypeSafe AI 的 Jev 设计,也可运行在 Ollama、vLLM、OpenAI 或本地 NLI 模型上。
用途: 解决代码中非逻辑性的判断问题,例如:这条评论是垃圾吗?这个工单属于哪个团队?有多紧急?智能体的任务完成了吗?传统方案要么用正则和关键词规则(免费但易错),要么用前沿大模型(理解力强但慢且贵),要么训练分类器(需要标注数据和流水线)。gut 提供第四种方案:使用专为这类问题设计的小模型,直接输出概率、选项分布或评分,无需生成或解析文本,仅按输入计费。
主要能力:
- 一行 Python 代码完成判断:likely / classify / rate → YES, NO 或 UNSURE。
- 无需提示词、无需解析、无需阈值,调用处不指定模型。
- 支持三种问题类型:是/否、单选、评分。
- 能表达不确定性:返回 UNSURE,并可通过 lean="yes"、stakes="high" 等参数用文字描述谨慎程度,gut 自动计算阈值。
- 支持批量处理:Jev 支持并发请求,本地模型支持批处理,已缓存内容不会重复询问。@gut.semantic 可对同一主题的多个问题做同样处理。
- 模型可配置:默认使用 Jev,也可运行在本地 NLI、本地 LLM、Ollama、vLLM、OpenAI 上,同一行代码无需修改。
- 支持级联:先询问最便宜的模型,仅将不确定的部分传递给更贵的模型。
- 每个答案都是模型自身的概率,而非从文本解析,decision.model 会标明给出答案的模型。
- 支持自定义模型作为后端。
- 提供 FakeBackend 用于测试,例如 gut.FakeBackend(answers={"is spam": 0.97})。
- 提供命令行工具和 MCP 服务器,适合智能体使用:大模型思考,小模型快速决策。
使用方式: PyPI 包名为 gutfeel(gut 已被占用),导入方式为 import gut。文档包含入门、后端、不确定性、批量提问、异步、精确成本、缓存与可观测性、命令行、MCP 服务器、诚实局限等页面。examples/ 目录展示了相同代码在不同后端上的运行。
适用场景:
- 智能体需要快速判断大量文件、提交或搜索结果,而不是逐个阅读。
- 需要对文本做低成本、低延迟的分类或决策。
- 需要处理不确定性的判断任务。
限制:
- 项目处于 Pre-1.0 阶段,许可证为 Apache-2.0。
- 文档中每个代码块都在测试套件中运行。
- 其他具体限制暂未提供。