Skip to content
このページは中国語の原文から翻訳されましたが、その後原文が更新されているため、内容が古い可能性があります。正本は中国語版です。 中国語の原文を見る →

Chat Completions API ​

最もよく使われる対話 API で、OpenAI Chat Completions インターフェースと完全互換です。

POST/v1/chat/completionsチャット対話を作成
POST https://hub.lurus.cn/v1/chat/completions

リクエストパラメータ ​

必須 ​

パラメータ型説明
modelstringモデル名。例: deepseek-chat、gpt-4o
messagesarray対話メッセージの配列。下記の形式を参照

よく使うオプションパラメータ ​

パラメータ型デフォルト値説明
temperaturenumber1.0ランダム性(0–2)。コード/数学は 0.1、創作は 0.9
max_tokensinteger—生成する最大トークン数。未設定の場合はモデルが決定
streambooleanfalseストリーミング出力Streamingストリーミング応答。AI モデルが結果を Token 単位で逐次返す(全生成を待たない)方式で、最初の文字までの遅延を低減します。(SSE)。ストリーミング応答を参照
top_pnumber1.0核サンプリング。通常 temperature とどちらか一方を調整
stopstring/array—この文字列に達したら生成を停止
ninteger1同時に生成する候補返信の数
userstring—ユーザー識別子。監査ログに使用

Messages 形式 ​

json
[
  {"role": "system",    "content": "你是一位专业的技术顾问。"},
  {"role": "user",      "content": "什么是 RESTful API?"},
  {"role": "assistant", "content": "RESTful API 是…"},
  {"role": "user",      "content": "能举个例子吗?"}
]
ロール用途
systemAI の振る舞い、口調、制約を設定。配列の先頭に置く
userユーザーの入力
assistantAI の返信。マルチターン対話では過去の返信も含める必要がある

リクエストボディ(ChatCompletionRequest)とメッセージ(Message)の全フィールド定義は データ構造リファレンス を参照してください。


基本例 ​


ストリーミング応答 ​

stream: true を設定すると、応答は Server-Sent Events を介してトークンを逐次返却します。チャット系アプリケーションに適しています。

ストリーミングデータ形式 ​

data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"落"},"index":0}]}
data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"叶"},"index":0}]}
...
data: [DONE]

TIP

最後の data: [DONE] はストリームの終了を示します。このとき delta.content は空です。


Function Calling ​

提供した関数をいつ呼び出すかを AI に判断させ、構造化されたパラメータ(Tool CallTool CallAI モデルが推論の過程で外部ツール(検索やデータベースクエリなど)の呼び出しを決定し、構造化された呼び出しパラメータを返すことです。)を返します。検索、データベースのクエリ、外部 API の呼び出しなどのシナリオに適しています。

ワークフロー ​

Function Calling の呼び出しフロー
graph LR; A[あなたのリクエスト<br/>tools 定義を含む] --> B[モデルが返却<br/>finish_reason: tool_calls]; B --> C[あなたが関数を実行<br/>結果を role: tool で返送]; C --> D[モデルが結果を統合<br/>最終回答を生成]

完全な例: 天気の照会 ​

モデルのサポート

Function Calling にはモデルのサポートが必要です。gpt-4o、gpt-4o-mini、claude-3-5-sonnet の使用を推奨します。 DeepSeek 系列もサポートしていますが、パラメータ形式にわずかな差異があるため、テスト時には検証に注意してください。


マルチモーダル入力(Vision) ​

一部のモデルは画像の内容を理解でき、content の中にテキストと画像を混在させて入力できます。

Vision をサポートするモデル

gpt-4o、gpt-4o-mini、gemini-3-pro-preview、gemini-3-pro-image-preview

画像サイズの制限: URL 画像は公開ネットワークからアクセス可能である必要があります。Base64 は 1 枚あたり 5 MB を超えないことを推奨します。


ベストプラクティス ​

System Prompt の書き方 ​

json
{
  "role": "system",
  "content": "你是一位专业客服。请用友好简洁的语气回答,每条回复不超过 150 字。如遇无法回答的问题,引导用户联系 support@lurus.cn。"
}

良い System Prompt は次を含みます: 役割定義 + 口調の要求 + 長さの制限 + 境界の処理。

温度設定の参考 ​

シナリオtemperature説明
コード生成、数学計算0.0–0.2決定性が高く、ランダム性を抑える
質問応答、要約、分類0.3–0.6正確だが一定の柔軟性がある
創作、ブレインストーミング0.7–1.0多様性が強い
ランダムなストーリー、ロールプレイ1.0–1.5高い創造性、不安定になる可能性あり

マルチターン対話の管理 ​

python
conversation = [
    {"role": "system", "content": "你是一位历史老师。"}
]

def chat(user_input: str) -> str:
    conversation.append({"role": "user", "content": user_input})
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=conversation,
        max_tokens=500
    )
    reply = response.choices[0].message.content
    conversation.append({"role": "assistant", "content": reply})
    return reply

print(chat("秦始皇是谁?"))
print(chat("他有哪些重要成就?"))  # 模型能记住上文的"秦始皇"

コンテキストウィンドウの管理

各モデルのコンテキスト長には上限があります(例: deepseek-chat は 64K tokens)。対話が長すぎる場合は、次のようにできます:

  1. 最も古いメッセージを切り詰める(system + 直近 N ターンを保持)
  2. 過去の対話を定期的に要約し、トークン使用量を圧縮する

エラー処理 ​

よくあるステータスコード: 400 リクエスト形式エラー → JSON 構造と必須パラメータを確認;401 Key が無効/期限切れ;403 このモデルへのアクセス権がない → 管理者に連絡;429 レート制限超過 → 指数バックオフでリトライ;500/502 上流モデルの異常 → リトライまたは予備モデルへ切り替え。完全なエラーコードとリトライ戦略は エラー処理 を参照してください。


次のステップ

Powered by Lurus Technologies