Function calling の仕組み
Function calling により、リアルタイムデータや構造化出力を活用する適応的なワークフローを構築でき、よりダイナミックで応答性の高いモデルとの対話が実現します。- ツールを含むクエリの送信: まず、JSON Schema で定義された利用可能なツール群とともに、ユーザーのクエリを送信します。このスキーマで各関数のパラメータを指定します。
- モデルによる処理と提案: モデルはクエリを解釈して意図を判断し、会話として応答するか、関数呼び出しを提案するかを決定します。関数が呼び出される場合、スキーマに基づいて引数を補完します。
- モデルからの応答の受信: モデルからの応答には、関数呼び出しの提案が含まれる場合があります。提供された引数で関数を実行し、その結果をモデルに返すことで対話を継続します。
対応モデル
Meta-Llama-3.3-70B-InstructQwen3-235B-A22B-Instruct-2507gpt-oss-120bDeepSeek-V3.1DeepSeek-V3.2MiniMax-M2.7MiniMax-M3gemma-4-31B-it
gpt-oss-120b でツール呼び出しリクエストの品質を高めるには、reasoning_effort を high に設定してください。使用例
以下では、Function calling を使用する各ステップを順に説明し、最後のステップの後にエンドツーエンドの実装例を紹介します。ステップ 1: 関数スキーマの定義
関数の JSON スキーマを定義します。以下を指定する必要があります。- 関数の名前。
- 関数の動作の説明。
- パラメータ、そのデータ型、および説明。
Example schema for getting the weather
ステップ 2: リクエストでの Function calling の設定
リクエストを送信する際、tools パラメータに関数定義を含め、tool_choice に以下のいずれかを設定します。
auto: メッセージの生成と関数呼び出しのどちらを行うかをモデルに委ねます。このフィールドを指定しない場合のデフォルトです。required: モデルに関数呼び出しの生成を強制します。モデルは常に 1 つ以上の関数を選択して呼び出します。none: モデルによる関数呼び出しを禁止し、テキスト応答を強制します。- 特定の関数呼び出しを強制するには、
tool_choice = {"type": "function", "function": {"name": "get_weather"}}と設定します。これにより、モデルは指定された関数のみを使用します。
gpt-oss-120b で特定の関数呼び出しを強制する場合は、Chat Completions API 形式 ({"type": "function", "function": {"name": "function_name"}}) を使用してください。OpenAI Responses API 形式 (内側に "function" キーを持たない {"type": "function", "name": "function_name"}) は未対応です。allowed_tools パラメータも未対応です。以下のコードブロックは、20°C から 50°C までのランダムな気温を返す架空の天気検索の例です。正確なリアルタイムの気象データが必要な場合は、適切な天気 API を使用してください。
ステップ 3: ツール呼び出しの処理
モデルが関数の呼び出しを選択した場合、レスポンスにtool_calls が含まれます。関数呼び出しの詳細を抽出し、提供されたパラメータで対応する関数を実行します。
Example code
ステップ 4: 関数の結果をモデルに返す
結果を計算したら、それをモデルに渡して会話を継続するか、出力を確認します。Example code
ステップ 5: 出力例
出力例:エンドツーエンドの例
以下のコードブロックは、20°C から 50°C までのランダムな気温を返す架空の天気検索の例です。正確なリアルタイムの気象データが必要な場合は、適切な天気 API を使用してください。
JSON スキーマ
response_format パラメータに定義済みのスキーマを設定すると、指定した構造に一致する JSON オブジェクトをモデルに生成させることができます。
strict パラメータは、API では true と false のどちらの値も受け付けられます。falseがデフォルトです。現時点で実際に適用される唯一の値であり、モデルはスキーマに対してベストエフォートでのマッチングを行います。trueはエラーにはなりませんが、現時点では動作上の追加の影響はありません。
strict: true を設定すると、ベストエフォートでの対応ではなく、スキーマへの厳密な準拠がモデルに要求されるようになります。JSON モード
リクエストでresponse_format パラメータに json_object を設定すると、モデルに有効な JSON を出力させることができます。モデルが有効な JSON を生成できなかった場合は、エラーが返されます。
モデルが有効な JSON の生成に失敗した場合、エラーメッセージ Model did not output valid JSON が返されます。
Example response

