メインコンテンツへスキップ

チャット補完

このドキュメントでは、チャット補完 API エンドポイントの詳細な仕様について説明します。このガイドに従うことで、会話型 AI 応答の生成、ストリーミングの管理、および堅牢なアプリケーションを構築するためのモデル固有のパラメータの利用方法を学ぶことができます。このエンドポイントは、インタラクティブなテキストベースの体験を作成するための中核となります。

チャット補完 API を使用すると、大規模言語モデルを活用してさまざまな会話タスクに対応するアプリケーションを構築できます。一連のメッセージを入力として提供すると、モデルはテキストベースの応答を返します。

以下の図は、標準およびストリーミング API 呼び出しの両方におけるリクエストとレスポンスのフローを示しています。

Chat Completions

関連機能については、画像生成および埋め込み API ドキュメントを参照してください。

チャット補完の作成

指定されたチャットの会話に対してモデルの応答を作成します。

POST /api/chat/completions

リクエストボディ

  • model string (required) (default: gpt-3.5-turbo) — 使用するモデルの ID。どのモデルがチャット API で動作するかについての詳細は、モデルエンドポイントの互換性テーブルを参照してください。
  • messages array (required) — これまでの会話を構成するメッセージのリスト。メッセージオブジェクトの構造については、以下を参照してください。
    • message object — 各メッセージオブジェクトには role と content が必要です。
      • role string (required) — メッセージ作成者の役割。system、user、assistant、または tool が指定できます。
      • content string or array (required) — メッセージの内容。これは文字列、またはマルチモーダルモデル用のコンテンツパーツの配列(例:テキストと画像の URL)にすることができます。
      • name string — 参加者のオプションの名前。メッセージの作成者に関するコンテキストをモデルに提供します。
      • tool_calls array — 関数呼び出しなど、モデルによって生成されたツールコール。
      • tool_call_id string — 役割が tool の場合に必須。このメッセージが応答しているツールコールの ID。
  • temperature number (default: 1) — ランダム性を制御します。値を低くすると、ランダム性の低い補完になります。温度がゼロに近づくにつれて、モデルは決定的で反復的になります。範囲:0 から 2。
  • top_p number (default: 1) — ニュークリアスサンプリングにより多様性を制御します。0.5 は、尤度で重み付けされたすべての選択肢の半分が考慮されることを意味します。範囲:0.1 から 1。
  • stream boolean (default: false) — true に設定すると、部分的なメッセージ差分がサーバーセントイベントとして送信されます。ストリームは data: [DONE] メッセージで終了します。
  • max_tokens integer — 生成するトークンの最大数。入力トークンと生成されたトークンの合計長は、モデルのコンテキスト長によって制限されます。
  • presence_penalty number (default: 0) — -2.0 から 2.0 までの数値。正の値は、これまでのテキストに新しいトークンが出現したかどうかに基づいてペナルティを課し、モデルが新しいトピックについて話す可能性を高めます。
  • frequency_penalty number (default: 0) — -2.0 から 2.0 までの数値。正の値は、これまでのテキストにおける既存の頻度に基づいて新しいトークンにペナルティを課し、モデルが同じ行を逐語的に繰り返す可能性を低減させます。
  • tools array — モデルが呼び出す可能性のあるツールのリスト。現在、ツールとしては関数のみがサポートされています。
  • tool_choice string or object — モデルによってどのツールが(もしあれば)呼び出されるかを制御します。'none'、'auto'、'required'、または呼び出す関数を指定するオブジェクトが指定できます。
  • response_format object — モデルが出力しなければならない形式を指定するオブジェクト。{ "type": "json_object" } に設定すると JSON モードが有効になります。

基本的なリクエスト

この例は、モデルとの簡単な会話を示しています。

cURL リクエスト

bash
curl --location 'https://your-aigne-hub-instance.com/api/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "Hello! Can you explain what AIGNE Hub is in simple terms?"
        }
    ]
}'

ストリーミングリクエスト

応答をイベントのストリームとして受信するには、stream パラメータを true に設定します。

cURL ストリームリクエスト

bash
curl --location 'https://your-aigne-hub-instance.com/api/chat/completions' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--header 'Accept: text/event-stream' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "user",
            "content": "Write a short story about a robot who discovers music."
        }
    ],
    "stream": true
}'

レスポンスボディ

標準レスポンス

streamfalse または設定されていない場合、標準の JSON オブジェクトが返されます。

  • role string — このメッセージの作成者の役割。常に 'assistant' です。
  • content string — モデルによって生成されたメッセージの内容。
  • tool_calls array — モデルによって生成されたツールコール(もしあれば)。

標準レスポンスの例

レスポンスボディ

json
{
  "role": "assistant",
  "content": "AIGNE Hub は、さまざまなプロバイダーからの AI モデルとのやり取りを管理する中央集権的なゲートウェイです。API アクセスを簡素化し、請求とクレジットを処理し、使用状況とコストに関する分析を提供し、組織の AI サービスのための一元管理ポイントとして機能します。"
}

ストリーミングレスポンス

streamtrue の場合、API は text/event-stream チャンクのストリームを返します。各チャンクは JSON オブジェクトです。

  • delta object — メッセージ差分のチャンク。
    • role string — 作成者の役割。通常は 'assistant' です。
    • content string — メッセージの部分的な内容。
    • tool_calls array — 部分的なツールコール情報。
  • usage object — 最終チャンクに存在し、トークン使用量の統計情報が含まれます。
    • prompt_tokens integer — プロンプト内のトークン数。
    • completion_tokens integer — 生成された補完内のトークン数。
    • total_tokens integer — リクエストで使用された合計トークン数。

ストリームチャンクの例

イベントストリーム

text
data: {"delta":{"role":"assistant","content":"Unit "}}

data: {"delta":{"content":"734,"}}

data: {"delta":{"content":" a sanitation "}}

data: {"delta":{"content":"and maintenance "}}

data: {"delta":{"content":"robot, hummed..."}}

data: {"usage":{"promptTokens":15,"completionTokens":100,"totalTokens":115}}

data: [DONE]

まとめ

チャット補完エンドポイントは、会話型 AI をアプリケーションに統合するための強力なツールです。ストリーミングやツールの使用を含むさまざまなパラメータを通じて柔軟性を提供し、幅広いユースケースをサポートします。

他の利用可能な API エンドポイントに関する詳細については、以下のドキュメントを参照してください。