Gemini 兼容接口

最后更新

REST 前缀 https://modelportal.ai/v1beta,鉴权用 x-goog-api-key: YOUR_API_KEY、查询参数 key=YOUR_API_KEY 或 Authorization: Bearer YOUR_API_KEY,带了几处时必须相同。请求与响应格式与 Gemini API 一致。路径里的 {模型} 是模型 ID,斜杠可以直接写,也可以写成 %2F。

POST /v1beta/models/{模型}:generateContent

字段 类型 必填 说明
contents array 是 对话内容,parts 支持 text、inlineData、fileData、functionCall、functionResponse
systemInstruction object 否 系统提示
generationConfig object 否 temperature、topP、topK、maxOutputTokens、candidateCount、responseMimeType、responseSchema、thinkingConfig 等;不填 maxOutputTokens 时平台按模型上限和可用余额补一个值
tools、toolConfig — 否 函数调用
{
  "candidates": [{"content": {"role": "model", "parts": [{"text": "你好!"}]}, "finishReason": "STOP"}],
  "usageMetadata": {"promptTokenCount": 9, "candidatesTokenCount": 4, "totalTokenCount": 13, "cost": 0.000013},
  "provider": "PROVIDER_ID",
  "attempts": [{"provider": "PROVIDER_ID", "endpoint": "ENDPOINT_ID", "status": 200, "cost": 0.000013}],
  "modelVersion": "MODEL_ID"
}

usageMetadata 是计费用量:promptTokenCount 含缓存读写,candidatesTokenCount 不含推理,thoughtsTokenCount、cachedContentTokenCount 单列。usageMetadata.cost 是这次的扣费(USD),provider、attempts 是承接的供应商和每次尝试;流式时这三项写在带 usageMetadata 的最后一段里。响应头见接口概览。

POST /v1beta/models/{模型}:streamGenerateContent

请求体同 generateContent。带 ?alt=sse 时以 SSE 返回;不带时返回 JSON 数组。

POST /v1beta/models/{模型}:countTokens

计算输入 token 数,不计费。请求体可以是 contents,也可以是 generateContentRequest。

POST /v1beta/models/{模型}:embedContent 与 :batchEmbedContents

生成向量,模型要具备向量能力。batchEmbedContents 里每条的 model 必须为空或与路径里的模型相同。

GET /v1beta/models

列出这把密钥能调用的模型,以及每个模型支持的方法和 token 上限。

错误

错误体为 {"error": {"code", "message", "status"}},code 是 HTTP 状态码,status 只由它决定:

HTTP status
400、422 INVALID_ARGUMENT
401 UNAUTHENTICATED
402、429 RESOURCE_EXHAUSTED
403 PERMISSION_DENIED
404、410 NOT_FOUND
502、503 UNAVAILABLE

422 时 error.excluded 列出排除原因。各状态对应的平台错误码见常见错误。