チャット

チャット補完

すべてのテキストモデルでOpenAIのChat Completions APIを利用できます。リクエストとレスポンス、ストリーミング、SDKは同じです。

POST/v1/chat/completions

リクエスト

modelstring必須
モデル一覧にあるモデルID(claude-opus-5-5やgpt-6-solなど)。
messagesarray必須
会話を構成するsystem(またはdeveloper)、user、assistant、toolのメッセージ。contentには文字列、または画像、PDF、音声、動画を追加するためのパーツの配列を指定します。
streamboolean
回答の生成中にserver-sent eventsとして送信します。詳しくは下の「ストリーミング」をご覧ください。
stream_optionsobject
{ "include_usage": true }を指定すると、トークン使用量を含む最後のチャンクが追加されます。
max_completion_tokensinteger
生成するトークンの最大数です。推論に使うトークンも含みます。max_tokensも使えます。
temperaturenumber
0~2。低いほど出力が絞られ、高いほど多様になります。一部の推論モデルでは無視されます。Claude Opus 4.7以降(Opus 5と5.5、Fable 5と5.1、Sonnet 5.5、Haiku 5.5)では受け付けないため、これらのモデルには送信しません。
top_pnumber
nucleus samplingの値で、0~1です。これかtemperatureのどちらか一方だけを変更してください。同じClaudeモデルでは送信しません。top_kもこれらのモデルとMuse Wonderには送信しません。
stopstring | array
生成を停止する文字列を最大4つ指定できます。
toolsarray
モデルが呼び出せる関数です。詳しくは下の「ツール呼び出し」をご覧ください。
tool_choicestring | object
auto、none、required、または特定の関数を指定します。モデルの提供元が指定を拒否または無視する場合(Claude Opus 5.5、Sonnet 5.5、Fable 5.1でのツールの強制指定、Muse Wonderでのauto以外の指定、一部のGemini、DeepSeek Flash、MiMo、HY4、MiniMaxモデルでのnone)、モデルが従える形式で送信し、指定内容をモデルに伝えます。名前で指定した関数を強制する場合は、その関数だけを提示します。
response_formatobject
JSON形式の出力です。{ "type": "json_object" }、またはスキーマ付きのjson_schemaを指定します。詳しくは下の「構造化出力」をご覧ください。
reasoning_effortstring
推論モデルの思考の深さです。none、minimal、low、medium、high、xhigh、maxから指定します。対応するレベルはモデルごとに異なります(詳しくは下の「推論」をご覧ください)。対応していないレベルを指定すると、最も近い対応レベルで実行します。レベルが高いほど思考時間が長くなり、出力トークンの費用も増えます。
seedinteger
対応モデルでは、可能な限り再現性を確保します。
modelsarray
このリクエストのスマートルーティング:モデルが利用できない場合に試す代替モデルを優先順に指定します。スマートルーティングをご覧ください。
その他の OpenAI パラメータは、Zurelay 側で保持する user と metadata を除き、そのままモデルに渡されます。ツール、JSON スキーマ、推論のどれに対応するかは、提供元のラボで利用する場合と同様、モデルによって異なります。OpenAI Python SDK では、models を extra_body={"models": [...]} として送信してください。

レスポンス

レスポンス
{
"id": "chatcmpl-AbC123...",
"object": "chat.completion",
"created": 1790870400,
"model": "claude-opus-5-5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Here's the summary..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1204,
"completion_tokens": 312,
"total_tokens": 1516,
"prompt_tokens_details": { "cached_tokens": 1024 },
"completion_tokens_details": { "reasoning_tokens": 128 }
}
}
  • modelは応答したモデルです。スマートルーティングで代替モデルが応答した場合を除き、指定したモデルが入ります。
  • 推論モデルが思考過程を公開する場合、メッセージにreasoning_contentが追加されることがあります。
  • usageが請求対象です。cached_tokensはモデルのプロンプトキャッシュから読み込まれた入力トークンで、モデルにキャッシュ料金がある場合はその料金が適用されます。

すべてのレスポンスには、次のヘッダーも含まれます:

ヘッダー値
x-request-idリクエストログに表示されるリクエストIDです。サポートへのお問い合わせ時にお伝えください。
x-zurelay-model応答したモデルです。
x-zurelay-routed-fromスマートルーティングが行われた場合のみ:指定したモデルです。
x-zurelay-reasoning-effortリクエストで推論レベルを指定した場合のみ:モデルが実際に使用した、指定値に最も近いレベルです(推論をご覧ください)。
x-zurelay-stopped残高またはキーの予算が処理中に尽きた場合、あるいはそれ以上の処理を賄えないため引き下げられたmax_tokensに回答が達した場合のみ:insufficient_quota、key_budget_exceeded、key_daily_budget_exceededのいずれかです。回答にはその時点までに生成された内容が入り、finish_reason: "length"が設定されます。

ストリーミング

stream: trueを指定すると、回答はOpenAIのチャンク形式のServer-Sent Eventsで届き、data: [DONE]で終了します。どのSDKもこれを処理できます。

import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
)
stream = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[
{
"role": "user",
"content": "Write a limerick about databases."
}
],
stream=True,
stream_options={
"include_usage": True
},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
  • モデルが最初のトークンを生成するまで回答は送信されないため、再試行や別の経路への切り替えは利用者には見えません。
  • 応答が途切れる間(モデルが処理の合間に考えているとき)は、15秒ごとにSSEコメント行(: keep-alive)を送信します。クライアントはこれを無視しますが、プロキシによる接続の切断を防げます。最初のトークンまで20秒を超える場合(長いプロンプトや、停止した経路を切り替えている場合)、その時点でストリームを開きます。待機中もヘッダーとキープアライブコメントが届きます。各経路は開始まで最大3分(高い推論レベルでは5分)待ってから次を試すため、クライアントのタイムアウトは10分に設定してください。
  • 最初のトークンより前に開いたストリームでは、ほかに応答できるモデルがない場合(スマートルーティングがオフの場合)に限りx-zurelay-modelが含まれます。ストリームが開いた後に発生したエラーは、エラーステータスではなく、エラーボディと同じ形式のエラーイベントとしてストリーム内に届きます。
  • include_usageを指定すると、[DONE]の直前の最後のチャンクには、空のchoicesリストとusageが含まれます。

ツール呼び出し

toolsで関数を記述します。モデルが関数を呼び出す場合は、テキストの代わりにtool_callsを返します。関数を実行し、呼び出しIDを付けたtoolメッセージで結果を送り返すと、モデルが続きを生成します。

import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
)
response = client.chat.completions.create(
model="gpt-6-sol",
messages=[
{
"role": "user",
"content": "What's the weather in Lisbon right now?"
}
],
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
}
],
)
print(response.choices[0].message.content)

構造化出力

response_formatでJSON形式の出力を指定できます。対応モデルでは、json_schemaを使うと指定したスキーマに従い、json_objectを使うと任意の有効なJSONを返します(プロンプトでもJSONを指定してください)。

import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
)
response = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[
{
"role": "user",
"content": "Extract the people: 'Ana met Ben and Chloe in Porto.'"
}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "people",
"schema": {
"type": "object",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"names"
]
}
}
},
)
print(response.choices[0].message.content)

推論

推論モデルは回答前に思考します。reasoning_effortで速度・コストと推論の深さを調整できます。レベルが高いほど長く考え、時間と出力トークンを多く使います。各モデルは、そのラボのドキュメントに記載されたレベルに対応しています。none(思考なし)からminimal、low、medium、high、xhigh(非常に高い)を経てmaxまであり、対応レベルは下の表に示します。省略するとモデルのデフォルト値が使われます。どのOpenAI SDKでも同じように使えます。ダッシュボードのプレイグラウンドで各レベルを試すこともできます。

from openai import OpenAI
client = OpenAI(base_url="https://api.zurelay.com/v1", api_key="YOUR_ZURELAY_KEY")
response = client.chat.completions.create(
model="zurelay-auto",
reasoning_effort="high",
messages=[{"role": "user", "content": "How many primes are there below 1,000?"}],
)
message = response.choices[0].message
print(getattr(message, "reasoning_content", None)) # the thinking, when the model shares it
print(message.content)

思考過程を公開するモデルでは、回答とともにmessage.reasoning_contentで返されます(ストリーミング時はdelta.reasoning_content)。一部のモデルではフィールド名がreasoningです。思考過程は出力トークンとして請求され、必ずcompletion_tokensに含まれます。モデルが内訳を報告する場合は、completion_tokens_details.reasoning_tokensにも個別に計上されます。推論レベルが高いと回答の開始まで数分かかることがあるため、クライアントのタイムアウトは長めに設定してください(信頼性とタイムアウトをご覧ください)。

モデル別のレベル

各ラボのドキュメントに基づいています。モデルが対応しないレベルを指定すると、対応する中で最も近いレベルで実行します(同じ距離のレベルが2つある場合は低い方を使用します。また、思考がオフになるのはnoneを送信した場合のみです)。そのため、スマートルーティングを含め、同じリクエストをどのモデルにも使用できます。実際に使用したレベルはx-zurelay-reasoning-effortレスポンスヘッダーで確認できます。レベルではない値を指定すると、そのモデルの対応レベルを示す400が返されます。

モデルIDレベルデフォルト
Abliterated Large V2abliterated-large-v2low, high, maxmax
Claude Fable 5claude-fable-5low, medium, high, xhigh, maxhigh
Claude Fable 5.1claude-fable-5-1low, medium, high, xhigh, maxhigh
Claude Haiku 5.5claude-haiku-5-5low, medium, high, xhigh, maxmedium
Claude Opus 4.6claude-opus-4-6low, medium, high, maxレベルを設定するまでオフ
Claude Opus 4.7claude-opus-4-7low, medium, high, xhigh, maxレベルを設定するまでオフ
Claude Opus 4.8claude-opus-4-8low, medium, high, xhigh, maxレベルを設定するまでオフ
Claude Opus 5claude-opus-5low, medium, high, xhigh, maxhigh
Claude Opus 5.5claude-opus-5-5low, medium, high, xhigh, maxmedium
Claude Sonnet 5.5claude-sonnet-5-5low, medium, high, xhigh, maxhigh
DeepSeek V4 Flashdeepseek-v4-flashnone, high, maxhigh
DeepSeek V4 Flash 0731deepseek-v4-flash-0731none, low, high, maxhigh
DeepSeek V4 Pro 0813deepseek-v4-pro-0813none, low, high, maxhigh
DeepSeek V4.1 Flashdeepseek-v4.1-flashnone, high, maxhigh
DeepSeek V4.1 Flash 1017deepseek-v4.1-flash-1017none, high, maxhigh
Gemini 3.1 Flash-Litegemini-3.1-flash-liteminimal, low, medium, highminimal
Gemini 3.1 Progemini-3.1-prolow, medium, highhigh
Gemini 3.5 Flash-Litegemini-3.5-flash-liteminimal, low, medium, highminimal
Gemini 3.7 Flashgemini-3.7-flashlow, medium, highmedium
Gemini 3.8 Flashgemini-3.8-flashlow, medium, highmedium
Gemini 4 Argongemini-4-argonlow, medium, highmedium
GLM-5.2glm-5.2none, high, maxmax
GLM-5.3glm-5.3low, high, maxmax
GLM-5.3 Flashglm-5.3-flashlow, high, maxmax
GLM-5.3 FlashXglm-5.3-flashxlow, high, maxmax
GPT-5.6 Lunagpt-5.6-lunanone, low, medium, high, xhigh, maxmedium
GPT-5.6 Solgpt-5.6-solnone, low, medium, high, xhigh, maxmedium
GPT-5.6 Terragpt-5.6-terranone, low, medium, high, xhigh, maxmedium
GPT-6 Astragpt-6-astralow, medium, high, xhigh, maxmedium
GPT-6 Lunagpt-6-lunanone, low, medium, high, xhigh, maxmedium
GPT-6 Solgpt-6-solnone, low, medium, high, xhigh, maxmedium
GPT-6.1 Solgpt-6.1-sollow, medium, high, xhigh, maxmedium
GPT-6.1 Terragpt-6.1-terranone, low, medium, high, xhigh, maxmedium
Grok 4.7grok-4.7low, medium, high, xhighhigh
HY4 Previewhy4-previewnone, highhigh
Kimi K2.5kimi-k2.5none, highhigh
Kimi K2.6kimi-k2.6none, highhigh
Kimi K3kimi-k3low, high, maxmax
Kimi K3.1 Prokimi-k3.1-prolow, high, maxmax
Kimi K3.1 Pro Highspeedkimi-k3.1-pro-highspeedlow, high, maxmax
MiMo V2.6 Flashmimo-v2.6-flashnone, highhigh
MiMo V2.6 Promimo-v2.6-pronone, highhigh
MiniMax M3minimax-m3none, highhigh
MiniMax M3.1 Flashminimax-m3.1-flashlow, medium, high, xhigh, maxmax
Muse Spark 1.3 Contributormuse-spark-1.3-contributorminimal, low, medium, high, xhighmedium
Muse Wondermuse-wonder-1.0minimal, low, medium, high, xhigh, maxhigh
Qwen 3.8 Flashqwen3.8-flashnone, low, medium, xhighxhigh
Qwen 3.8 Maxqwen3.8-maxnone, low, medium, xhighxhigh
Qwen 3.8 Omni Flashqwen3.8-omni-flashnone, low, medium, xhighxhigh
ステップ5 Previewstep-5-previewlow, medium, highmedium
Zurelay Autozurelay-autonone, minimal, low, medium, high, xhigh, maxレベルを設定するまでオフ
MiniMax M2.5minimax-m2.5設定不要常に推論
Claude Haiku 4.5claude-haiku-4-5なし(Anthropic形式の推論予算)オフ
Ministral 3 14Bministral-3-14bなしオフ
Ministral 3 3Bministral-3-3bなしオフ

Claudeの思考

このエンドポイントでは、Claudeもほかのモデルと同様にreasoning_effortを受け付けます:low、medium、high、xhigh、max(Opus 4.6はxhighに対応していません)。Anthropic独自の形式では、Claudeは指定したレベルで適応的に思考します。thinking: { type: "adaptive", display: "summarized" }とoutput_config: { effort: "xhigh" }を送信し、思考ブロックを読み取ってください。Anthropic Messagesをご覧ください。

ご質問や不足している情報はありますか? サポートチームにお問い合わせください。通常1分以内にメールで回答します。