生成 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.typestringTool type, usually function.
tools.functionobjectFunction definition.
toolConfigToolConfig可选。函数调用配置。
Token360 会保留 Gemini 官方字段名。由于模型已包含在 URL 中,请求体不需要再传顶层 model 字段。
非流式示例
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:
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 内容连同新一轮用户消息一起重传:
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 状态作为判断失败的首要依据:
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 的用量和账单视图。