コンテンツへスキップ
日本語

Chat Completions 対話インターフェース

POST /v1/chat/completions の最小リクエスト、よく使うフィールド、レスポンスの読み取り、マルチターン対話の書き方。

OpenAI 互換クライアントを使う場合、または既に chat.completions.create のコードがある場合は、このインターフェースから始めます。完全なアドレスは https://1zheai.com/v1/chat/completions です。SDK の Base URL は /v1 まで記入します。

まずターミナルで ONEZHE_API_KEY をこのサイトのキーに設定します。以下のモデルは利用可能なモデル一覧に存在している必要があります。

bash
curl --fail-with-body --connect-timeout 10 --max-time 120 \
https://1zheai.com/v1/chat/completions \
-H "Authorization: Bearer $ONEZHE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"messages": [{"role": "user", "content": "请用一句中文解释 DNS 的作用。"}]
}'

--fail-with-body は HTTP エラー時に非ゼロの終了コードを返し、エラーボディを保持します。curl 7.76 以降が必要です。古いバージョンでは、まず -i でステータスコードを確認できます。

フィールド型使い方
modelstring必須。このサイトのモデル ID をコピーし、他プラットフォームのプロバイダ接頭辞を追加しないこと
messagesarray必須。今回の質問と保持する必要のある履歴メッセージを順番に送信する
messages[].rolestring通常の対話には user / assistant を使用。システム指示の役割のサポートはモデルによって異なる
messages[].contentstring またはコンテンツブロックの配列テキストのみならまず文字列を使用。画像入力には対応するコンテンツブロックのサポートが必要
streambooleantrue に設定すると SSE を読み、レスポンス全体を 1 つの JSON として扱わなくなる
temperaturenumber任意。一部の推論モデルは変更に対応していない。まず省略し、項目ごとに検証する
tools / tool_choicearray / string または object任意。モデルと上流の両方のサポートが必要。ツールの実際の実行は自分のプログラムで行う

出力上限パラメーターはモデルによって異なります。Claude の max_tokens、Responses の max_output_tokens、Chat Completions のパラメーターを機械的に相互変換しないでください。選択したモデルの要件を参照し、400 が返されたらまずエラーボディを確認してください。

通常のテキスト結果は choices[0].message.content にあります。終了理由は choices[0].finish_reason にあります。ツール呼び出しが返された場合、テキストが空の場合があり、message.tool_calls を読む必要があります。レスポンスの id、model、usage は今回の呼び出しの照合に使えます。

以下は注目すべき構造のみを示しており、省略されたフィールドと数値は実際のリクエスト結果を表すものではありません:

json
{
"id": "example-completion",
"object": "chat.completion",
"model": "gpt-5.6-sol",
"choices": [{
"index": 0,
"message": {"role": "assistant", "content": "DNS 将域名解析为网络地址。"},
"finish_reason": "stop"
}]
}

同じキーを繰り返し使用しても、インターフェースが前回のラウンドを自動的に記憶することはありません。保持する必要のある履歴を一緒に送信してください:

json
{
"model": "gpt-5.6-sol",
"messages": [
{"role": "user", "content": "我正在学习 DNS。"},
{"role": "assistant", "content": "我们可以从域名解析开始。"},
{"role": "user", "content": "它和 HTTP 有什么区别?"}
]
}

履歴が長いほどリクエストは大きくなります。アプリケーションはコンテキスト制限に応じて切り詰めまたは要約し、ツール呼び出しと結果のペアを完全に保持してください。

"stream": true を追加すると、テキストの増分は choices[].delta.content から得られます。テキストがないイベントや choices が空のイベントもあるため、読み取り時に判断が必要です。詳細はストリーミング出力を参照してください。

Python / Node.js の完全な例を直接実行するか、Responsesに切り替えることもできます。Claude ネイティブパラメーターは Messages を参照してください。