コンテンツにスキップ

Models

連携

言語モデルと通信するツールのほとんどは、すでに 2 つのワイヤフォーマットのどちらかに対応しています。Grafilab は 1 つのホストから両方を提供するので、エディタやチャット UI、SDK を Grafilab に向ける作業はたいてい 2 つの設定だけで済みます。ベース URL と API キーです。

https://llm.grafilab.ai は、同じカタログ、同じキー、同じウォレットに対して 2 つのリクエスト形式を公開しています。

  • OpenAI chat completions — POST /v1/chat/completions に加えて、埋め込み、画像、動画、モデル一覧。多くのツールが「OpenAI 互換」や「カスタム OpenAI エンドポイント」と呼ぶのはこれです。
  • Anthropic messages — POST /v1/messages。Claude Code と Anthropic SDK が使います。

どちらを使っても、呼び出すモデル ID は同じ、消費するクレジット残高も同じで、使用状況はリクエストを認証したキーに紐づいて記録されます。ツールがすでに対応している形式を選んでください。ツールが特定の形式を要求しない限り、一方をもう一方より優先する利点はありません。

ツールが求めるベース URL はどちらか

Section titled “ツールが求めるベース URL はどちらか”

最もよくある間違いは /v1 を付けるか付けないかです。ルールは単純で、OpenAI 形式のクライアントはすでに /v1 で終わるベースにパスを追加し、Anthropic 形式のクライアントは自分で /v1/messages を追加します。

Your tool speaks…Base URLNotes
OpenAI (chat completions, embeddings, images, videos, SDKs)https://llm.grafilab.ai/v1Clients append /chat/completions, /models, and so on.
Anthropic (Messages API, Claude Code, Anthropic SDK)https://llm.grafilab.aiClients append /v1/messages themselves — do not add /v1.

このサイトで扱うツールの場合は次のとおりです。

ツール形式貼り付ける値
CursorOpenAIhttps://llm.grafilab.ai/v1
ClineOpenAI(Anthropic も利用可)https://llm.grafilab.ai/v1
Claude CodeAnthropichttps://llm.grafilab.ai
Open WebUIOpenAIhttps://llm.grafilab.ai/v1
OpenAI SDK(Python、TypeScript)OpenAIhttps://llm.grafilab.ai/v1
Anthropic SDKAnthropichttps://llm.grafilab.ai
その他の OpenAI 互換ツールOpenAIhttps://llm.grafilab.ai/v1
  • A Grafilab API key. In the console open API (https://app.grafilab.ai/api) and click Generate New Key — see API Keys.

ツールごとに別のキーを作り、そのツールの名前を付けてください。使用状況は各リクエストを認証したキーに対して記録されるので、ツールごとに 1 つのキーにしておけばキーごとの使用状況がそのままツールごとのコスト内訳になります。また、あるツールのアクセスを取り消しても他のツールには影響しません。

OpenAI 互換 API はキーを Authorization: Bearer から読み取ります。Anthropic 互換 API は x-api-key と Authorization: Bearer のどちらも受け付けるので、片方しか用意していないツールでも動作します。

The model catalog is live, so list it rather than copying ids from a page. Every entry’s id is the exact string to use in any tool or SDK.

Terminal window
curl https://llm.grafilab.ai/v1/models \
-H "Authorization: Bearer $GRAFILAB_API_KEY" | jq -r '.data[].id'

The same ids appear as cards in the Playground, with context size and prices.

モデル一覧は OpenAI 互換 API にのみあります。ツールが Anthropic 形式で Grafilab と通信する場合でも、カタログの一覧は GET /v1/models と Bearer トークンで取得し、使いたい id をツールに貼り付けてください。

ツールの設定に触れる前に、ターミナルからキーと URL を確認してください。curl が通るなら、その後の失敗はアカウントではなくツールの設定が原因だとわかります。

ターミナルウィンドウ
curl https://llm.grafilab.ai/v1/chat/completions \
-H "Authorization: Bearer $GRAFILAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grafilab/qwen3.6-flash",
"messages": [{"role": "user", "content": "Say hi in five words."}]
}'

max_tokens は /v1/messages では必須、/v1/chat/completions では任意です。どちらの呼び出しも content または choices フィールドを持つ JSON ボディを返すはずです。401 はキーの文字列が誤っているか余分な空白が混じっていること、404 はモデル ID がカタログの id と一致していないこと、429 は送信が速すぎるのではなくクレジット残高が空であることを意味します。

Anthropic 互換 API が対応していないこと

Section titled “Anthropic 互換 API が対応していないこと”

/v1/messages は Messages プロトコルのサブセットを実装しています。コーディングエージェントやチャットクライアントには十分ですが、いくつかの点で Anthropic 自身のエンドポイントとは挙動が異なります。

  • サーバーサイドツールは拒否されます。 web_search_*、bash_*、および type が custom 以外のツールは、黙って落とされるのではなく 400 が返ります。未知のコンテンツブロック型や未知のメッセージロールも同様です。
  • 5 つのフィールドは受け付けられますが無視されます: top_k、thinking、output_config、context_management、そして現れる場所を問わず cache_control。これらを含むリクエストは成功しますが、フィールドは何の効果も持ちません。
  • キャッシュ書き込みは報告されません。 モデルが対応していればプロンプトキャッシュ自体は機能し、キャッシュされた入力は usage.cache_read_input_tokens に現れますが、usage.cache_creation_input_tokens は常に 0 です。
  • usage.input_tokens はキャッシュされたトークンを含みません。Anthropic の慣例に従っています。
  • モデル一覧はありません。 OpenAI 互換 API の GET /v1/models を使ってください。
  • anthropic-version は読み取られません。 送っても害はなく、省略しても構いません。
  • ストリーミングに終端フレームはありません。 シーケンスは message_stop で終わり、最初のフレームより後で失敗した場合は HTTP 200 のまま event: error としてインバンドで届きます。

対応するコンテンツブロックは、ユーザーのターンでは text、image、tool_result、アシスタントのターンでは text、tool_use、thinking、redacted_thinking です。それ以外は 400 を返します。Claude Code のページでは、これらのそれぞれが実際にどんな症状として現れるかを対応づけています。