チャット補完の作成 (非ストリーミング)
このAPIエンドポイントは、指定されたプロンプト(Prompt)に対して、モデルが予測した1つ以上の補完結果(Completion)を返すために使用されます。非ストリーミングAPIでは、完全なレスポンスが生成された後に一度に結果を返します。
- APIエンドポイント:
https://api.codingplanx.ai/v1/chat/completions - HTTPメソッド:
POST - Content-Type:
application/json
リクエストパラメータ
リクエストヘッダー (Headers)
| パラメータ名 | データ型 | 必須 | サンプル値 | 説明 |
|---|---|---|---|---|
| Content-Type | string | はい | application/json | リクエストボディのフォーマット |
| Accept | string | はい | application/json | レスポンスボディのフォーマット |
| Authorization | string | いいえ | Bearer {{YOUR_API_KEY}} | 認証トークン |
リクエストボディ (Body)
| パラメータ名 | データ型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| model | string | はい | - | 使用するモデルID(例: gpt-4o, gpt-3.5-turbo)。 |
| messages | array | はい | - | 対話メッセージのリスト。各オブジェクトには role (system/user/assistant) と content が含まれます。 |
| temperature | number | いいえ | 1 | サンプリング温度 (0〜2)。高いほどランダムな出力になり、低いほど決定論的(固定された出力)になります。 |
| top_p | number | いいえ | 1 | ヌクレアスサンプリング (Nucleus sampling)。確率質量が上位 top_p のトークンのみを考慮します。temperature か top_p のどちらか一方のみを変更することを推奨します。 |
| n | integer | いいえ | 1 | 入力メッセージごとに生成される補完の選択肢の数。 |
| stream | boolean | いいえ | false | ストリーミング転送を行うかどうか。ここでは false に設定する必要があります。 |
| stop | string/array | いいえ | null | APIがトークンの生成を停止するしきい値となるシーケンス(最大4つ)。 |
| max_tokens | integer | いいえ | inf | 生成する最大トークン数。モデルのコンテキスト長によって制限されます。 |
| 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 | いいえ | - | 出力フォーマットを指定します(例: JSONモードを有効にするには { "type": "json_object" })。 |
| tools | array | いいえ | - | モデルが呼び出すことができるツールのリスト(現在サポートされているのは function のみです)。 |
| tool_choice | string/obj | いいえ | auto | モデルがどの関数を呼び出すかを制御します(none/auto/特定の関数を指定)。 |
レスポンスパラメータ
レスポンスボディ (Response Body)
| パラメータ名 | データ型 | 説明 |
|---|---|---|
| id | string | このリクエストの一意の識別子。 |
| object | string | オブジェクトタイプ。常に chat.completion となります。 |
| created | integer | Unixタイムスタンプ(秒)。 |
| choices | array | 補完結果のリスト。 |
| ├─ index | integer | リスト内でのこの結果のインデックス。 |
| ├─ message | object | モデルによって生成されたメッセージ内容。 |
| │ ├─ role | string | ロール。通常は assistant となります。 |
| │ └─ content | string | メッセージの具体的なテキスト内容。 |
| └─ finish_reason | string | 停止理由(例: stop, length, tool_calls)。 |
| usage | object | トークン使用量の統計情報。 |
| ├─ prompt_tokens | integer | 入力プロンプトで消費されたトークン数。 |
| ├─ completion_tokens | integer | 生成された回答のトークン数。 |
| └─ total_tokens | integer | 合計消費トークン数。 |
サンプルコード
リクエスト例 (cURL)
curl --location --request POST 'https://api.codingplanx.ai/v1/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "gpt-4o",
"messages": [
{
"role": "user",
"content": "こんにちは、自己紹介をお願いします。"
}
],
"max_tokens": 1000
}'
レスポンス例
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "こんにちは!私は CodingPlanX が提供するAIアシスタントです。よろしくお願いいたします。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 25,
"total_tokens": 40
}
}
よくある質問 (FAQ)
Q1: JSONモードを有効にするにはどうすればよいですか?
A1: リクエストボディに "response_format": { "type": "json_object" } を設定します。注意: JSONモードを使用する場合、system または user メッセージ内でJSONを出力するようにモデルに明確に指示する必要があります。そうしないと、モデルが空白のコンテンツを無限ループで生成する可能性があります。
Q2: temperature と top_p はどのように選択すべきですか?
A2: 通常、どちらか一方のみを変更することをお勧めします。モデルにより創造性を持たせたい場合は temperature を高くし(例: 0.8)、より厳密で固定された回答が必要な場合は低く設定します(例: 0.2)。
Q3: finish_reason が length なのはなぜですか?
A3: これは、生成された返信が設定した max_tokens の制限に達したか、モデルの最大コンテキスト長を超えたために切り捨てられたことを示しています。
Q4: トークン(Token)とは何ですか? A4: トークンは、モデルがテキストを処理する際の基本単位です。日本語の場合、1文字が約1〜3個のトークンに相当します。APIの課金やコンテキストの制限は、すべてトークン数に基づいています。
Q5: presence_penalty と frequency_penalty の違いは何ですか?
A5: presence_penalty は「新しいトピックについて話すこと」に焦点を当てており、その単語が一度でも出現したかどうかに基づいてペナルティを与えます。一方、frequency_penalty は「単語の繰り返し回数」に焦点を当てており、単語の出現回数が多いほどペナルティが重くなります。
Q6: リアルタイムで文字が生成されるストリーミング効果を得たい場合、どうすればよいですか?
A6: stream パラメータを true に設定してください。なお、ストリーミング転送のレスポンスフォーマットは、このドキュメント(非ストリーミング)とは異なり、Server-Sent Events (SSE) に基づくデータ形式になります。