生成 Gemini 内容

使用 Google Gemini 原生 API 结构生成内容。URL 中的模型名是 Token360 对外模型 ID;可通过 GET /v1/models 查询当前可用模型。

接口

  • POST /v1beta/models/{model}:generateContent — 返回单个 JSON 响应。
  • POST /v1beta/models/{model}:streamGenerateContent?alt=sse — 通过 Server-Sent Events 流式返回 Gemini JSON 响应。
  • POST /v1beta/models/{model}:countTokens — 本期暂不支持,返回 501 UNIMPLEMENTED。

这些接口的基础 URL 是 https://api.token360.ai。请勿在 /v1beta 前再拼接 /v1。

身份认证

支持以下两种 Google 兼容的 API Key 传递方式:

  • 请求头:x-goog-api-key: sk-your-api-key
  • 查询参数:?key=sk-your-api-key

建议使用请求头,避免 API Key 被客户端、代理或访问日志记录在 URL 中。

请求体

请求遵循 Gemini GenerateContentRequest 的原生字段结构,常用字段包括:

contentsContent[]

必填。对话内容;每一项包含 role 和一个或多个 parts。

systemInstructionContent

可选。使用 Gemini Content 格式传递系统指令。

generationConfigobject

可选。生成控制参数,例如 maxOutputTokens、temperature、topP、topK、stopSequences、responseMimeType 和 responseSchema;具体能力取决于模型。

safetySettingsSafetySetting[]

可选。Gemini 安全设置。

toolsTool[]

可选。工具定义,包括 functionDeclarations。

tools.typestring

Tool type, usually function.

tools.functionobject

Function definition.

toolConfigToolConfig

可选。函数调用配置。

Token360 会保留 Gemini 官方字段名。由于模型已包含在 URL 中,请求体不需要再传顶层 model 字段。

非流式示例

Shell
1curl https://api.token360.ai/v1beta/models/gemini-2.5-flash:generateContent \
2  -H 'x-goog-api-key: sk-your-api-key' \
3  -H 'Content-Type: application/json' \
4  -d '{
5    "contents": [{
6      "role": "user",
7      "parts": [{"text": "请用一句话解释向量数据库。"}]
8    }]
9  }'

成功响应使用 Gemini 原生结构,可能包含 candidates、usageMetadata、modelVersion 等上游返回字段。

流式示例

调用 streamGenerateContent 时设置 alt=sse:

Shell
1curl -N 'https://api.token360.ai/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse' \
2  -H 'x-goog-api-key: sk-your-api-key' \
3  -H 'Content-Type: application/json' \
4  -d '{
5    "contents": [{
6      "role": "user",
7      "parts": [{"text": "写两行问候语。"}]
8    }]
9  }'

每个 SSE data: 事件包含一个 Gemini 响应对象。客户端应按顺序消费 candidate parts,并在流关闭时结束;不要等待 OpenAI 协议的 [DONE] 标记。

多轮对话

Gemini 原生请求是无状态的。继续对话时,需要把之前的 user 与 model 内容连同新一轮用户消息一起重传:

JSON
1{
2  "contents": [
3    {"role": "user", "parts": [{"text": "我的项目叫 Aurora。"}]},
4    {"role": "model", "parts": [{"text": "明白了。"}]},
5    {"role": "user", "parts": [{"text": "我的项目叫什么?"}]}
6  ]
7}

函数调用

在 tools[].functionDeclarations 中声明函数。模型发起的函数调用会以 functionCall part 返回;执行工具后,应在后续请求中携带之前的对话内容,并使用 functionResponse part 回传结果。非流式与流式接口都会保留这些 Gemini 原生字段。

错误响应

Gemini 接口返回 Google 风格的错误结构。请以 HTTP 状态作为判断失败的首要依据:

JSON
1{
2  "error": {
3    "code": 400,
4    "message": "Invalid request",
5    "status": "INVALID_ARGUMENT"
6  }
7}

路由、统计与计费

虽然请求和响应使用 Gemini 原生格式,Token360 仍会完成 API Key 鉴权、SKU 与供应商路由、供应商密钥注入、错误归一化、请求归档、用量统计与计费。generateContent 和 streamGenerateContent 的用量会与其他 LLM 协议一样进入 Token360 的用量和账单视图。

此页面对您有帮助吗?