コンテンツにスキップ

テキスト補完(Legacy)

POST /v1/completions

完全な URL:

https://api.routeapi.ai/v1/completions

/v1 を付けずに /completions へアクセスしても受け付けられ、/v1/completions に書き換えられます。

Terminal window
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 から補完対応モデルを呼べることを確認してください。

フィールド型必須説明
modelstringはいモデル ID。現在のアカウントで利用可能なモデルである必要があります
promptstring/arrayはい補完対象のテキスト。配列を渡すと 1 回のリクエストで複数のプロンプトを送り、プロンプトごとに choices が 1 件返ります
max_tokensintegerいいえ最大出力 token 数。省略時は上流の既定値に従います
temperaturenumberいいえサンプリング温度
top_pnumberいいえnucleus sampling パラメータ
nintegerいいえプロンプトごとの補完数
stopstring/arrayいいえカスタム停止シーケンス
streambooleanいいえSSE ストリーミング出力を返すか。既定値は false
suffixstringいいえ補完の後に続く可能性のあるテキスト。コード挿入に対応する上流に転送されます
presence_penaltynumberいいえpresence penalty
frequency_penaltynumberいいえfrequency penalty
seednumberいいえベストエフォートのサンプリングシード。再現性は上流モデル次第です
userstringいいえエンドユーザー識別子。対応する上流にはそのまま転送されます

RouteAPI は Chat Completions と同じフィールドモデルでリクエストを解析するため、logprobs は真偽値です。公式の旧 API の整数指定("logprobs": 5)は受け付けられず、400 になります。

prompt のないリクエストは上流で拒否されます。RouteAPI 自身が拒否するのは空文字列の prompt のみで、ルーティング前に 400 を返します。上表以外のフィールド(公式の旧 API にある echo や best_of など)は RouteAPI のリクエストモデルに含まれず、転送されません。

{
"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 に複数の結果が入ります。

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 は必ず入り、課金も通常どおり行われます。