コンテンツにスキップ

LLM API

Markdown で表示

LLM API を使うと、自分のコードから endue の APIキーでモデルを直接呼び出せます。リクエスト形式は OpenAI や Anthropic の API と同じで、呼び出しごとの料金はクレジットから支払われます。

エージェントではなくモデルを使いたいときです。自分のアプリ内でのテキスト生成、すでに OpenAI や Anthropic の API を呼び出しているコード、Claude Code などが該当します。変更するのはベース URL とキーだけで、ほかのコードはそのまま使えます。

プロンプト、メモリ、ツール、コネクターを備えたエージェントに作業を任せたい場合は、代わりにエージェント API で呼び出してください。

  1. アカウント全体のキーを発行します。設定 → アカウント → APIキーで発行し、表示されたらすぐにコピーしてください。キーは一度しか表示されません。エージェントの API セクションで発行したキーはそのエージェント専用で、モデルを直接呼び出すことはできません。

  2. キーはコードに書き込まないでください。ENDUE_API_KEY などの環境変数に入れます。

  3. 次のベース URL を指定して SDK の接続先を endue にし、モデル一覧にあるモデルを呼び出します。

    https://platform.endue.ai/api/v1/llm
import os
from openai import OpenAI
client = OpenAI(base_url="https://platform.endue.ai/api/v1/llm", api_key=os.environ["ENDUE_API_KEY"])
res = client.chat.completions.create(
model="openai/gpt-5.4",
messages=[{"role": "user", "content": "Hello"}],
)
print(res.choices[0].message.content)

設定 → アカウント → LLM API にも同じベース URL と例があり、そのままコピーできます。

GET https://platform.endue.ai/api/v1/llm/models は、呼び出せるすべてのモデルを、コンテキスト長と料金とともに返します。取得にキーは必要ありません。

  • モデル ID は openai/gpt-5.4 や x-ai/grok-4.6 のように、プロバイダー、モデルの順で表します。
  • 料金はトークンあたりのクレジットで、10進数の文字列で表されます。入力は prompt、出力は completion に記載され、キャッシュされた入力を割り引くモデルでは input_cache_read にも記載されます。1クレジットは1米ドルです。
  • 非常に長いプロンプトに高い料金を設定しているモデルもあります。その料金は、適用が始まるプロンプトの長さとともに overrides に記載されます。

同じモデルはモデルページでも一覧できます。

"stream": true を指定します。回答は OpenAI のチャンク形式の Server-Sent Events として届き、data: [DONE] で終わります。[DONE] の直前のチャンクには、その呼び出しのコストを含む usage が入っています。

  1. モデルを実行する前に、endue はその呼び出しでかかりうる最大額(プロンプトと、max_tokens 分の出力)をまかなえるだけのクレジットを確保します。残高がそれより少ない場合、モデルは呼び出されず、402 が返ります。

  2. 呼び出しが終わると、実際にかかった分だけが請求され、確保していた残りは残高に戻ります。

  3. レスポンスで請求額がわかります。usage.cost がこの呼び出しで差し引かれたクレジットで、問い合わせが必要な場合は X-Endue-Request-Id ヘッダーで呼び出しを特定できます。

max_tokens を省略し、残高がモデルの最大出力長をまかなえない場合は、残高でまかなえる長さまで max_tokens を下げて呼び出します。ただし、その長さが1,024トークン以上であることが条件で、それを下回る場合は 402 が返ります。

LLM API の呼び出しは、購入クレジットとプロモーションクレジットからのみ支払われます。プランに含まれる利用枠はエージェント用で、ここでは使われません。呼び出しは使用量ダッシュボードの利用元タブに LLM API として表示されます。

同じベース URL は、Anthropic Messages 形式も受け付けます。Anthropic SDK と Claude Code はベース URL に /v1/messages を自動で付け加えるので、設定は上のタブにある2行だけです。

  • キーは x-api-key と Authorization: Bearer のどちらで送っても構いません。
  • Claude のモデル名は、Anthropic で指定するときと同じ書き方(claude-sonnet-4-5、または claude-sonnet-4-5-20250929 のような日付付きの名前)で使えます。ただし、そのモデルがモデル一覧に載っている必要があります。モデル一覧の ID もそのまま使え、Claude 以外のモデルも呼び出せます。
  • ストリーミングは Anthropic のイベント形式、エラーは Anthropic のエラー形式で返ります。
  • /v1/messages/count_tokens は、入力トークン数の推定値を返します。課金はされません。また、トークナイザーで数えた正確な値ではなく、概算です。

エラーは、呼び出した形式に合わせた構造で返ります。OpenAI 形式なら {"error": {…}}、Anthropic 形式なら {"type": "error", "error": {…}} です。

ステータス原因対処
400リクエストの形式が正しくない、n が1より大きい、またはモデルが入力を拒否したリクエストを修正します。何が問題かはメッセージに示されます
401キーがない、無効化されている、または間違っているキーと、その送り方を確認します
402クレジット残高が呼び出しをまかなえない(insufficient_credits、Anthropic 形式では billing_error)クレジットを購入するか、max_tokens を下げます
403キーが1つのエージェント専用になっているアカウント全体のキーを発行します
404モデル一覧にないモデルを指定した/models にある ID を選びます
429リクエストが多すぎるRetry-After に示された秒数だけ待ちます
502モデルプロバイダー側でエラーが発生した再試行します
503課金処理またはモデル一覧が一時的に利用できない。モデルは呼び出されておらず、請求も発生していないしばらくしてから再試行します
  • 呼び出せるのは、モデル一覧にあるモデルだけです。
  • 対応している形式は、OpenAI Chat Completions と Anthropic Messages の2つです。埋め込み、画像、音声、Responses のエンドポイントはありません。
  • n は1でなければなりません。
  • 標準のリクエストに含まれないフィールド(ほかのモデルへのフォールバックリスト、プロバイダーのルーティング、プラグインなど)は無視されます。Anthropic 形式では、Web 検索などのサーバーツールは拒否され、top_k は無視されます。
  • プランの利用枠は使われません。呼び出しには、購入クレジットかプロモーションクレジットが必要です。
  • 1つのエージェント専用のキーでは、モデルを呼び出せません。
  • 呼び出しは1分あたり100回までで、キー単位とアカウント単位の両方で数えます。リクエストボディの上限は8 MB です。
  • count_tokens の値は推定値です。