OpenAI API 接続ガイド:Chat Completions 互換呼び出しとキー設定

OpenAI Chat Completionsの互換方法で当サイトの大規模言語モデルを呼び出し:インターフェースアドレス、認証、curl・SDKサンプル、リクエスト/レスポンスフィールド、ストリーミング・一般的なエラーコード。

一、概要

当サイトでは OpenAI Chat Completions(/v1/chat/completions) 形式の互換インターフェースを提供しています。OpenAI公式SDKやOpenAI互換クライアントですでに動作しているコードであれば、リクエスト先を当サイトのゲートウェイのOpenAI入口に変更し、api_key をサイト内で発行した sk- キーに置き換えるだけで、その他の呼び出し方法を変更することなくご利用いただけます。

現在利用可能なGPTシリーズのモデルは、モデルプラットフォームに準拠しています(例:gpt-5.5、gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna など)。詳細なリストと単価は GET /v1/models からご確認ください。

二、インターフェースアドレス

メソッドパス説明
POST/v1/chat/completionsチャット補完(非ストリーミング / ストリーミング)、リクエストボディはOpenAIの仕様に準拠
GET/v1/modelsモデルと単価のリスト(認証不要)

ゲートウェイアドレス:https://www.relay-api.com。OpenAI互換で呼び出す場合は、リクエストを POST https://www.relay-api.com/v1 へ送信してください(パスはそのまま指定してください)。

三、認証方式

Authorization: Bearer sk-あなたのキー

「ユーザーセンター → APIキー」から sk- で始まるキーを作成してください。OpenAI公式と同じ認証ヘッダーを使用するため、SDKが自動的に Authorization ヘッダーを付与します。

四、クイックスタート

4.1 curl(非ストリーミング)

curl -X POST https://www.relay-api.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-あなたのキー" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "system", "content": "あなたは親切なアシスタントです。"},
      {"role": "user", "content": "自己紹介を3文でしてください"}
    ],
    "temperature": 0.7,
    "max_tokens": 512
  }'

4.2 OpenAI SDK(Python)

from openai import OpenAI

client = OpenAI(
    base_url="https://www.relay-api.com/v1",
    api_key="sk-あなたのキー",
)

resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "こんにちは"}],
)
print(resp.choices[0].message.content)

base_url を上記のOpenAI入口に設定し、api_key を書き換えるだけで、その他の呼び出し方法は公式SDKと全く同じです。

五、リクエストパラメータ

フィールド型必須説明
modelstringはいモデルスラグ(例:gpt-5.5)
messagesarrayはいメッセージリスト、要素は {role, content}。roleは system / user / assistant を指定
temperaturenumberいいえサンプリング温度、デフォルトは 1.0
top_pnumberいいえ核サンプリング、デフォルトは 1.0
max_tokensintいいえ最大出力トークン数
streamboolいいえストリーミングの有無、デフォルトは false
stopstring / arrayいいえ停止シーケンス
presence_penalty / frequency_penaltynumberいいえ繰り返しペナルティ、範囲 -2~2

六、レスポンス構造

{
  "id": "chatcmpl-123456",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "gpt-5.5",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "こんにちは!お会いできて光栄です。"},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 12,
    "total_tokens": 30
  }
}
フィールド説明
id今回の補完処理の一意ID
choices[].messageアシスタントの回答(contentがテキスト内容)
choices[].finish_reason終了理由:stop / length / content_filter
usage.prompt_tokens入力トークン数(課金基準)
usage.completion_tokens出力トークン数(課金基準)
usage.total_tokens総トークン数

七、ストリーミング出力

リクエストボディに "stream": true を追加するとSSEストリームが返されます。各 data: 行が1つのチャンクとなります:

data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}]}

data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"content": "こんにちは"}, "finish_reason": null}]}

data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}

data: [DONE]

クライアント側で各チャンクの choices[0].delta.content を結合することで完全な回答が得られます。[DONE] を受信するとストリーム終了です。OpenAI SDKで stream=True を指定した場合、これらのイベントは自動的に処理されます。

八、一般的なエラーコード

HTTPステータス意味推奨される対応
400リクエストパラメータが不正(モデルが存在しない、messagesが空など)リクエストボディのフィールドを確認
401APIキーが無効または未指定Authorizationヘッダーとキーの形式を確認
403キーが停止中、残高不足、または権限不足チャージまたはキーの権限を確認
404パスまたはモデルが存在しないbase_urlとmodel名を再確認
429レート制限超過指数バックオフでリトライ
500サーバー内部エラー時間を置いてリトライ、継続する場合はサポートへ連絡

エラーレスポンスは一律で {"code": ステータスコード, "message": "エラー内容", "data": null} 構造となります。

九、互換性についての補足

  • OpenAI SDK(Python / Node.js等)を base_url カスタム設定で接続可能です。
  • OpenAI互換の各種クライアント(LobeChat、ChatBox、NextChat、One API等)でカスタムAPIアドレスを設定可能です。
  • モデル名は GET /v1/models で返されるスラグを使用してください。

Base URL について:当サイトは /v1beta/models/... と /v1beta/v1beta/models/...(および /v1/... と /v1/v1/...)を併用可能です。そのため、クライアント側が /v1 や /v1beta を自動補完する場合でも呼び出しに影響はありません。Base URLはドメインルート、または /v1beta を含むアドレスのどちらでも利用可能です。モデルIDはコントロールパネルの「トークン」ページ右上「モデルID」からコピーしてご確認ください。