关于 Inferrail
Inferrail 是可自托管的 AI 网关与成本分析工具,面向需要追踪 Agent 支出的开发者。它按工作标签统计费用、执行预算限制,并且收据不保存提示词或回复内容。
主要功能
- 01按模型、路由和标签统计成本
- 02为运行设置支出预算
- 03超预算请求在转发前拒绝
- 04本地保存 SQLite 或 JSONL 收据
- 05提供只读 MCP 查询工具
适用场景
- 01比较不同工作流或客户的模型成本
- 02限制单次 Agent 运行的支出
- 03通过仪表板查看实时请求
- 04让 Agent 查询本地支出记录
MCP 相关
通过 stdio 提供只读 MCP 服务,使用本地收据回答支出和健康状态查询;不运行推理或写入文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| by | string | 否 | |
| since | any | 否 | |
| until | any | 否 | |
| receipts_path | any | 否 |
详细介绍
了解 AI 工作的成本。
无需留存它说过的话。
Inferrail 是一个由你自行运行的网关,位于你的应用与 OpenAI 或 Anthropic 之间。 它会显示每项 AI 任务的成本,拦截会使任务超出支出限额的调用, 并且不会将提示词或响应复制到记录中。
快速开始 · 数据去向 · 工作原理 · 文档 · tryinferrail.com
Inferrail 网关与仪表板的一次真实运行,使用本地替代模型:无需 API 密钥,也不会产生服务提供方费用。录制方式
开发者预览版。 以下所有功能均已实现并经过测试。 CLI 标志、配置和收据字段在 1.0 版本发布前仍可能变更。
快速开始
需要 Python 3.11+。
在 Python 应用中保护一次运行。 无需配置文件,也无需 打开第二个终端:
pip install inferrail
export OPENAI_API_KEY=sk-...
import inferrail
from openai import OpenAI
base_url = inferrail.start() # the gateway, on a background thread in this process
client = OpenAI(base_url=base_url, api_key="unused")
client.chat.completions.create(
model="gpt-4o-mini", # example: any model your account can use (`inferrail models` lists them)
max_tokens=200,
messages=[{"role": "user", "content": "Summarize this contract."}],
extra_headers={
"X-Inferrail-Attribute-Work-Id": "contract-review-42", # the run
"X-Inferrail-Budget-Usd": "0.50", # its dollar ceiling
},
)
所有携带相同运行 ID 的调用都会共享该预算,包括并行调用。任何 会使运行超出预算的调用,都会在到达 OpenAI 前收到 HTTP 402。 然后:
inferrail work contract-review-42
即可查看这次运行的成本。
Inferrail 不会选择模型:你发送的模型 ID 会原样传递给
服务提供方。美元预算需要设置该模型的价格;inferrail models 会显示已有价格的模型,而 inferrail.start(pricing=...)
可为新模型添加价格。框架示例(LangChain、LangGraph、
OpenAI Agents SDK、CrewAI、Haystack、LlamaIndex、Microsoft Agent Framework):
示例。
离线试用。 无需 API 密钥、不会发起网络调用,也不会产生服务提供方费用:
pip install inferrail
inferrail demo
inferrail report --by customer --receipts ./inferrail-demo-receipts.jsonl
该演示会将预设请求通过真实引擎发送到模拟服务提供方,使用标记为
DEMO 的虚构价格,并按客户打印费用明细
(录制)。
作为独立进程运行,并使用本地仪表板。 如果要让多个应用共用 一个网关,或实时监控调用,请在网关的终端中设置密钥:
export OPENAI_API_KEY=sk-... # and/or ANTHROPIC_API_KEY
inferrail serve --quickstart --app-mode
打开它显示的 Dashboard: URL,然后将应用指向网关并为工作添加标签:
from openai import OpenAI
# api_key is a placeholder: your provider key stays in the gateway
client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="unused")
client.chat.completions.create(
model="gpt-4o-mini", # example model id; Inferrail passes yours through
messages=[{"role": "user", "content": "Summarize this contract."}],
extra_headers={
"X-Inferrail-Attribute-Customer": "acme",
"X-Inferrail-Attribute-Work-Id": "contract-review-42",
"X-Inferrail-Budget-Usd": "0.50", # optional: a dollar ceiling for this work
},
)
调用会显示在实时动态中,工作页面会汇总
contract-review-42 的费用。Anthropic SDK 的用法相同,只需设置
base_url="http://127.0.0.1:8000"(不带 /v1)。更多客户端和
框架请参阅:docs/integrations.md。
设置 Python,或解决 inferrail: command not found
python3 -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install inferrail
如果仍然找不到 inferrail,说明环境未激活,或 pip 将其安装到了
另一个 Python 环境中。更多信息请参阅
docs/self-hosting.md。
- 每单位工作的成本。 使用任意属性标记调用(
customer、workflow、work_id等)。仪表板和inferrail report --by <tag>会按这些标签汇总已知成本,inferrail work <id>则显示单项任务。 - 单次 Agent 运行的美元预算。 在请求头中声明预算。并行 调用可安全共享预算,超出预算的调用会在到达服务提供商之前收到 HTTP 402 响应。还支持全局、项目、每日和每月 预算。配方。
- 实验性:为付费 Agent 提供相同预算。 如果任务还会通过 x402 购买
服务(付费 API、数据、其他 Agent),单个任务预算可同时覆盖模型调用和购买。子 Agent 会获得有上限的预算份额,不符合预算的购买
会在签名前被拒绝。付款方密钥不会暴露给 Agent。提供 Python 运行时,以及适用于
@x402/fetch的 TypeScript 适配器。 示例(本地验证;不涉及主网)。 - 可信赖的数据。 只有在服务提供商报告用量且已有价格记录时,才会记录成本。否则标记为
unknown,绝不会猜测为$0。 - 本地记录。 收据以 SQLite 或 JSONL 文件的形式保存在你的设备上。 无需 Inferrail 账户,也不涉及托管服务。
- 向 Agent 提问。 只读 MCP 服务可回答 “工作 contract-review-42 的成本是多少?” 之类的问题。
隐私边界
| 位置 | 可查看或保留的内容 |
|---|---|
| 你的服务提供商 | 完整请求,与未使用 Inferrail 时完全相同,并遵循服务提供商自身的政策。 |
| 网关,在内存中 | 你的服务提供商密钥(从其自身环境中读取),以及它转发的提示词和响应。 |
| 收据,保存在你的磁盘上 | 服务提供商、模型、令牌用量、所用价格和成本、状态、时间,以及你发送的归因标签。 |
| 收据中不包含 | 提示词和响应正文。 |
归因标签会按原样存储,因此请使用标识符,并避免在其中放入机密和消息内容。inferrail verify-payload-free
会打印实时收据架构,金丝雀测试则会检查消息
正文是否会进入收据。这两者都不属于安全审计。除非配置了端点,否则可选的
用量信标不会发送任何内容
(详情)。如何自行检查这些内容:
docs/PRODUCT.md。
工作原理
网关根据 model 将每个请求路由到已配置的服务提供商,
检查适用的预算,转发调用,并为每个请求写入一条收据,包括被预算拒绝的请求。报告、仪表板和 MCP 工具都会读取这些
收据。详情:docs/ARCHITECTURE.md。
MCP
inferrail mcp 是一个通过 stdio 运行的 MCP 服务,提供两个用于读取
本地收据的只读工具:get_spend(按服务提供商、
模型、路由或任意标签(如 work_id)分组的已知成本和令牌)和 get_health。它们不会
运行推理或写入文件。
claude mcp add inferrail \
-e INFERRAIL_RECEIPTS_PATH=/absolute/path/to/inferrail-receipts.jsonl \
-- uvx --with "mcp>=2.0" inferrail mcp
其他客户端,以及 --app-mode 会将收据保存到何处:
docs/integrations.md。
当前支持情况
- 端点:
POST /v1/chat/completions(兼容 OpenAI)和POST /v1/messages(兼容 Anthropic),支持流式传输和工具调用;此外还提供GET /v1/models,供需要先列出模型的客户端使用。任何允许设置基础 URL 并发送这些请求格式的客户端都可以使用。 - **提供商:**OpenAI、Anthropic,以及与其中任一方兼容的端点。内置价格涵盖 OpenAI 和 Anthropic 模型。其他端点 需要在配置中声明价格,否则其费用将保持未知。
- 聊天消息中的图像(
image_url部分,例如浏览器 Agent 的 截图)会转发给兼容 OpenAI 的提供商。在预算中,每张图像会预留固定的 3,000 个 Token 估算额度;实际 费用以提供商报告的用量为准。 - **不支持:**OpenAI Responses API、嵌入、图像 生成、音频和 Realtime API、批处理,以及 Gemini 或 Bedrock 原生 API。网关无法核算的请求 字段会被明确报错拒绝, 绝不会静默丢弃。
- **范围:**只统计通过运行中的网关发出的调用, 不统计你提供商账户上的所有调用。
准确的支持范围和非目标:docs/PRODUCT.md。
**要在生产环境中运行吗?**如果你的产品会运行需要在模型调用上花费 实际资金的 Agent 作业,我可以协助你在自己的工作负载上配置 Inferrail,并确保它持续正常运行。 提交生产环境配置申请 并说明你的作业是什么样的。
实验性功能
这些功能独立于上述网关,无需使用网关。
- AP 发票异常恢复(实验性):针对单个发票提取异常,决定并记录重试或人工审核。试试
inferrail ap demo。文档。 - 托管试用版(预览):短期托管网关,位于 tryinferrail.com/try。如果你在此处添加真实 密钥,托管进程会持有该密钥(密钥处理)。
- Inferrail Hosted(实验性定价):为你运行相同的单次运行预算,让多个 Agent 和机器共用一个账本。每月免费 250 次运行, 之后通过 x402 使用 USDC 预付额度。请自备提供商密钥。 页面 · 快速入门 · 面向 Agent:llms.txt · 多 Agent 示例。
- Work Economics 和 Economic Authority(实验性、托管,仅限 Base Sepolia 测试网):Work Economics 文档 · Economic Authority 文档 · 示例。
文档
- 为单次 AI Agent 运行设置美元预算
- 集成:SDK、框架、归因、MCP、语音
- 自行托管:安装、配置、存储、预算、仪表板
- 产品范围和架构
- openapi.json、config.schema.json、llms.txt
贡献、安全与许可证
问题和 Bug:GitHub issues。
安全或隐私漏洞:请按SECURITY.md中的说明私下报告。贡献:CONTRIBUTING.md
(pytest 无需 API 密钥或网络)。许可证:Apache-2.0。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。