Skip to main content
POST /gemini/v1beta/models/{model}:generateContent 是 Gemini 的核心对话接口,支持文本、图像、音频等多模态输入,以及流式输出、工具调用等高级功能。

基础请求

curl -X POST "$BASE_URL/gemini/v1beta/models/gemini-1.5-pro:generateContent" \
  -H "x-goog-api-key: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [{"text": "用三句话介绍 Rivus AI。"}]
    }]
  }'

多模态输入

文本 + 图像

curl -X POST "$BASE_URL/gemini/v1beta/models/gemini-1.5-pro:generateContent" \
  -H "x-goog-api-key: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "请描述这张图片的内容"},
        {
          "inline_data": {
            "mime_type": "image/png",
            "data": "<BASE64_ENCODED_IMAGE>"
          }
        }
      ]
    }]
  }'

文本 + 音频

curl -X POST "$BASE_URL/gemini/v1beta/models/gemini-2.5-flash:generateContent" \
  -H "x-goog-api-key: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "请转写这段音频"},
        {
          "inline_data": {
            "mime_type": "audio/mp3",
            "data": "<BASE64_ENCODED_AUDIO>"
          }
        }
      ]
    }]
  }'
音频输入会自动触发音频定价模式(适用于 gemini-2.5-flash 等支持音频的模型)。

流式输出

将 action 改为 streamGenerateContent 并添加 ?alt=sse 参数:
curl -N -X POST "$BASE_URL/gemini/v1beta/models/gemini-1.5-pro:streamGenerateContent?alt=sse" \
  -H "x-goog-api-key: $TOKEN" \
  -H "Accept: text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [{"text": "逐字输出一段关于人工智能的介绍"}]
    }]
  }'
响应格式为 Server-Sent Events (SSE),每个事件包含一个 JSON 对象:
data: {"candidates":[{"content":{"parts":[{"text":"人工"}],"role":"model"},"index":0}]}

data: {"candidates":[{"content":{"parts":[{"text":"智能"}],"role":"model"},"index":0}]}

生成配置

通过 generationConfig 控制输出行为:
curl -X POST "$BASE_URL/gemini/v1beta/models/gemini-1.5-pro:generateContent" \
  -H "x-goog-api-key: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [{"text": "写一首诗"}]
    }],
    "generationConfig": {
      "temperature": 0.9,
      "topP": 0.95,
      "topK": 40,
      "maxOutputTokens": 1024,
      "stopSequences": ["END"]
    }
  }'

安全设置

通过 safetySettings 调整内容过滤级别:
{
  "contents": [...],
  "safetySettings": [
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    }
  ]
}

工具调用

Gemini 支持函数调用(Function Calling):
{
  "contents": [{
    "parts": [{"text": "今天北京的天气怎么样?"}]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "get_weather",
      "description": "获取指定城市的天气信息",
      "parameters": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "城市名称"
          }
        },
        "required": ["city"]
      }
    }]
  }]
}
如果你更习惯 OpenAI 的 messages 格式和 tools 定义,可以直接使用 OpenAI 兼容路径(/v1/chat/completions),Rivus AI 会自动完成格式转换。详见《OpenAI 兼容》章节。

常见参数

  • contents:对话内容数组,每个元素包含 roleparts
  • generationConfig:生成配置(温度、最大 token 数等)
  • safetySettings:安全过滤设置
  • tools:可调用的函数定义
  • systemInstruction:系统指令(部分模型支持)
Rivus AI 会自动处理 token 计数、用量统计和计费,你无需关心底层实现细节。