跳转到主要内容
POST
https://llm.ai-nebula.com
/
v1beta
/
models
/
{model}
:generateContent
Gemini原生 (文本)
curl --request POST \
  --url https://llm.ai-nebula.com/v1beta/models/{model}:generateContent \
  --header 'Content-Type: application/json' \
  --data '
{
  "contents": [
    {}
  ],
  "generationConfig": {},
  "systemInstruction": {},
  "safetySettings": [
    {}
  ],
  "tools": [
    {}
  ],
  "toolConfig": {},
  "cachedContent": "<string>"
}
'
{
  "candidates": [
    {
      "content": {
        "parts": [{"text": "回复文本"}],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": []
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 20,
    "totalTokenCount": 30,
    "thoughtsTokenCount": 0,
    "cachedContentTokenCount": 0
  },
  "modelVersion": "gemini-2.5-pro",
  "createTime": "2025-01-01T00:00:00Z"
}

简介

Gemini 原生 API 采用 Google Gemini 的请求与响应格式,适用于 Google 官方客户端(如 google-generativeai SDK)或需要直接使用 Gemini 数据结构的场景。该接口遵循 Gemini API 规范,支持思考模式(Thinking)、多模态输入、工具调用、Google 搜索(Grounding)、Context Caching、图像生成等完整能力。
若使用 OpenAI 兼容客户端(如 OpenAI SDK),请使用 /v1/chat/completions 接口。

与 OpenAI 格式的区别

特性Gemini 原生OpenAI 兼容(/v1/chat/completions)
消息结构contents[].parts[](text / inlineData / fileData)messages[].content
角色user / modeluser / assistant / system
系统提示systemInstruction.partsmessages 中 role=system
流式streamGenerateContent?alt=ssestream: true
思考模式generationConfig.thinkingConfig 或模型后缀模型后缀(如 -thinking

API 端点

功能方法路径
文本生成(非流式)POST/v1beta/models/{model}:generateContent
文本生成(流式)POST/v1beta/models/{model}:streamGenerateContent?alt=sse
单条 EmbeddingPOST/v1beta/models/{model}:embedContent
批量 EmbeddingPOST/v1beta/models/{model}:batchEmbedContents
路径中的 {model} 需替换为实际模型 ID,如 gemini-2.5-progemini-3-pro-preview

认证

支持以下任一方式:
Authorization
string
Bearer Token:Bearer sk-xxxxxxxxxx(推荐,与 Nebula 其他接口一致)
x-goog-api-key
string
Google 风格 API Key:x-goog-api-key: sk-xxxxxxxxxx
也可在 URL 中传参:?key=sk-xxxxxxxxxx

请求参数

generateContent / streamGenerateContent

contents
array
必填
对话内容列表。每项包含 roleusermodel)和 parts 数组。parts 元素可为:{"text": "..."}{"inlineData": {"mimeType": "...", "data": "base64..."}}{"fileData": {"mimeType": "...", "fileUri": "gs://..."}}
generationConfig
object
生成配置。
  • temperature:0–2,随机性
  • topP:核采样
  • topK:Top-K 采样
  • maxOutputTokens:最大输出 token 数
  • stopSequences:停止序列
  • responseMimeType:如 text/plain
  • responseModalities:如 ["TEXT"]["IMAGE"]
  • thinkingConfig:思考模式(见下文)
  • imageConfig:图像生成配置(见下文)
systemInstruction
object
系统指令,格式为 {"parts": [{"text": "..."}]}
safetySettings
array
安全等级,如 [{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "OFF"}]
tools
array
工具声明(Function Calling),见高级功能。
toolConfig
object
工具配置,如 functionCallingConfig.modeAUTO / ANY / NONE
cachedContent
string
Context Caching 返回的缓存 ID,用于复用已缓存上下文。

响应格式

非流式 generateContent 返回 JSON:
{
  "candidates": [
    {
      "content": {
        "parts": [{"text": "回复文本"}],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": []
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 20,
    "totalTokenCount": 30,
    "thoughtsTokenCount": 0,
    "cachedContentTokenCount": 0
  },
  "modelVersion": "gemini-2.5-pro",
  "createTime": "2025-01-01T00:00:00Z"
}
流式接口返回 SSE,每行以 data: 开头,内容为 JSON 片段(含 candidates[].content.parts 等)。

基础示例

curl -X POST "https://llm.ai-nebula.com/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxxxx" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "用一句话介绍人工智能"}]}
    ],
    "generationConfig": {
      "temperature": 0.7,
      "maxOutputTokens": 1024
    }
  }'
google-generativeai 默认请求 Google 官方端点,接入 Nebula 时需通过 client_options 或环境变量将 api_endpoint 设为 https://llm.ai-nebula.com。具体以所用 SDK 文档为准。

高级功能

思考模式(Thinking)

支持三种方式:
  1. generationConfig.thinkingConfig(Gemini 2.5 Pro):使用 thinkingBudget(token 数)
  2. thinkingConfig.thinkingLevel(Gemini 3 Pro):使用 LOW / HIGH
  3. 模型后缀-thinking-thinking-8192-nothinking-thinking-low-thinking-high
{
  "contents": [{"role": "user", "parts": [{"text": "给一道几何题并分步解析"}]}],
  "generationConfig": {
    "maxOutputTokens": 8192,
    "thinkingConfig": {
      "includeThoughts": true,
      "thinkingBudget": 8192
    }
  }
}

多模态输入

contents[].parts 中混合文本与媒体:
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {"text": "描述这张图片"},
        {
          "inlineData": {
            "mimeType": "image/jpeg",
            "data": "/9j/4AAQSkZJRg..."
          }
        }
      ]
    }
  ]
}
  • 图片inlineData + base64 data,或 fileData + fileUri(如 gs://...
  • 音频inlineDatamimeTypeaudio/mp3

工具调用(Function Calling)

{
  "contents": [{"role": "user", "parts": [{"text": "上海今天天气怎么样?"}]}],
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": "get_weather",
          "description": "获取指定城市的天气",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {"type": "string"}
            },
            "required": ["location"]
          }
        }
      ]
    }
  ],
  "toolConfig": {
    "functionCallingConfig": {
      "mode": "AUTO",
      "allowedFunctionNames": []
    }
  }
}
模型可能返回 functionCall part,需在下一轮 contents 中附带 functionResponse 再请求。

Google 搜索(Grounding)

启用后,模型可基于实时网络检索增强回答(如天气、新闻等)。在 tools 中加入 googleSearch 即可:
{
  "contents": [{"role": "user", "parts": [{"text": "今天北京天气怎么样?"}]}],
  "tools": [
    {
      "googleSearch": {}
    }
  ],
  "toolConfig": {
    "functionCallingConfig": {
      "mode": "AUTO"
    }
  }
}
若同时使用 Function Calling 与 Google 搜索,将 googleSearch: {}functionDeclarations 放在同一 tools 数组的不同元素中即可。回答中可能包含检索来源信息(如 groundingMetadata)。

流式输出

使用端点:POST /v1beta/models/{model}:streamGenerateContent?alt=sse,请求体与 generateContent 相同。响应为 SSE 流,每条 data: 为一块 JSON。

Context Caching(上下文缓存)

首次请求不带 cachedContent,若服务端返回可缓存标识,后续请求在 body 中带上:
{
  "cachedContent": "cached-content-id",
  "contents": [{"role": "user", "parts": [{"text": "基于上文继续回答"}]}]
}
可降低长上下文重复计费与延迟。

图像生成(Gemini 2.5 Flash 等)

当模型支持图像输出时,在 generationConfig 中指定:
{
  "contents": [{"role": "user", "parts": [{"text": "画一只猫"}]}],
  "generationConfig": {
    "responseModalities": ["IMAGE"],
    "imageConfig": {
      "aspectRatio": "1:1",
      "imageSize": "1K",
      "imageOutputOptions": {"mimeType": "image/png"}
    }
  }
}
响应中 candidates[].content.parts 会包含 inlineData(如 base64 图片)。

Embedding API

单条:embedContent

端点POST https://llm.ai-nebula.com/v1beta/models/{model}:embedContent 请求体示例
{
  "model": "text-embedding-004",
  "content": {
    "parts": [{"text": "要嵌入的文本"}]
  }
}
或使用 model 在 path 中:/v1beta/models/text-embedding-004:embedContent,body 仅含 content

批量:batchEmbedContents

端点POST https://llm.ai-nebula.com/v1beta/models/{model}:batchEmbedContents 请求体示例
{
  "requests": [
    {"content": {"parts": [{"text": "第一段文本"}]}},
    {"content": {"parts": [{"text": "第二段文本"}]}}
  ]
}
响应为数组,每项对应一条嵌入向量。

错误处理

接口使用 HTTP 状态码与 JSON body 表示错误,例如:
{
  "error": {
    "code": 400,
    "message": "Invalid request: ...",
    "status": "INVALID_ARGUMENT"
  }
}
常见情况:
状态码含义
400请求参数错误(如缺少 contents、模型不支持某参数)
401认证失败(API Key 无效或未传)
404模型不存在或路径错误
429限流,请稍后重试
500服务端错误
建议在客户端统一解析 error.message 并做重试或提示。

与 OpenAI 格式对比

项目Gemini 原生OpenAI(/v1/chat/completions)
基础 URL 路径/v1beta/models/{model}:generateContent/v1/chat/completions
认证Authorization: Bearer sk-xxxx-goog-api-keyAuthorization: Bearer sk-xxx
消息格式contents[].parts[](text/inlineData/fileData)messages[].content(字符串或数组)
系统提示systemInstruction.partsmessagesrole: "system"
流式streamGenerateContent?alt=ssestream: true
思考模式thinkingConfig 或模型后缀模型后缀(如 -thinking
工具定义tools[].functionDeclarationstools[].function(OpenAI 格式)
适用客户端Google SDK、自建 HTTP 客户端OpenAI SDK、兼容 OpenAI 的各类客户端
选择建议:已使用 Google Gemini 生态或需要 Gemini 独有字段(如 thinkingConfig、原生多模态 part)时用原生接口;希望与 OpenAI 生态统一时用 /v1/chat/completions