跳转到主要内容

Gemini 工具调用

POST /v1beta/models/{model}:generateContent
截至 2026 年 3 月 23 日,Crazyrouter 生产环境已验证 gemini-3-pro-preview 可以稳定触发以下 Gemini 原生工具能力:
  • codeExecution
  • googleSearch
  • urlContext
  • functionDeclarations
本页只保留已经在生产环境实际触发成功的请求模式和响应标记。

代码执行

下面的请求在生产环境返回了 executableCodecodeExecutionResult 两个关键响应块:
curl "https://crazyrouter.com/v1beta/models/gemini-3-pro-preview:generateContent?key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "Use code execution. Compute the sum of the first 20 prime numbers and state the result."}
        ]
      }
    ],
    "tools": [
      {
        "codeExecution": {}
      }
    ]
  }'
生产环境实测到的关键响应形态:
{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "executableCode": {
              "language": "PYTHON",
              "code": "..."
            }
          },
          {
            "codeExecutionResult": {
              "outcome": "OUTCOME_OK",
              "output": "639\n"
            }
          },
          {
            "text": "The sum is 639."
          }
        ]
      }
    }
  ]
}

Google 搜索

下面的请求在生产环境返回了 groundingMetadata,说明模型确实触发了 Google Search:
curl "https://crazyrouter.com/v1beta/models/gemini-3-pro-preview:generateContent?key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "Use Google Search. What are two AI news items from March 2026?"}
        ]
      }
    ],
    "tools": [
      {
        "googleSearch": {}
      }
    ]
  }'
当前可据此检查:
  • candidates[0].groundingMetadata
  • 正常的文本回答仍在 candidates[0].content.parts[*].text

URL 上下文

下面的请求在生产环境返回了 urlContextMetadata,同时也带有 groundingMetadata
curl "https://crazyrouter.com/v1beta/models/gemini-3-pro-preview:generateContent?key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "Use URL context to summarize https://example.com/ in one sentence."}
        ]
      }
    ],
    "tools": [
      {
        "urlContext": {}
      }
    ]
  }'
当前可据此检查:
  • candidates[0].urlContextMetadata
  • candidates[0].groundingMetadata

自定义函数调用

下面的请求在生产环境返回了 functionCall
curl "https://crazyrouter.com/v1beta/models/gemini-3-pro-preview:generateContent?key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "What is the weather in Beijing? Use the provided function."}
        ]
      }
    ],
    "tools": [
      {
        "functionDeclarations": [
          {
            "name": "get_weather",
            "description": "Get weather info for a city",
            "parameters": {
              "type": "object",
              "properties": {
                "city": {
                  "type": "string"
                }
              },
              "required": ["city"]
            }
          }
        ]
      }
    ]
  }'
关键响应形态:
{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "get_weather",
              "args": {
                "city": "Beijing"
              }
            }
          }
        ]
      }
    }
  ]
}
函数结果回传时,继续使用 Gemini 原生的 functionResponse 结构即可。