API リファレンス
Chat Completions
チャット補完の作成、ストリーミング応答、ツール呼び出し、画像処理 — すべて200以上のモデルを備えた単一のOpenAI互換エンドポイントを通じて行えます。
エンドポイント
POST https://api.tokspan.com/v1/chat/completionsクイック例
すべてのモデルで同じ API。言語を選択してください:
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
response = client.chat.completions.create(model="gpt-4o", messages=[{"role":"user","content":"Hello"}])
print(response.choices[0].message.content)import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.TOKSPAN_API_KEY, baseURL: 'https://api.tokspan.com/v1' });
const response = await client.chat.completions.create({ model: 'gpt-4o', messages: [{ role: 'user', content: 'Hello' }] });
console.log(response.choices[0].message.content);curl -X POST "https://api.tokspan.com/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}'リクエストボディ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | はい | モデル ID(例:gpt-4o、claude-opus-4-8)。全カタログは モデル をご参照ください。 |
| messages | array | はい | role(system / user / assistant / tool)と content を持つメッセージオブジェクトの配列。 |
| temperature | number | いいえ | サンプリング温度(0~2)。高いほどランダムになります。デフォルト値はモデルにより異なります。 |
| max_tokens | integer | いいえ | 生成する最大トークン数。省略時は、残りコンテキストに基づいてモデルが判断します。 |
| stream | boolean | いいえ | SSE ストリーミングを有効にします。デフォルト:false。下記の ストリーミング をご参照ください。 |
| top_p | number | いいえ | 核サンプリング — 温度パラメータの代替(0~1)。 |
| stop | string / array | いいえ | モデルが生成を停止する1つ以上の文字列。 |
| frequency_penalty | number | いいえ | トークンの繰り返しを抑制します(-2.0~2.0)。 |
| presence_penalty | number | いいえ | 新しいトピックの出現確率を高めます(-2.0~2.0)。 |
| seed | integer | いいえ | 再現可能な出力のための決定論的サンプリングシード。 |
| response_format | object | いいえ | JSON 出力を強制します:{"type": "json_object"} または {"type": "json_schema", "json_schema": {...}}。 |
| tools | array | いいえ | 関数呼び出し用のツール/関数定義。下記の ツール呼び出し をご参照ください。 |
| tool_choice | string / object | いいえ | ツール選択の制御:"auto"、"none"、"required"、または特定のツールオブジェクト。 |
| n | integer | いいえ | 生成する補完の数。デフォルト:1。 |
| user | string | いいえ | 不正利用監視のためのエンドユーザー識別子。 |
リクエストとレスポンスの例
{
"model": "gpt-4o",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "What is the capital of France?" }
],
"temperature": 0.7,
"max_tokens": 256
}{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-4o",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris."
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 8,
"total_tokens": 33
}
}レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
| id | string | 一意のリクエスト識別子 — サポート問い合わせ時に使用します |
| object | string | 常に "chat.completion" |
| created | integer | レスポンスが生成された Unix タイムスタンプ(秒) |
| model | string | リクエストを実際に処理したモデル(自動フェイルオーバーやルーティングが有効な場合に有用です) |
| choices | array | 補完選択肢の配列。各要素は index、message(role + content)、finish_reason(stop / length / tool_calls / content_filter)を含みます |
| usage | object | トークン数:prompt_tokens、completion_tokens、total_tokens。下記の トークン使用量 をご参照ください。 |
トークン使用量について
usage オブジェクトは課金対象の消費トークンを報告します:
prompt_tokens— 入力メッセージ内のトークン(システムプロンプト、履歴、トークン換算された添付メディアを含む)completion_tokens— レスポンスでモデルが生成したトークンtotal_tokens— プロンプトトークンと補完トークンの合計 = 課金対象
マルチモーダル入力(画像、音声)の場合、プロバイダーはメディアをトークン換算します。GPT-4o では低解像度画像で約 85 トークン、高解像度で約 170 以上とカウントされます。ダッシュボードでは、リクエストごとの最終トークン数とコストが表示されます。
ストリーミング(SSE)
stream: true を設定すると、モデルがトークンを生成するたびにリアルタイムで受信できます。TokSpan は標準の Server-Sent Events(SSE) を使用しており、OpenAI ストリーミング形式と完全に互換性があります。
例
from openai import OpenAI
client = OpenAI(api_key="sk-your-key", base_url="https://api.tokspan.com/v1")
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Tell me a story."}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)curl -X POST "https://api.tokspan.com/v1/chat/completions" \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Tell me a story."}],
"stream": true
}'SSE チャンク形式
各チャンクは data: で始まる JSON オブジェクトです。ストリームは data: [DONE] で終了します:
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{"content":" world"},"index":0}]}
data: {"id":"chatcmpl-abc","object":"chat.completion.chunk","choices":[{"delta":{},"finish_reason":"stop","index":0}]}
data: [DONE]各チャンクには delta(message ではない)オブジェクトが含まれます。content フィールドは最終チャンクでは空または存在しない場合があります。最終チャンクでは finish_reason が設定され、delta は空になります。
ツール呼び出しを伴うストリーミング
ストリーミング中にモデルが関数を呼び出す場合、tool_calls を含むツール呼び出しチャンクがデルタで到着します — 関数名と引数は段階的にストリーミングされます。特定の tool_call_id のすべてのチャンクを蓄積して完全な関数呼び出しを組み立て、role: "tool" メッセージを返送してください。
ツール / 関数呼び出し
TokSpan は、すべての対応モデルで OpenAI 互換の関数呼び出しをサポートしています。リクエストでツールを定義すると、モデルはコードで実行可能な構造化 JSON 関数呼び出しで応答します。
ツールの定義
関数定義を含む tools 配列を渡します。各関数には name、description、および JSON Schema の parameters が必要です:
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
}]ツール呼び出しを含むモデルレスポンス
モデルが関数を呼び出すと判断した場合、レスポンスにはテキストコンテンツではなく tool_calls が含まれます:
{
"role": "assistant",
"tool_calls": [{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"Paris\"}"
}
}]
}ツール呼び出しの完全なフロー
- リクエストを送信し、
tools定義を含めます - レスポンスで
tool_callsを受信 — 関数名と引数を抽出 - コード内で関数を実行(天気 API の呼び出し、データベースへのクエリなど)
- 結果を返送します:
role: "tool"のメッセージとして送り返し、tool_call_idを参照します - ツール結果を組み込んだ自然言語の回答でモデルが応答
対応モデル
ツール呼び出しは以下のモデルでサポートされています:GPT-4o、GPT-4.1、Claude Opus 4.8、Claude Sonnet 4.6、Gemini 2.5 Pro、Gemini 2.5 Flash、DeepSeek V3、Mistral Large 3、Llama 4、Qwen3 ほか。モデルごとの機能詳細は モデルページ をご参照ください。
tool_choice: "required" を使用して、モデルに常にツールを呼び出させることもできます(テキスト応答を例外とすべきエージェントパイプラインで有用です)。ビジョン / 画像入力
GPT-4o や Claude 4 Vision などのマルチモーダルモデルでは、content 配列に画像を URL または base64 エンコードデータとして含めます:
{
"model": "gpt-4o",
"messages": [{
"role": "user",
"content": [
{ "type": "text", "text": "What's in this image?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
]
}]
}サポートされている画像形式:PNG、JPEG、WebP、GIF(非アニメーション)。最大画像サイズはモデルにより異なります — 通常は1画像あたり 20MB です。Claude モデルでは、PDF ドキュメントもビジュアル入力としてサポートされています。
JSON モード / 構造化出力
response_format を設定してモデルに有効な JSON を返させます:
- JSON モード:
{"type": "json_object"}— モデルが有効な JSON を返します。システムプロンプトに「JSON」という単語を含める必要があります。 - 構造化出力:
{"type": "json_schema", "json_schema": {...}}— モデルが指定したスキーマに完全に一致する JSON を返します。GPT-4o 以降のモデルでサポートされています。
response_format を設定してストリーミングする場合、モデルは JSON トークンをストリーミングします。すべてのチャンクを組み立てた後の完全なレスポンスが有効な JSON になります — ストリーム完了後に検証してください。