ai.google.dev/gemini-api/docs/function-calling、2026 年 6 月時点)をもとにしています。
OpenAI とのフォーマットの違い
よくあるミス: Gemini の
function_call.args は 構造化オブジェクト であり、JSON 文字列ではありません — json.loads は不要です。
全体の呼び出しループ
呼び出しモード
並列およびマルチステップ呼び出し
- 並列: 1回のターンで複数の
function_call部分(例: 2つの都市を同時に取得)を返す場合があります。それぞれを実行し、すべてのfunction_response部分をまとめて返します - マルチステップ: モデルは「呼び出し → 結果を確認 → 再度呼び出し」を連鎖できます。応答にこれ以上
function_callがなくなるまでループします。暴走した費用を防ぐため、ループには上限を設けます
ベストプラクティス
- 説明はモデル向けに書きます: 「いつ呼び出すか」を明確にし、自由形式の文字列ではなく
enumでパラメータを絞り込みます - ツール定義は安定させます: これらはキャッシュのプレフィックス一致に関与するため、変更が多いと キャッシュヒット が悪化します
- 外部ツールではなく、決定的な JSON 出力が必要ですか? FC の代わりに
response_schema構造化出力を検討してください(Native Calls のパラメータ表を参照) - サンドボックス化された計算には、自作の計算機能を作る代わりに、組み込みの code_execution ツールを使ってください
よくある落とし穴
関連リンク
- このグループ: Native Calls · Multimodal & Code Execution · Cache Billing
- OpenAI の対応項目: OpenAI Function Calling
- 公式 Google ドキュメント:
ai.google.dev/gemini-api/docs/function-calling