Skip to main content
Gemini のネイティブ形式は Function Calling を完全にサポートしています。モデルが「どの関数か + どの引数か」を出力し、ローカルで実行して結果を返すと、モデルが最終回答を生成します。このループは OpenAI’s FC と同じですが、フィールド形式は完全に異なるため、混在はできません。 このページは、公式 Google ドキュメント(ai.google.dev/gemini-api/docs/function-calling、2026 年 6 月時点)をもとにしています。

OpenAI とのフォーマットの違い

よくあるミス: Gemini の function_call.args構造化オブジェクト であり、JSON 文字列ではありません — json.loads は不要です。

全体の呼び出しループ

Gemini 3 の thought signatures は返却する必要があります: function_call の部分には暗号化された thought_signature が含まれており、2 回目のリクエストでは モデルの返信 Content 全体を履歴内で変更せずそのまま含める 必要があります(上の手順 4)。署名が欠けると reasoning チェーンが壊れ、リクエストが失敗することがあります。公式の google-genai SDK は上記のパターンを自動的に処理するため、手書きの REST 呼び出しでそのフィールドを削除しないでください。

呼び出しモード

並列およびマルチステップ呼び出し

  • 並列: 1回のターンで複数の function_call 部分(例: 2つの都市を同時に取得)を返す場合があります。それぞれを実行し、すべての function_response 部分をまとめて返します
  • マルチステップ: モデルは「呼び出し → 結果を確認 → 再度呼び出し」を連鎖できます。応答にこれ以上 function_call がなくなるまでループします。暴走した費用を防ぐため、ループには上限を設けます

ベストプラクティス

  • 説明はモデル向けに書きます: 「いつ呼び出すか」を明確にし、自由形式の文字列ではなく enum でパラメータを絞り込みます
  • ツール定義は安定させます: これらはキャッシュのプレフィックス一致に関与するため、変更が多いと キャッシュヒット が悪化します
  • 外部ツールではなく、決定的な JSON 出力が必要ですか? FC の代わりに response_schema 構造化出力を検討してください(Native Calls のパラメータ表を参照)
  • サンドボックス化された計算には、自作の計算機能を作る代わりに、組み込みの code_execution ツールを使ってください

よくある落とし穴

関連リンク