OpenAI API 接続ガイド:Chat Completions 互換とAPIキーの設定

OpenAI Chat Completions 互換方式による大規模言語モデルの呼び出しガイド:インターフェースURL、認証、curl・SDKサンプル、リクエスト/レスポンス構造、ストリーミング、およびエラーコードについて解説。

一、概要

当サイトでは OpenAI Chat Completions(/v1/chat/completions) 形式の互換インターフェースを提供しています。OpenAI公式SDKやOpenAI互換クライアントで動作する既存のコードであれば、リクエストURLを当サイトのゲートウェイ入口に向け、api_key を当サイトの sk- から始まるキーに置き換えるだけで利用可能です。その他の呼び出し方法は変更ありません。

現在利用可能なGPTシリーズのモデルはモデル一覧に準じます(gpt-5.4gpt-5.5gpt-5.4-minigpt-4o など)。完全なリストおよび単価は GET /v1/models で照会できます。

二、インターフェースURL

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

ゲートウェイURL:https://www.relay-api.com。OpenAI互換呼び出しを行う際は、リクエストを POST https://www.relay-api.com/v1 に送信してください。パスはそのまま指定します。

三、認証方法

Authorization: Bearer sk-あなたのAPIキー

「ユーザーセンター → 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-あなたのAPIキー" \
  -d '{
    "model": "gpt-5.4",
    "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-あなたのAPIキー",
)

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

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

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

フィールド必須説明
modelstringはいモデル名(slug)、例:gpt-5.4
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.4",
  "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: 行がチャンクとなります:

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 とモデル名を確認する
429レート制限(レートリミット)超過指数バックオフを用いて再試行する
500サービス内部エラーしばらく待ってから再試行。改善しない場合はサポートへ連絡

エラーレスポンスのボディはすべて {"code": ステータスコード, "message": "エラー内容", "data": null} という構造になっています。

九、互換性についての説明

  • OpenAI SDK(Python / Node.jsなど)は、base_url をカスタマイズすることで利用可能です。
  • LobeChat、ChatBox、NextChat、One APIなど、OpenAI互換のあらゆるクライアントでカスタムAPIURLとして設定可能です。
  • モデル名は GET /v1/models で返されるslugを参照してください。