Gemini 原生接口

概述

AIone 支持以 Google Gemini 原生 API 格式直接调用网关,适用于自建网关聚合、Google Gemini SDK 以及已有 Gemini 对接代码的场景。

请求和响应格式与 Google Gemini API 完全一致,网关仅做认证、路由和计费,不做任何格式转换。

接入信息

项目
Base URL https://api.openbili.com
认证头 Authorization: Bearer sk-nex-your-key-here
非流式端点 POST /v1beta/models/{model}:generateContent
流式端点 POST /v1beta/models/{model}:streamGenerateContent?alt=sse

注意: 使用 AIone 的 API Key(sk-nex-xxx),不是 Google 的 API Key。

支持的模型

所有已接入的 Gemini 模型均可通过原生接口调用,包括:

文本模型: gemini-2.5-flashgemini-2.5-progemini-3-pro-previewgemini-3-flash-previewgemini-3.1-pro

图片生成模型: gemini-3.1-flash-image-previewgemini-3-pro-image-previewgemini-2.5-flash-image

完整列表请查询 GET https://api.openbili.com/v1/models

非流式请求 — generateContent

基础示例

curl https://api.openbili.com/v1beta/models/gemini-2.5-flash:generateContent \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "用一句话解释量子计算"}]}
    ],
    "generationConfig": {
      "maxOutputTokens": 256,
      "temperature": 0.7
    }
  }'

响应格式

{
  "candidates": [
    {
      "content": {
        "parts": [{"text": "量子计算是利用量子力学原理..."}],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 25,
    "totalTokenCount": 35
  },
  "modelVersion": "gemini-2.5-flash"
}

图片生成示例

curl https://api.openbili.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "画一只可爱的猫咪"}]}
    ],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "maxOutputTokens": 4096,
      "imageConfig": {
        "imageSize": "2K",
        "aspectRatio": "16:9"
      }
    }
  }'

图片在响应的 candidates[0].content.parts[] 中以 inlineData 形式返回(base64 编码)。

注意: 4K 图片生成可能需要 2-3 分钟,请将客户端 HTTP 超时设置为 ≥ 600 秒。

流式请求 — streamGenerateContent

在端点 URL 末尾加 ?alt=sse,响应以 SSE (Server-Sent Events) 格式逐 chunk 返回。

示例

curl https://api.openbili.com/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "写一首关于春天的诗"}]}
    ],
    "generationConfig": {
      "maxOutputTokens": 512
    }
  }'

SSE 响应格式

data: {"candidates":[{"content":{"parts":[{"text":"春风"}],"role":"model"},"index":0}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":2,"totalTokenCount":10}}

data: {"candidates":[{"content":{"parts":[{"text":"拂面来,"}],"role":"model"},"index":0}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":5,"totalTokenCount":13}}

data: {"candidates":[{"content":{"role":"model"},"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":28,"totalTokenCount":36}}

每个 data: 行是一个独立的 JSON 对象。usageMetadata累积值,最后一个 chunk 的数值为最终用量。

注意: 图片生成模型不支持 streamGenerateContent,请使用 generateContent

Python SDK 示例

import google.generativeai as genai
 
genai.configure(
    api_key="sk-nex-your-key-here",
    transport="rest",
    client_options={"api_endpoint": "https://api.openbili.com"},
)
 
model = genai.GenerativeModel("gemini-2.5-flash")
response = model.generate_content("用一句话解释量子计算")
print(response.text)

Node.js SDK 示例

import { GoogleGenerativeAI } from "@google/generative-ai";
 
const genAI = new GoogleGenerativeAI("sk-nex-your-key-here");
// 需要设置自定义 endpoint
const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" });
 
const result = await model.generateContent("用一句话解释量子计算");
console.log(result.response.text());

注意: Google 官方 SDK 可能不直接支持自定义 endpoint。如果遇到此限制,建议使用 HTTP 直接调用或使用支持自定义 Base URL 的第三方库。

与 OpenAI 兼容格式的对比

维度 Gemini 原生格式 OpenAI 兼容格式
端点 /v1beta/models/{model}:generateContent /v1/chat/completions
请求体 contents + generationConfig messages + max_tokens
响应体 candidates + usageMetadata choices + usage
图片参数 imageConfig.imageSize / imageConfig.aspectRatio image_size / aspect_ratio
流式 :streamGenerateContent?alt=sse "stream": true
适用场景 自建网关聚合、已有 Gemini 代码 通用客户端、IDE 插件

两种格式访问的是同一组模型和同一组上游通道,选择哪种取决于你的客户端。

限制与注意事项

  1. 认证方式:使用 AIone 的 sk-nex- API Key,不是 Google API Key
  2. 图片模型不支持流式streamGenerateContent 对图片生成模型会返回 503,请使用 generateContent
  3. 支持的 action:仅支持 generateContentstreamGenerateContent,不支持 countTokensembedContent
  4. 超时设置:图片生成(尤其 4K)请将 HTTP 超时设置为 ≥ 600 秒
  5. 格式透传:请求和响应均为字节级透传,网关不做任何格式转换