关于 gut
gut 是一个 Python 库和 MCP 服务,使用小模型进行是非、分类和评分等类型化判断。它可以返回 UNSURE,将不确定的情况交由人工处理。
主要功能
- 01进行是非、类别和评分判断
- 02标记不确定结果供人工审核
- 03批量处理多个条目
- 04配置多种模型后端
- 05通过命令行筛选条目
适用场景
- 01标记可能的垃圾评论
- 02将工单分派给合适团队
- 03按紧急程度排列请求
- 04审核大量文件或搜索结果
MCP 相关
可选的 gutfeel-mcp 软件包提供 MCP 服务,让 Agent 使用 gut 的判断能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx gutfeel-mcpTYPESAFE_API_KEY密钥Key for TypeSafe's Jev, the model asked by default when it is setGUT_BACKENDAnother model: openrouter, ollaya, clm, ollama, openai, openai-decisions, zeroshot or transformersGUT_MODELThe model to ask; required for ollaya, ollama and openaiGUT_BASE_URLThe server's URL, for ollaya, ollama and openaiOPENROUTER_API_KEY密钥Key for Jev through OpenRouter, with GUT_BACKEND=openrouter本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lean | any | 否 | 不确定时不允许选择“倾向于”的方向。 |
| stakes | any | 否 | 模型必须达到的确信程度,答案才算有效。需要 ask_human。 |
| subject | string | 是 | 要判断的文本:电子邮件、评论或差异内容。 |
| question | string | 是 | 关于文本的简短断言,例如 "asks for a refund"。不是开放式问题。 |
| ask_human | boolean | 否 | 允许模型无法判断时返回结果 `unsure`。默认关闭。 |
详细介绍
用一行 Python 做出判断——为 Jev 打造,也能在任何小模型上运行。
在浏览器中试用 → 网站会在页面中运行 gut 的本地模型:无需密钥,无需服务端。
你的代码总会遇到一些并非逻辑判断的问题:这条评论是垃圾信息吗?这张工单归哪个团队负责?有多紧急?Agent 的任务完成了吗? 过去只有三种办法:
- 正则表达式和关键词规则——免费且即时,但只要换种说法就会出错。
- 前沿大模型——什么都能理解,但每次调用要花好几秒和几分钱,还得解析生成的文本。
- 训练分类器——运行成本低,但前提是你已有标注数据、流程和整整一周时间。
现在有第四种办法:专为这类问题打造的小模型。 TypeSafe AI 的
Jev 可以直接回答有类型的问题——给出「是」的概率、选项分布或量表评分——无需生成或解析内容,且只按输入计费。gut 围绕它构建,让它只需一行代码:
import gut
gut.configure(backend=gut.JevBackend()) # or just set TYPESAFE_API_KEY
if gut.likely(comment, "is spam"):
hide(comment)
无需提示词,无需解析,无需阈值——调用处也无需指定模型名称。
三个问题
gut.likely(ticket, "is a bug report") # yes / no
gut.classify(ticket, Team) # which one — an Enum
gut.rate(ticket, ["can wait", "this week", "right now"]) # how much
知道自己何时不知道
正则表达式从不犹豫,大模型也一样。gut 可以:
match gut.likely(email, "the customer threatens to cancel", ask_human=True):
case gut.YES: escalate(email)
case gut.NO: auto_reply(email)
case gut.UNSURE: send_to_a_person(email)
用文字说明要多谨慎——lean="yes"、stakes="high"——gut 会自行计算阈值。
千种对象,一行代码
spam = gut.each(comments).likely("is spam") # one decision per comment, in order
teams = gut.each(tickets).classify(Team)
Jev 会并发处理请求,本地模型会批量运行,并且不会重复询问已缓存的内容。@gut.semantic 对同一对象的多个问题也能做到这一点。
首选 Jev,兼容任意模型
Jev 是 gut 专为其设计的模型,但并非唯一选择:模型通过配置指定,同一行代码也能原样运行在以下任意模型上。
gut.configure(backend=gut.JevBackend()) # TypeSafe AI's Jev
gut.configure(backend=gut.JevBackend.openrouter()) # Jev, through OpenRouter
gut.configure(backend=gut.JevBackend.ollaya("winnow:e4b")) # open decision model, Ollaya
gut.configure(backend=gut.ZeroShotBackend()) # NLI model, on your CPU
gut.configure(backend=gut.TransformersBackend("Qwen/Qwen3-0.6B")) # small LLM, on your machine
gut.configure(backend=gut.OpenAICompatibleBackend( # Ollama, vLLM, llama.cpp
"qwen2.5:1.5b", base_url="http://localhost:11434/v1"))
gut.configure(backend=gut.OpenAICompatibleBackend("gpt-4.1-nano")) # OpenAI
gut.configure(backend=gut.OpenAIDecisionsBackend()) # OpenAI's Decisions API
也可以同时使用多个模型。Cascade 会先询问成本最低的模型,只将它不确定的内容交给下一个模型:
gut.configure(backend=gut.Cascade(
gut.ZeroShotBackend(), # free and local: settles the obvious
gut.JevBackend(), # sees only what the first could not
))
每个答案都是模型自身给出的概率,绝非从文本中解析而来;decision.model 会指出给出答案的模型。你自己的模型也可以作为后端:了解如何编写。
安装
pip install "gutfeel[jev]" # + JevBackend: TypeSafe, OpenRouter or Ollaya
pip install "gutfeel[local]" # + ZeroShotBackend and TransformersBackend (PyTorch)
pip install gutfeel # core: any OpenAI-compatible server; FakeBackend for tests
pip install gutfeel-mcp # + the MCP server, gutfeel-mcp
PyPI 上的包名是 gutfeel(gut 已被占用);导入方式为 import gut。手边没有模型?gut.FakeBackend(answers={"is spam": 0.97}) 可以从固定测试数据中返回答案,供测试使用。
从 Shell 使用,以及用于 Agent
大模型负责思考,小模型负责快速判断。使用 gut 的 Agent 可以通过一条命令判断一千个文件、提交记录或搜索结果,而不必逐一阅读:
git ls-files | gut filter "retries failed requests" --read-files --max-cost 0.50
claude mcp add gut --env TYPESAFE_API_KEY=your-key -- uvx gutfeel-mcp # MCP Registry: io.github.Kungie/gut
npx skills add Kungie/gut --skill gut # teaches a coding agent when to reach for it
文档
文档,每个主题各占一页:快速入门 · 后端 · 了解何时不知道 · 一次提出所有问题 · 异步 · 精确成本 · 缓存与可观测性 · 命令行 · MCP 服务 · 坦诚说明局限。examples/ 中的代码会在每个后端上运行。
状态与许可证
Pre-1.0,Apache-2.0。本文档中的每个代码块都会在测试套件中运行 · 参与贡献
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。