Gemini(Google 兼容)
/v1beta/models/{model}:generateContent —— Google 原生格式接口,可直接使用 Google GenAI SDK。
AIZNT 提供 Google 原生格式的 Gemini 接口,可直接使用 Google GenAI SDK,或将 Gemini CLI 指向 AIZNT。
接口地址
POST https://token.aiznt.com/v1beta/models/{model}:generateContent
POST https://token.aiznt.com/v1beta/models/{model}:streamGenerateContent请求示例
curl "https://token.aiznt.com/v1beta/models/gemini-3.7-flash:generateContent" \
-H "x-goog-api-key: sk-你的aiznt密钥" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [{"text": "你好"}]
}]
}'常用请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
contents | array | 是 | 对话内容列表,每项包含 role 和 parts;简单请求可省略 role |
systemInstruction | object | 否 | 系统指令,结构为包含 parts 的 Content 对象 |
generationConfig | object | 否 | 生成配置容器 |
generationConfig.maxOutputTokens | integer | 否 | 候选回答的最大输出 token 数,思考模型还会从中消耗思考额度 |
generationConfig.temperature | number | 否 | 采样温度;有效范围和默认值取决于模型 |
generationConfig.topP | number | 否 | 核采样参数 |
generationConfig.topK | integer | 否 | 限制参与采样的候选 token 数 |
generationConfig.stopSequences | array | 否 | 自定义停止序列 |
generationConfig.candidateCount | integer | 否 | 返回的候选回答数量;部分模型不支持多个候选项 |
generationConfig.responseMimeType | string | 否 | 输出 MIME 类型,例如 application/json |
generationConfig.responseSchema | object | 否 | 结构化输出的 JSON Schema,需配合兼容的响应 MIME 类型和模型 |
generationConfig.thinkingConfig | object | 否 | 思考配置,可包含 thinkingLevel、thinkingBudget 或 includeThoughts |
tools | array | 否 | 模型可调用的工具,例如函数声明 |
toolConfig | object | 否 | 工具调用行为配置 |
safetySettings | array | 否 | 请求级安全设置;可用类别和阈值取决于服务与模型 |
参数兼容性
生成、思考、结构化输出、工具调用和安全参数的支持范围取决于 Gemini 模型版本。向不支持的模型传入参数可能返回错误。
输出 token 与思考配置
Gemini 原生接口使用 generationConfig.maxOutputTokens 控制本轮输出上限,不使用 OpenAI 兼容接口的 max_tokens 字段。对于支持思考的模型,思考过程也会消耗输出额度;额度过小时,可能返回 HTTP 200,但没有可展示的正文,且 candidates[0].finishReason 为 "MAX_TOKENS"。
{
"contents": [{"parts": [{"text": "用一句话介绍 AIZNT"}]}],
"generationConfig": {"maxOutputTokens": 1024}
}调用方不要只根据 HTTP 状态码判断成功,还应检查 candidates[].content.parts 与 candidates[].finishReason。如果没有正文且结束原因为 "MAX_TOKENS",请提高 maxOutputTokens 后重试,并检查 usageMetadata.thoughtsTokenCount 判断额度是否主要消耗在思考阶段。没有适用于所有 Gemini 模型的固定最小值。
以下小额度响应已经过平台实测:
{
"candidates": [
{"finishReason": "MAX_TOKENS"}
],
"usageMetadata": {
"promptTokenCount": 7,
"totalTokenCount": 13,
"thoughtsTokenCount": 6
}
}支持思考配置的模型可通过 generationConfig.thinkingConfig 控制思考行为。不同模型支持的关闭参数并不一致,请按下方兼容性表传参,不要仅根据模型 ID 推断。
关闭思考模式
以下结果于 2026-09-10 使用 AIZNT Google 原生接口实测,测试请求均设置 maxOutputTokens: 2000:
| 模型 ID | 是否可关闭思考 | 参数 | 说明 |
|---|---|---|---|
gemini-3.5-flash | 是 | thinkingBudget: 0 | 连续 3 次测试的 thoughtsTokenCount 均为 0 |
gemini-3.6-flash | 是 | thinkingBudget: 0 | 连续 3 次测试的 thoughtsTokenCount 均为 0 |
gemini-3.1-pro-preview | 是 | thinkingBudget: 0 | 连续 3 次测试的 thoughtsTokenCount 均为 0 |
gemini-3.7-flash | 不保证 | 无可靠的关闭参数 | thinkingBudget: 0 仍可能产生思考 token;thinkingLevel: "LOW" 只能降低思考等级,不能关闭 |
对前三个支持关闭的模型,可使用以下请求。将 URL 中的 {model} 替换为对应模型 ID:
curl "https://token.aiznt.com/v1beta/models/{model}:generateContent" \
-H "x-goog-api-key: sk-你的aiznt密钥" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [{"text": "分析这个问题并给出答案"}]
}],
"generationConfig": {
"maxOutputTokens": 2000,
"thinkingConfig": {
"thinkingBudget": 0
}
}
}'检查响应中的 usageMetadata.thoughtsTokenCount:字段为 0 或未返回时,本次请求未消耗思考 token。
gemini-3.7-flash 注意事项
平台对 thinkingBudget: 0 共测试 13 次,其中 3 次归零、10 次仍产生思考 token,因此不能将该参数视为可靠的关闭开关。thinkingLevel: "MINIMAL" 会返回 HTTP 400(该模型不支持 MINIMAL),thinkingLevel: "LOW" 可以调用,但仍会产生思考 token。
若需要模型返回可展示的思考内容,可设置 includeThoughts: true。当模型产生可返回的思考时,响应中会出现 thought: true 的内容块,应用应将它与最终正文分开处理:
{
"contents": [{"parts": [{"text": "分析 2+2 并给出答案"}]}],
"generationConfig": {
"maxOutputTokens": 512,
"thinkingConfig": {
"thinkingLevel": "LOW",
"includeThoughts": true
}
}
}includeThoughts 只控制是否返回可展示的思考内容,不会关闭思考,也不能保证降低思考 token 用量。可用的思考参数与取值取决于模型版本;向不支持的模型传入思考配置会返回错误。
响应字段
| 字段 | 说明 |
|---|---|
candidates[].content.parts[].text | 模型返回的文本内容 |
candidates[].content.parts[].thought | 为 true 时表示思考内容,不应当作最终正文展示 |
candidates[].finishReason | 结束原因,例如 STOP、MAX_TOKENS 或安全相关原因 |
usageMetadata.promptTokenCount | 输入 token 数 |
usageMetadata.candidatesTokenCount | 最终候选回答 token 数;空正文时可能不返回 |
usageMetadata.thoughtsTokenCount | 思考 token 数;模型未产生思考时可能不返回 |
usageMetadata.totalTokenCount | 输入、思考与候选回答的总 token 数 |
modelVersion / responseId | 实际模型版本与响应标识 |
流式输出
streamGenerateContent 返回 text/event-stream,每个事件以 data: 开头:
curl -N "https://token.aiznt.com/v1beta/models/gemini-3.7-flash:streamGenerateContent" \
-H "x-goog-api-key: sk-你的aiznt密钥" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"parts": [{"text": "写一首两行短诗"}]}]
}'流式处理中应逐条解析 data: 后的 JSON。中间事件的 finishReason 可能为空,最终事件会给出结束原因和用量信息。
Python SDK
from google import genai
client = genai.Client(
api_key="sk-你的aiznt密钥",
http_options={"base_url": "https://token.aiznt.com"},
)
resp = client.models.generate_content(
model="gemini-3.7-flash",
contents="你好",
)
print(resp.text)SDK 会自动拼接 /v1beta/models/...,因此 base_url 只填写域名,不要附加 /v1beta。
客户端接入
Gemini CLI 通过环境变量 GOOGLE_GEMINI_BASE_URL 与 GEMINI_API_KEY 接入,详见 Gemini CLI 接入指南。