Inferrail について
Inferrailは、エージェントの支出を把握したい開発者向けのセルフホスト型AIゲートウェイ兼コスト追跡ツールです。作業タグ別に費用を集計し、予算を適用します。レシートにはプロンプトや応答本文を保存しません。
主な機能
- 01モデル、ルート、タグ別のコスト集計
- 02実行単位の支出予算
- 03超過するリクエストを転送前に拒否
- 04SQLiteまたはJSONLへのローカル保存
- 05読み取り専用MCPツール
活用シーン
- 01ワークフローや顧客別のモデル費用比較
- 02エージェント実行の支出上限設定
- 03ダッシュボードでのリクエスト監視
- 04エージェントによるローカル支出記録の照会
MCP 対応
stdioのMCPサーバーが、ローカルレシートを使った支出とヘルス状態の読み取り専用ツールを提供します。推論の実行やファイルへの書き込みは行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx inferrailINFERRAIL_RECEIPTS_PATHAbsolute path to your Inferrail receipts file (JSONL or SQLite). Used when a tool call gives no receipts_path. Default: ./inferrail-receipts.jsonlローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
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 アプリ内で、1 回の実行を保護します。 設定ファイルも 別のターミナルも必要ありません。
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
},
)
呼び出しは Live Feed に表示され、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 が見つからない場合は、環境が有効になっていないか、別の Python に pip でインストールされています。詳しくは
docs/self-hosting.md をご覧ください。
- 作業単位あたりのコスト。 任意の属性(
customer、workflow、work_idなど)を呼び出しに付与できます。ダッシュボードとinferrail report --by <tag>は、それらのタグごとに既知のコストを集計し、inferrail work <id>は個々のジョブを表示します。 - 1 回のエージェント実行に対する金額ベースの予算。 ヘッダーで指定できます。並列呼び出しでも安全に共有され、予算を超える呼び出しはプロバイダーに到達する前に HTTP 402 で拒否されます。グローバル、プロジェクト単位、日次、月次の予算にも対応しています。レシピ。
- 実験的機能:支払いを行うエージェントにも同じ予算を適用。 ジョブが x402 経由で何かを購入する場合(有料 API、データ、他のエージェントなど)、1 つのジョブ予算でモデル呼び出しと購入の両方をカバーできます。サブエージェントには上限付きの割り当てが渡され、予算に収まらない購入は署名される前に拒否されます。支払い用キーがエージェントに渡ることはありません。Python ランタイムに加えて、
@x402/fetch用の TypeScript アダプターもあります。例(ローカルでの実証のみ。メインネットでは動作しません)。 - 信頼できる数値。 コストが記録されるのは、プロバイダーから使用量が報告され、料金が登録されている場合に限られます。それ以外は推測した
$0ではなく、unknownになります。 - ローカルの記録。 レシートは、マシン上の SQLite または JSONL ファイルに保存されます。Inferrail アカウントやホスト型サービスは関与しません。
- エージェントに質問。 読み取り専用の MCP サーバーに「work contract-review-42 のコストはいくらですか?」のような質問をできます。
プライバシーの境界
| 場所 | 参照または保存される内容 |
|---|---|
| お使いのプロバイダー | Inferrail を介さない場合とまったく同じ完全なリクエスト。プロバイダー独自のポリシーが適用されます。 |
| ゲートウェイのメモリ内 | お使いのプロバイダーキー(プロバイダー独自の環境から取得)と、転送するプロンプトおよび応答。 |
| ディスク上のレシート | プロバイダー、モデル、トークン使用量、適用された料金とコスト、ステータス、タイミング、および送信したアトリビューションタグ。 |
| レシートに含まれないもの | プロンプトと応答の本文。 |
アトリビューションタグは送信されたとおりに保存されるため、識別子を使用し、秘密情報やメッセージ内容を含めないでください。inferrail verify-payload-free は実際のレシートスキーマを表示し、カナリアテストではメッセージ本文がレシートに渡らないことを確認します。どちらもセキュリティ監査ではありません。オプションの使用状況ビーコンは、エンドポイントが設定されていない限り何も送信しません(詳細)。これらすべてをご自身で確認する方法:docs/PRODUCT.md。
仕組み
ゲートウェイは、model に応じて各リクエストを設定済みのプロバイダーにルーティングし、適用対象の予算を確認してから呼び出しを転送し、リクエストごとに 1 つのレシートを書き込みます。これには、予算によって拒否されたリクエストも含まれます。レポート、ダッシュボード、MCP ツールはすべて、これらのレシートを読み取ります。詳細:docs/ARCHITECTURE.md。
MCP
inferrail mcp は、ローカルのレシートを参照する読み取り専用ツールを 2 つ備えた 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パーツ)は、OpenAI 互換プロバイダーに転送されます。予算を設定している場合、 画像ごとに固定の 3,000 トークン分の推定値が予約されます。実際のコストは、プロバイダーから 報告された使用量に基づきます。 - 非対応: OpenAI Responses API、埋め込み、画像生成、オーディオと Realtime API、バッチ、 Gemini および Bedrock のネイティブ API には対応していません。ゲートウェイが 使用量を計算できないリクエストフィールドは、明確なエラーを返して拒否され、 暗黙のうちに破棄されることはありません。
- 対象範囲: 実行中のゲートウェイを経由した呼び出しのみがカウントされます。 プロバイダーアカウント上のすべての呼び出しが対象になるわけではありません。
正確な仕様と対象外の機能:docs/PRODUCT.md。
本番環境での利用をお考えですか? 製品でモデル呼び出しに実費がかかるエージェントのジョブを 実行している場合は、お客様のワークロードに合わせた Inferrail のセットアップと運用を お手伝いできます。 本番環境セットアップを依頼する 際に、ジョブの内容をお知らせください。
実験的な機能
これらは上記のゲートウェイとは別の機能であり、ゲートウェイの利用には必要ありません。
- AP 請求書例外からの復旧(実験的):請求書抽出で発生した例外 1 件について、再試行または人による確認を判断し、記録します。
inferrail ap demoをお試しください。ドキュメント。 - ホスト型トライアル(プレビュー):短期間利用できるホスト型ゲートウェイです。 tryinferrail.com/try で利用できます。実際のキーを追加すると、 ホストされたプロセスがそのキーを保持します(キーの取り扱い)。
- Inferrail Hosted(実験的な料金体系):同じ実行単位の予算をお客様に代わって実行するため、多数のエージェントやマシンで 1 つの台帳を共有できます。月 250 回の実行までは無料で、その後は x402 経由で USDC のプリペイドクレジットを利用できます。 プロバイダーキーはお客様ご自身でご用意ください。 ページ · クイックスタート · エージェント向け:llms.txt · マルチエージェントの例。
- Work Economics と Economic Authority(実験的、ホスト型、Base Sepolia テストネットのみ): Work Economics のドキュメント · Economic Authority のドキュメント · 例。
ドキュメント
- AI エージェントの 1 回の実行にドル単位の予算を設定する
- 統合:SDK、フレームワーク、帰属、MCP、音声
- セルフホスト:インストール、設定、ストレージ、予算、ダッシュボード
- 製品の対象範囲 と アーキテクチャ
- openapi.json、config.schema.json、llms.txt
貢献、セキュリティ、ライセンス
質問やバグの報告:GitHub の Issues。
セキュリティまたはプライバシーの脆弱性:SECURITY.md の説明に従って、
非公開で報告してください。貢献方法:CONTRIBUTING.md
(pytest の実行に API キーやネットワークは不要です)。ライセンス:Apache-2.0。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。