テキスト補完(Legacy)
Endpoint
Section titled “Endpoint”POST /v1/completions完全な URL:
https://api.routeapi.ai/v1/completions/v1 を付けずに /completions へアクセスしても受け付けられ、/v1/completions に書き換えられます。
リクエスト例
Section titled “リクエスト例”curl https://api.routeapi.ai/v1/completions \ -H "Authorization: Bearer $ROUTEAPI_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-3.5-turbo-instruct", "prompt": "Write one sentence that explains what an API gateway is:", "max_tokens": 64, "temperature": 0.7 }'例のモデル ID はあくまで一例です。GET /v1/models で Key から補完対応モデルを呼べることを確認してください。
リクエストパラメータ
Section titled “リクエストパラメータ”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | はい | モデル ID。現在のアカウントで利用可能なモデルである必要があります |
prompt | string/array | はい | 補完対象のテキスト。配列を渡すと 1 回のリクエストで複数のプロンプトを送り、プロンプトごとに choices が 1 件返ります |
max_tokens | integer | いいえ | 最大出力 token 数。省略時は上流の既定値に従います |
temperature | number | いいえ | サンプリング温度 |
top_p | number | いいえ | nucleus sampling パラメータ |
n | integer | いいえ | プロンプトごとの補完数 |
stop | string/array | いいえ | カスタム停止シーケンス |
stream | boolean | いいえ | SSE ストリーミング出力を返すか。既定値は false |
suffix | string | いいえ | 補完の後に続く可能性のあるテキスト。コード挿入に対応する上流に転送されます |
presence_penalty | number | いいえ | presence penalty |
frequency_penalty | number | いいえ | frequency penalty |
seed | number | いいえ | ベストエフォートのサンプリングシード。再現性は上流モデル次第です |
user | string | いいえ | エンドユーザー識別子。対応する上流にはそのまま転送されます |
RouteAPI は Chat Completions と同じフィールドモデルでリクエストを解析するため、logprobs は真偽値です。公式の旧 API の整数指定("logprobs": 5)は受け付けられず、400 になります。
prompt のないリクエストは上流で拒否されます。RouteAPI 自身が拒否するのは空文字列の prompt のみで、ルーティング前に 400 を返します。上表以外のフィールド(公式の旧 API にある echo や best_of など)は RouteAPI のリクエストモデルに含まれず、転送されません。
レスポンス例
Section titled “レスポンス例”{ "id": "cmpl_xxx", "object": "text_completion", "created": 1730000000, "model": "gpt-3.5-turbo-instruct", "choices": [ { "text": " An API gateway is a single entry point that routes requests to multiple backend services.", "index": 0, "logprobs": null, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 14, "completion_tokens": 19, "total_tokens": 33 }}生成テキストは choices[].text に入ります。Chat Completions と違い message オブジェクトはありません。finish_reason は stop、length、content_filter のいずれかです。n が 1 より大きい場合やプロンプトが配列の場合は、choices に複数の結果が入ります。
ストリーミング
Section titled “ストリーミング”stream: true を設定すると Server-Sent Events で返します。各チャンクは text_completion オブジェクトで、増分は choices[0].text に入り、data: [DONE] で終わります。
data: {"id":"cmpl_xxx","object":"text_completion","created":1730000000,"model":"gpt-3.5-turbo-instruct","choices":[{"text":" An","index":0,"logprobs":null,"finish_reason":null}]}
data: {"id":"cmpl_xxx","object":"text_completion","created":1730000000,"model":"gpt-3.5-turbo-instruct","choices":[{"text":" API","index":0,"logprobs":null,"finish_reason":null}]}
data: {"id":"cmpl_xxx","object":"text_completion","created":1730000000,"model":"gpt-3.5-turbo-instruct","choices":[{"text":"","index":0,"logprobs":null,"finish_reason":"stop"}]}
data: [DONE]各チャンクの choices[0].text を順に連結してください。message や delta の構造は期待しないでください。上流が使用量を返していない場合、data: [DONE] の前に chat.completion.chunk 形式の最終使用量フレーム(object は chat.completion.chunk、choices は空、usage あり)が追加されます。text が無いフレームは読み飛ばしてください。このエンドポイントは Chat Completions と同じ stream_options を受け付けます。対応チャネルでは "stream_options": {"include_usage": false} を送るとこのフレームを省略できます。使用量はコンソールの使用量ログにも記録されます。
/v1/completions を受け付けるかどうかはモデルとその背後の上流サービス次第で、モデル一覧には反映されません。チャットモデルも旧補完モデルも、一覧では openai エンドポイント種別として表示されます。
- 旧 instruct モデルが一般的な候補です。まず
GET /v1/modelsで Key から呼べるモデル ID を確認し、テストリクエストを 1 回送ってください。 - OpenAI 公式 API が提供するチャットモデルは上流で
/v1/completionsを拒否します。Chat Completions から呼び出してください。 - 補完に対応する上流がない場合、上流のエラーが返ります。request ID からコンソールのログで上流のレスポンスを確認してください(よくあるエラー を参照)。
- チャット、ツール呼び出し、構造化出力、マルチモーダル入力には Chat Completions を使用してください。旧エンドポイントにはこれらの機能がありません。
- 課金はモデルの token 価格に従います。プロンプトと補完の token は上流の使用量から計上され、価格表はチャット呼び出しと同じです。モデル価格を参照してください。
- 上流が token 使用量を返さない場合、RouteAPI がプロンプトと生成テキストから推定するため
usageは必ず入り、課金も通常どおり行われます。