Gemini (Google协议)
1. 概述
Google 推出的多模态人工智能模型,旨在处理多种数据类型,包括文本、图像、音频、视频和代码。
API 兼容性
本 API 符合 Google Gemini 接口规范,支持官方所有参数。
文档说明
本文档只列举了一部分参数,详细参数列表可参考 官方文档。
支持的 Google 模型
gemini-3.1-pro-preview(最新)gemini-3.1-flash-lite-previewgemini-3-flash-previewgemini-3-pro-preview(已下架,迁移至gemini-3.1-pro-preview)gemini-2.5-flash(计划于26年10月下架)gemini-2.5-pro(计划于26年10月下架)gemini-2.5-flash-lite
2. 请求说明
- 请求方法:
POST - 请求地址:
https://api.exchangetoken.ai/v1beta/models/{model}:generateContent - 请求地址(流式):
https://api.exchangetoken.ai/v1beta/models/{model}:streamGenerateContent?alt=sse
3. 请求参数
3.1 Header 参数
| 参数名称 | 类型 | 必须 | 说明 | 示例值 |
|---|---|---|---|---|
| Content-Type | string | 是 | 设置请求头类型,必须为 application/json | application/json |
| Accept | string | 是 | 设置响应类型,建议统一为 application/json | application/json |
| Authorization | string | 是 | 身份验证所需的 API_KEY,格式 Bearer $YOUR_API_KEY | Bearer $YOUR_API_KEY |
3.2 Body 参数 (application/json)
| 参数名称 | 类型 | 必须 | 说明 | 示例 |
|---|---|---|---|---|
| contents | array | 是 | 与模型当前对话的内容。对于单轮查询,这是单个实例。对于多轮查询(例如聊天),这是包含对话历史记录和最新请求的重复字段。 | [{"role":"user", "parts":[{"text":"A cute baby sea otter"}]}] |
| content.role | string | 是 | 消息角色。必须是 user 或 model。 | user |
| content.parts | array | 否 | 构成单条消息的有序 Parts。部分可能具有不同的 MIME 类型。 | [{"text":"A cute baby sea otter"}] |
| content.parts.text | string | 否 | 内嵌文本。 | A cute baby sea otter |
| content.parts.inlineData | struct | 否 | 内嵌媒体字节。 | - |
| content.parts.inlineData.mimeType | string | 是 | 来源数据的 IANA 标准 MIME 类型。 | image/png |
| content.parts.inlineData.data | string | 是 | 媒体格式的原始字节。使用 base64 编码的字符串。 | - |
| generationConfig | struct | 否 | 模型生成和输出的配置选项。 | - |
完整代码示例
1. 文本生成 (Text Generation)
curl "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "How does AI work?"
}
]
}
]
}'import requests
import json
url = "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"contents": [
{
"role": "user",
"parts": [
{"text": "How does AI work?"}
]
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())2. 思考模型 (Thinking Model)
curl "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "How does AI work?"
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "low"
}
}
}'import requests
import json
url = "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"contents": [
{
"role": "user",
"parts": [
{"text": "How does AI work?"}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "low"
}
}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())控制思维
Gemini 模型默认采用动态思维,会根据用户要求的复杂程度自动调整推理力度。不过,如果您有特定的延迟时间限制条件,或者需要模型进行比平时更深入的推理,可以选择使用参数来控制思考行为。
思考等级 (Gemini 3)
thinkingLevel 参数(建议用于 Gemini 3 及更高版本的模型)可用于控制推理行为。
下表详细列出了每种模型类型的 thinkingLevel 设置:
| 思考等级 | Gemini 3 Pro | Gemini 3 Flash | 说明 |
|---|---|---|---|
| minimal | 不受支持 | 支持 | 与大多数查询的"不思考"设置相匹配。对于复杂的编码任务,该模型可能只会进行非常简单的思考。最大限度地缩短聊天应用或高吞吐量应用的延迟时间。请注意,minimal 并不能保证思考功能已关闭。 |
| low | 支持 | 支持 | 最大限度地缩短延迟时间并降低费用。最适合简单的指令遵循、聊天或高吞吐量应用。 |
| medium | 不受支持 | 支持 | 平衡的思维,适合处理大多数任务。 |
| high | 支持(默认,动态) | 支持(默认,动态) | 最大限度地提高推理深度。模型可能需要更长时间才能生成第一个(非思考)输出令牌,但输出结果会经过更仔细的推理。 |
对于 Gemini 3 Pro,您无法停用思考功能。Gemini 3 Flash 也不支持完全关闭思考,但 minimal 设置意味着模型可能不会思考(尽管它仍然有可能思考)。如果您未指定思考等级,Gemini 将使用 Gemini 3 模型的默认动态思考等级 "high"。
Gemini 2.5 系列模型不支持 thinkingLevel;请改用 thinkingBudget。
思考预算
thinkingBudget 参数是随 Gemini 2.5 系列推出的,用于为模型提供指导,帮助其了解用于推理的思考 token 的具体数量。
注意事项
请将 thinkingLevel 参数与 Gemini 3 模型搭配使用。虽然 thinkingBudget 可用于实现向后兼容性,但将其与 Gemini 3 Pro 搭配使用可能会导致性能欠佳。
以下是每种模型类型的 thinkingBudget 配置详细信息。您可以通过将 thinkingBudget 设置为 0 来停用思考功能。将 thinkingBudget 设置为 -1 会启用动态思考,这意味着模型会根据请求的复杂程度调整预算。
| 型号 | 默认设置(未设置思考预算) | Range | 停用思考过程 | 开启动态思维 |
|---|---|---|---|---|
| 2.5 Pro | 动态思维 | 128到32768 | 不适用:无法停用思考功能 | thinkingBudget = -1(默认) |
| 2.5 Flash | 动态思维 | 0到24576 | thinkingBudget = 0 | thinkingBudget = -1(默认) |
| 2.5 Flash Lite | 模型不会思考 | 512到24576 | thinkingBudget = 0 | thinkingBudget = -1 |
3. 系统指令 (System Instruction)
curl "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"system_instruction": {
"parts": [
{
"text": "You are a cat. Your name is Neko."
}
]
},
"contents": [
{
"role": "user",
"parts": [
{
"text": "Hello there"
}
]
}
]
}'import requests
import json
url = "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"system_instruction": {
"parts": [
{"text": "You are a cat. Your name is Neko."}
]
},
"contents": [
{
"role": "user",
"parts": [
{"text": "Hello there"}
]
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())4. 多模态输入 (Multimodal Input)
# 使用临时文件保存 base64 编码的图像数据
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# 使用临时文件保存 JSON 载荷
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT
cat > "$TEMP_JSON" << EOF
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Tell me about this instrument"
},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "$(cat "$TEMP_B64")"
}
}
]
}
]
}
EOF
curl "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d "@$TEMP_JSON"import requests
import base64
import json
url = "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:generateContent"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
# 读取并编码图片
image_path = "path/to/image.jpeg"
with open(image_path, "rb") as image_file:
image_data = base64.b64encode(image_file.read()).decode('utf-8')
data = {
"contents": [
{
"role": "user",
"parts": [
{"text": "Tell me about this instrument"},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": image_data
}
}
]
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())支持的图片格式
Gemini 支持以下图片格式 MIME 类型:
- PNG -
image/png - JPEG -
image/jpeg - WEBP -
image/webp - HEIC -
image/heic - HEIF -
image/heif
如需了解其他文件输入方法,请参阅文件输入方法指南。
5. 流式响应 (Streaming Response)
curl "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse" \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
--no-buffer \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Explain how AI works"
}
]
}
]
}'import requests
import json
# 注意:流式请求使用 streamGenerateContent 且带参数 alt=sse
url = "https://api.exchangetoken.ai/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"contents": [
{
"role": "user",
"parts": [
{"text": "Explain how AI works"}
]
}
]
}
response = requests.post(url, headers=headers, json=data, stream=True)
for line in response.iter_lines():
if line:
print(line.decode('utf-8'))