チャット補完 API ドキュメント (Chat Completions)
このエンドポイントは、指定されたプロンプト(Prompt)に対して、モデルが1つ以上の予測された補完結果を返します。会話履歴に基づいてテキストを生成し、生成プロセスのランダム性、長さ、フォーマットを制御できます。
- インターフェース名:モデル一覧 / チャット補完 (List Models / Chat Completions)
- リクエストメソッド:
GET(注:提供されたデータ定義に基づく) - リクエストURL:
https://api.codingplanx.ai/v1/models - ステータス:リリース済み (Released)
1. リクエストパラメータ
1.1 ヘッダーパラメータ
| パラメータ名 | 必須 | データ型 | サンプル値 | 説明 |
|---|---|---|---|---|
| Content-Type | はい | String | application/json | リクエストボディのフォーマット |
| Accept | はい | String | application/json | レスポンスのフォーマット |
| Authorization | いいえ | String | Bearer {{YOUR_API_KEY}} | 認証用の API キー |
1.2 ボディパラメータ
元の定義は GET ですが、ビジネスロジックに基づき、以下のパラメータは通常 JSON ボディを通じて渡されます。
| パラメータ名 | データ型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| model | string | はい | - | 使用するモデル ID。例:gpt-3.5-turbo。 |
| messages | array | はい | - | これまでの会話に含まれるメッセージのリスト。各メッセージには role と content が含まれます。 |
| temperature | number | いいえ | 1 | サンプリング温度。0 から 2 の間の値。値が高いほど出力がランダムになります。 |
| top_p | number | いいえ | 1 | ヌクレアスサンプリング。0.1 は上位 10% の確率質量を構成するトークンのみを考慮することを意味します。 |
| n | integer | いいえ | 1 | 各入力に対して生成するチャット補完の選択肢の数。 |
| stream | boolean | いいえ | false | ストリーミング出力するかどうか。true に設定すると、メッセージの差分(SSE)が送信されます。 |
| stop | string/array | いいえ | null | ストップシーケンス。モデルがこれらの文字に遭遇すると生成を停止します。 |
| max_tokens | integer | いいえ | inf | 生成する最大トークン(Tokens)数。 |
| presence_penalty | number | いいえ | 0 | -2.0 から 2.0 の間の数値。正の値を指定すると、モデルが新しいトピックについて話す可能性が高くなります。 |
| frequency_penalty | number | いいえ | 0 | -2.0 から 2.0 の間の数値。正の値を指定すると、モデルが同じセリフを繰り返す可能性が低くなります。 |
| logit_bias | object | いいえ | null | 指定したトークンが補完結果に現れる確率を変更します。 |
| user | string | いいえ | - | エンドユーザーを表す一意の識別子。不正利用の監視に役立ちます。 |
| response_format | object | いいえ | - | モデルの出力フォーマットを指定します。例:{ "type": "json_object" } で JSON モードを有効化。 |
| tools | array | いいえ | - | モデルが呼び出せるツール(関数など)のリスト。 |
| tool_choice | object | いいえ | auto | モデルがどの関数を呼び出すかを制御します。 |
2. レスポンスパラメータ
| パラメータ名 | データ型 | 説明 |
|---|---|---|
| id | string | このリクエストの一意の識別子。 |
| object | string | オブジェクトタイプ。通常は chat.completion。 |
| created | integer | リクエストが作成されたタイムスタンプ(秒)。 |
| choices | array | 補完結果を含むリスト。 |
| ├─ index | integer | リスト内におけるこの選択肢のインデックス。 |
| ├─ message | object | モデルが生成した具体的なメッセージ。 |
| │ ├─ role | string | ロール。通常は assistant。 |
| │ └─ content | string | メッセージの本文。 |
| └─ finish_reason | string | 停止理由。stop (正常停止) や length (最大長に到達) など。 |
| usage | object | トークン(Token)の使用状況の統計。 |
| ├─ prompt_tokens | integer | 入力で消費されたトークン数。 |
| ├─ completion_tokens | integer | 出力で生成されたトークン数。 |
| └─ total_tokens | integer | 消費された合計トークン数。 |
3. リクエスト例
成功したリクエストの例
curl --location --request GET 'https://api.codingplanx.ai/v1/models' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Hello there, how may I assist you today?"
}
],
"temperature": 1,
"top_p": 1,
"n": 1,
"stream": false,
"user": "user-1234"
}'
成功したレスポンスの例
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "\r
\r
Hello there, how may I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
4. FAQ (よくある質問)
Q: ドキュメントには GET メソッドと記載されていますが、POST リクエストのように見えます。なぜですか?
A: 標準的な OpenAI の仕様では、補完の作成には通常 POST メソッドが使用されます。ただし、ご提供いただいたメタデータによると、このエンドポイントは GET として定義されています。呼び出しの際は、サーバー側の実際の構成を必ず確認してください。もし GET が機能しない場合は、POST を試してみてください。
Q: temperature と top_p はどのように設定すべきですか?
A: どちらか一方のみを調整することをお勧めします。より正確で決定論的な回答が必要な場合は、temperature を下げてください(例: 0.2)。より多様で創造的な回答が必要な場合は、値を上げることができます。
Q: JSON モードを有効にするにはどうすればよいですか?
A: response_format で { "type": "json_object" } を設定し、さらに messages の中(System または User メッセージ)で、モデルに対して JSON フォーマットを出力するよう明示的に指示する必要があります。そうしないと、モデルが解析エラーを起こしたり、無限に空白を生成したりする可能性があります。
Q: presence_penalty と frequency_penalty とは何ですか?
A:
presence_penalty(存在ペナルティ): すでに出現したトピックに対するペナルティを重視し、モデルが新しい話題について話すことを促します。frequency_penalty(頻度ペナルティ): 繰り返し出現する語彙に対するペナルティを重視し、モデルが短時間で同じ文を繰り返すのを防ぎます。
Q: ストリーミング出力 (stream: true) はどのように機能しますか?
A: ストリーミングを有効にすると、API は Server-Sent Events (SSE) を通じてデータを1文字ずつ返します。各データブロックは data: で始まる JSON 文字列であり、最後に data: [DONE] で終了します。これは長文生成時のリアルタイム表示に非常に役立ちます。