メインコンテンツへスキップ
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の思考署名は必ず返却する必要があります: function_callパートには暗号化されたthought_signatureが含まれており、2回目のリクエストにはモデルの返答Content全体を変更せずに履歴に含める必要があります(上記のステップ4)。署名が欠落していると推論チェーンが途切れ、リクエストが失敗する可能性があります。公式のgoogle-genai SDKは上記のパターンでこれを自動的に処理します。手書きのREST呼び出しでこのフィールドを削除しないでください。missing a thought_signatureとInvalid thought signatureを区別してそれぞれを修正する方法については、ツール呼び出しにおけるGeminiの思考署名400エラーを修正する方法を参照してください。

呼び出しモード

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

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

ベストプラクティス

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

よくある落とし穴

関連リンク