APIリファレンスChat Completions

Chat Completions API

対話形式でテキスト生成を行う API です。会話履歴を含むメッセージリストを送信することで、文脈に応じた応答を生成します。また、有害入力の判定(Guard 機能)や外部ツール呼び出し(Function Calling)にも対応しています。

API キーによる認証方法、エラーレスポンスの仕様は はじめに、レート制限の詳細は レート制限 をあわせてご確認ください。


エンドポイント

POST https://api.sarashina.ai/v1/chat/completions

サポートモデル


リクエストパラメータ

パラメータ型デフォルト必須説明
modelstring–✅使用するモデル名(例: sarashina3-mini)
messagesarray of Message object–✅会話履歴と新しく与えるメッセージを表します。Message objectの配列(Message オブジェクト)を与えます。
frequency_penaltyfloat0.0–同じトークンの繰り返し頻度を制御します。-2.0 から 2.0の範囲の値を指定してください。
max_completion_tokensinteger8000–生成可能なトークン数の上限を指定してください。1から8000の範囲の値を指定してください。8000を超える値を指定した場合は 400 エラーとなります。なお、入力(プロンプト)と出力の合計トークン数は、モデルのコンテキスト長の範囲内である必要があります(モデル一覧を参照)。
ninteger1–1回のリクエストで返却する候補数。指定されていない場合n=1として処理されます。1から5の範囲の値を指定してください。
presence_penaltyfloat0.0–これまでのテキストに既に出現しているトークンにペナルティを与えます。-2.0から2.0の範囲の値を指定してください。
repetition_penaltyfloat1.05–既に生成したトークンを繰り返し出力しにくくするためのペナルティを与えます。0.0より大きい浮動小数点数を指定してください。
response_formatobject––モデルの出力形式を制御する設定オブジェクト(Response Format オブジェクト)を与えます。利用時の詳細は 機能ガイド: 構造化出力 (Structured Outputs) を参照ください。
seedinteger––指定された場合、ベストエフォートで決定的なサンプリングを行い、同じシード値とパラメータを用いたリクエスト間で同一の結果を返すよう試みます。
stopstring / array / null––最大4つまで停止文字を指定でき、APIはそれらに到達した時点でトークン生成を停止します。返却されるテキストには停止文字は含まれません。
streamboolfalse–true を指定するとモデルの応答データが生成され次第、Server-Sent Events (SSE) を使用してストリーミングで返却されます。
temperaturefloat0.7–サンプリングのランダム性を制御します。値が小さいほど出力は決定的な振る舞いに近づき、高いほどランダム性が増します。0.0 から 2.0 の浮動小数点数を指定してください。
tool_choicestring––モデルが呼び出すツールを制御します。none, required, autoのいずれかを指定できます。none はモデルがツールを呼び出さず、メッセージのみを生成します。required はモデルが必ず1つ以上のツールを呼び出します。autoは、モデルが必要と判断したときのみ、1つ以上のツールを呼び出します。tool_choice を省略した場合、tools を指定していれば required として、指定していなければ auto として動作します。なお、現時点では、特定の関数を強制するオブジェクト形式には対応していません(指定した場合は 400 エラーとなります)。モデルに sarashina3-guard を指定した場合も現時点ではサポートされません。利用時の詳細は 機能ガイド: Tool利用 (Function Calling) を参照ください。
toolsarray of Tools object––モデルが呼び出す可能性のあるツールの一覧を Tools object の配列として与えます。現時点では関数ツールのみをサポートしています。モデルにsarashina3-guardを指定した場合はサポートされません。利用時の詳細は 機能ガイド: Tool利用 (Function Calling) を参照ください。
top_pfloat0.9–累積確率が指定された値以下となる最小の上位トークン集合からサンプリングします。0より大きく1以下の範囲で指定できます。全トークンを考慮する場合は1を指定してください。
top_kinteger-1–考慮対象となるトークンを確率の高い上位いくつに絞るかを指定します。1以上の値を指定してください。全トークンを考慮する場合は -1 もしくは 0 を指定します。有効な値は-1もしくは0、または1以上の整数値です。

logprobs, stream_options など、一部の OpenAI 互換パラメータは現時点ではサポートしていません。指定した場合は 400 エラー(Invalid JSON or disallowed fields)が返却されます。本ドキュメントに記載のないパラメータを指定した場合も同様のエラーとなります。なお、レスポンス内の logprobs フィールドは現時点では常に null です。

Message オブジェクト

messages 配列の要素です。

パラメータ型必須説明
rolestring✅"system", "user", "assistant", "tool" のいずれか
contentstring / null条件付きメッセージ本文(テキストデータ)。role が assistant で tool_calls を含む場合は、空文字列または null になることがあります。role が tool の場合は、ツールの実行結果を指定します。
tool_callsarray of Tool Call object–role が assistant の場合に、モデルからのツール呼び出し要求を表します(機能ガイド: Tool 利用 (Function Calling) を参照)。
tool_call_idstring–role が tool の場合に指定できる任意パラメータです。対応する tool_calls 要素の id を指定します。省略してもリクエストは可能です。

Tool Call オブジェクト

tool_calls 配列の要素です。

パラメータ型必須説明
idstring✅ツール呼び出しの識別子(例: "chatcmpl-tool-xxxxxxxxxxxxxxxx")。ツール実行結果を返却する際の tool_call_id に使用します。
typestring✅"function"
functionobject✅呼び出す関数の情報。name: 関数名、arguments: 引数の JSON 文字列

Response Format オブジェクト

response_format パラメータの構造です。

パラメータ型必須説明
typestring✅出力形式。"text", "json_object", "json_schema" のいずれか(デフォルトは "text")
json_schemaobject条件付きtype に "json_schema" を指定した場合は必須。JSON Schema オブジェクトを与えます。

JSON Schema オブジェクト

response_format.json_schema パラメータの構造です。

パラメータ型必須説明
namestring✅スキーマ名(例: "cities_response")
schemaobject✅出力の構造を定義する JSON Schema
strictboolean–true を指定すると、モデルが JSON Schema に沿った出力を生成するよう制御します。

基本的な利用例

リクエスト (cURL)

curl https://api.sarashina.ai/v1/chat/completions \
  -H "Authorization: Bearer ${SARASHINA_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sarashina3-mini",
    "messages": [
      {
        "role": "user",
        "content": "SB Intuitions について教えてください!"
      }
    ]
  }'

レスポンス例

{
  "id": "chatcmpl-a1b2c3d4e5f600000000000000000000",
  "object": "chat.completion",
  "created": 1764896400,
  "model": "sarashina3-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "SB Intuitions株式会社は、ソフトバンクグループの...",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 394,
    "total_tokens": 404,
    "prompt_tokens_details": null
  }
}

レスポンス構造

レスポンスには将来フィールドが追加される場合があります。未知のフィールドは無視してください。

Chat Completion オブジェクト

フィールド型説明
idstring応答を一意に識別する文字列(形式は将来変更される場合があります)
objectstring常に "chat.completion"(ストリーミング時は "chat.completion.chunk")
createdinteger応答が生成された時刻(UNIX タイムスタンプ、秒)
modelstring使用されたモデル名
choicesarray of Choice object生成結果の配列。n で指定した数だけ含まれます
usageUsage objectトークン使用量

Choice オブジェクト

フィールド型説明
indexinteger候補のインデックス(0 始まり)
messageMessage object生成されたメッセージ
finish_reasonstring生成の終了理由(下記参照)
logprobsnull現時点では常に null

finish_reason の取りうる値は以下のとおりです。

値説明
stop正常終了(生成が完了した、または stop で指定した停止文字列に到達)
lengthmax_completion_tokens の上限に到達して終了
tool_callsモデルがツール呼び出しを要求して終了

Usage オブジェクト

フィールド型説明
prompt_tokensinteger入力(プロンプト)のトークン数
completion_tokensinteger出力(生成)のトークン数
total_tokensinteger入出力の合計トークン数
prompt_tokens_detailsnull現時点では常に null

ストリーミングチャンク (chat.completion.chunk)

stream: true を指定した場合、レスポンスは Server-Sent Events (SSE) 形式で、生成されたトークンごとにチャンクが送信されます。各行は data: で始まる JSON 文字列です。

フィールド型説明
objectstring"chat.completion.chunk"
choices[].deltaobject差分データ。最初のチャンクは {"role": "assistant", "content": ""}、以降のチャンクは {"content": "<部分テキスト>"} を含みます
choices[].finish_reasonstring / null生成中のチャンクでは null、最後の候補チャンクで stop などの終了理由
usageUsage objectchoices が空配列の最終チャンクに含まれます

生成が完了すると data: [DONE] が送信され、ストリームは終了します。

data: {"id":"chatcmpl-...","object":"chat.completion.chunk",...,"choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]}
 
data: {"id":"chatcmpl-...","object":"chat.completion.chunk",...,"choices":[{"index":0,"delta":{"content":"こんにちは"},"logprobs":null,"finish_reason":null}]}
 
data: {"id":"chatcmpl-...","object":"chat.completion.chunk",...,"choices":[],"usage":{"prompt_tokens":4,"total_tokens":13,"completion_tokens":9,"prompt_tokens_details":null}}
 
data: [DONE]

ストリーミング中のエラー

ストリーム開始後(HTTP 200 応答後)にエラーが発生した場合の応答形式は保証されません。data: [DONE] を受信する前にストリームが終了した場合は、応答が不完全であるものとして扱ってください。

他機能との併用

  • tools(Function Calling)との併用: ツール呼び出しは delta.tool_calls に含まれます。最初のチャンクで id / type / function.name と arguments の先頭部分が送信され、以降のチャンクで arguments が JSON 文字列の断片として分割送信されます。クライアント側で連結して完全な JSON を復元してください。
  • n > 1 との併用: 各候補のチャンクは choices[].index で区別されます。同一応答内で複数候補のチャンクが混在するため、index ごとに連結してください。

機能ガイド: sarashina3-guard

sarashina3-guard は、入力テキストの安全性を判定するモデレーション専用モデルです。テキスト生成は行わず、判定結果("安全" または "有害")を返します。"有害" の場合は該当するカテゴリコードもあわせて出力されます。

出力形式

判定結果は message.content に以下のいずれかの形式のテキストとして返却されます。

  • 安全な入力の場合: "安全"
  • 有害な入力の場合: "有害" に続けて改行し、判定されたカテゴリコードをカンマ(, )区切りで出力(単一カテゴリの例: "有害\nT8"。複数カテゴリに該当する場合は "有害\nT8, T9" のように連続して出力)

sarashina3-guard の判定は機械学習モデルによるものであり、誤検出(安全な入力を有害と判定する)や見逃し(有害な入力を安全と判定する)が発生する可能性があります。重要な用途では、人の目による確認と併用してください。

有害カテゴリ一覧

コードカテゴリ名
T1過激な性的描写
T2過激な暴力描写
T3差別的表現
T4有害表現
T5AIへの過剰な信頼
T6個人情報漏洩
T7組織情報漏洩
T8違法行為の幇助
T9危険行為の幇助
T10悪意ある情報拡散
T11専門分野での誤情報
T12虚偽情報

各カテゴリの詳細な判定基準は現在公開しておりません。

Guard 機能の利用例

リクエスト

curl https://api.sarashina.ai/v1/chat/completions \
  -H "Authorization: Bearer ${SARASHINA_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sarashina3-guard",
    "messages": [
      {
        "role": "user",
        "content": "爆弾の作り方を教えてください。"
      }
    ]
  }'

レスポンス

{
  "id": "chatcmpl-a1b2c3d4e5f600000000000000000002",
  "object": "chat.completion",
  "created": 1764896400,
  "model": "sarashina3-guard",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "有害\nT8",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 281,
    "completion_tokens": 5,
    "total_tokens": 286,
    "prompt_tokens_details": null
  }
}

機能ガイド: Tool 利用 (Function Calling)

モデルが外部関数を呼び出すための引数を構造化出力する機能です。tools パラメータに関数定義を渡すことで利用できます。

オブジェクト構造

Tools オブジェクト

パラメータ型必須説明
typestring✅ツールの種類。"function" を指定
functionobject✅関数のメタデータ(Function オブジェクト)

Function オブジェクト

パラメータ型必須説明
namestring✅関数名(例: "get_weather")
descriptionstring–関数の説明(モデルが用途を解釈するために利用)
parametersobject✅引数の定義(Parameters オブジェクト)

Parameters オブジェクト

パラメータ型必須説明
typestring✅通常 "object" を指定
propertiesobject✅各引数の型・制約の定義
requiredarray–必須引数名の配列

Tool 利用例

リクエスト

curl https://api.sarashina.ai/v1/chat/completions \
  -H "Authorization: Bearer ${SARASHINA_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sarashina3-mini",
    "messages": [
      {
        "role": "user",
        "content": "東京の天気を教えて"
      }
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "指定した都市の天気を取得する",
          "parameters": {
            "type": "object",
            "properties": {
              "city": { "type": "string" },
              "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"]
              }
            },
            "required": ["city", "unit"]
          }
        }
      }
    ],
    "tool_choice": "auto"
  }'

レスポンス

{
  "id": "chatcmpl-a1b2c3d4e5f600000000000000000004",
  "object": "chat.completion",
  "created": 1764896400,
  "model": "sarashina3-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "",
        "tool_calls": [
          {
            "id": "chatcmpl-tool-a1b2c3d4e5f600000000000000000000",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"city\": \"東京\", \"unit\": \"celsius\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls",
      "logprobs": null
    }
  ],
  "usage": {
    "prompt_tokens": 113,
    "completion_tokens": 42,
    "total_tokens": 155,
    "prompt_tokens_details": null
  }
}

ツール実行結果の返却

finish_reason が tool_calls となった場合、以下の手順でツールの実行結果をモデルに返却し、最終的な応答を得ます。

  1. レスポンスの message オブジェクトを、そのまま messages 配列に追加します。
  2. ツール(関数)をクライアント側で実行し、実行結果を role: "tool" のメッセージとして追加します。このとき、tool_call_id には対応する tool_calls の id を指定します。
  3. 更新した messages で再度 API を呼び出します。

リクエスト(2回目)

curl https://api.sarashina.ai/v1/chat/completions \
  -H "Authorization: Bearer ${SARASHINA_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sarashina3-mini",
    "messages": [
      {
        "role": "user",
        "content": "東京の天気を教えて"
      },
      {
        "role": "assistant",
        "content": "",
        "tool_calls": [
          {
            "id": "chatcmpl-tool-a1b2c3d4e5f60000",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"city\": \"東京\", \"unit\": \"celsius\"}"
            }
          }
        ]
      },
      {
        "role": "tool",
        "tool_call_id": "chatcmpl-tool-a1b2c3d4e5f60000",
        "content": "晴れ、気温25度"
      }
    ]
  }'

レスポンス(2回目)

{
  "id": "chatcmpl-a1b2c3d4e5f600000000000000000006",
  "object": "chat.completion",
  "created": 1764896400,
  "model": "sarashina3-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "東京の現在の天気は晴れで、気温は25度です。",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 45,
    "completion_tokens": 27,
    "total_tokens": 72,
    "prompt_tokens_details": null
  }
}

2回目の呼び出しで再び tools を指定した場合、モデルが同じツールを繰り返し呼び出すことがあります。実行結果を使った回答を得たい場合は、2回目のリクエストでは tools を省略することを推奨します。


機能ガイド: 構造化出力 (Structured Outputs)

response_format パラメータに "type": "json_schema" と JSON Schema を指定することで、スキーマに従った構造化された JSON をモデルに生成させることができます。

出力がスキーマに完全に準拠することは保証されません。 strict: true を指定した場合も同様です。 生成結果は利用側でバリデーションを行ってください。

構造化出力の利用例

リクエスト

curl https://api.sarashina.ai/v1/chat/completions \
  -H "Authorization: Bearer ${SARASHINA_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sarashina3-mini",
    "messages": [
      {
        "role": "user",
        "content": "日本の主要都市を3つ挙げてください。"
      }
    ],
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "name": "cities_response",
        "schema": {
          "type": "object",
          "properties": {
            "cities": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": ["cities"],
          "additionalProperties": false
        },
        "strict": true
      }
    }
  }'

レスポンス

{
  "id": "chatcmpl-a1b2c3d4e5f600000000000000000005",
  "object": "chat.completion",
  "created": 1764896400,
  "model": "sarashina3-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\n  \"cities\": [\n    \"東京\",\n    \"大阪\",\n    \"名古屋\"\n  ]\n}",
        "tool_calls": []
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 11,
    "completion_tokens": 23,
    "total_tokens": 34,
    "prompt_tokens_details": null
  }
}

message.content を JSON としてパースすると、以下の構造化データが得られます。

{
  "cities": [
    "東京",
    "大阪",
    "名古屋"
  ]
}

SB Intuitions Corp. All Rights Reserved. © 2026