Gemini 接口规范
兼容 Gemini 原生协议,路径中含模型 ID,适合已有 Gemini SDK 集成的项目。
| 项目 | 值 |
|---|---|
| Base URL | POST https://api.taiha.cn/v1beta/models/{modelId}:streamGenerateContent |
| API Key | 在控制台创建 |
| Model ID | 在模型广场查看(仅支持标注 Gemini 协议的模型) |
基础对话
POST /v1beta/models/<Model ID>:generateContent
- cURL
- Python
cURL
curl --location --request POST 'https://api.taiha.cn/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [{
"parts": [{
"text": "How does AI work?"
}]
}]
}'
Python
import requests
url = "https://api.taiha.cn/v1beta/models/<Model ID>:generateContent"
headers = {
"x-goog-api-key": "<API Key>",
"Content-Type": "application/json",
}
payload = {
"contents": [{
"parts": [{
"text": "How does AI work?"
}]
}]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
print(data)
鉴权说明: Gmini 协议请求 header 中默认使用
Authorization: Bearer <API Key>,如遇到不能识别 Authorization 参数的情形,可将"Authorization": "Bearer <API Key>"替换为"x-goog-api-key": "<API Key>"。
搜索请求
原生模型搜索请求
POST /v1beta/models/<Model ID>:generateContent
- cURL
- Python
cURL
curl --location --request POST 'https://api.taiha.cn/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [{
"parts": [{
"text": "北京今天天气怎么样?"
}]
}],
"tools": [{
"googleSearch": {}
}, {
"urlContext": {}
}]
}'
Python
import requests
url = "https://api.taiha.cn/v1beta/models/<Model ID>:generateContent"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API Key>",
}
payload = {
"contents": [{
"parts": [{
"text": "北京今天天气怎么样?"
}]
}],
"tools": [{
"googleSearch": {}
}, {
"urlContext": {}
}]
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
result = response.json()
print(result)
默认搜索请求
POST /v1beta/models/<Model ID>:generateContent
- cURL
- Python
cURL
curl --location --request POST 'https://api.taiha.cn/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [{
"parts": [{
"text": "北京今天天气怎么样?"
}]
}]
}'
Python
import requests
url = "https://api.taiha.cn/v1beta/models/<Model ID>:generateContent"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API Key>",
}
payload = {
"contents": [{
"parts": [{
"text": "北京今天天气怎么样?"
}]
}]
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
result = response.json()
print(result)
视频理解
POST /v1beta/models/<Model ID>:generateContent
- cURL
- Python
cURL
curl --location --request POST 'https://api.taiha.cn/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [{
"parts": [{
"inline_data": {
"mime_type": "video/mp4",
"data": "<Base64 Code>"
}
}, {
"text": "请总结这个视频的主要内容,并列出三个关键时刻。"
}]
}]
}'
Python
import requests
url = "https://api.taiha.cn/v1beta/models/<Model ID>:generateContent"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API Key>",
}
payload = {
"contents": [{
"parts": [{
"inline_data": {
"mime_type": "video/mp4",
"data": "<Base64 Code>"
}
}, {
"text": "请总结这个视频的主要内容,并列出三个关键时刻。"
}]
}]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
print(data)
Base64 编码说明:
<Base64 Code>参数是将视频文件进行 Base64 编码后的字符串,参考脚本如下:
#!/usr/bin/env bash
set -euo pipefail
VIDEO_PATH="./demo.mp4"
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
base64 $B64FLAGS "$VIDEO_PATH" > base64.txt
常用参数
| 参数 | 类型 | 说明 |
|---|---|---|
contents | array | 必填。多轮消息,role 为 user 或 model |
systemInstruction | object | 系统指令,格式 { parts: [{ text }] } |
generationConfig | object | 生成参数,见下表 |
generationConfig
| 参数 | 说明 |
|---|---|
temperature | 随机性 [0, 2] |
topP | 核采样 [0, 1] |
maxOutputTokens | 最大输出长度 |
响应格式
Gemini 响应为 SSE,每条 data: 是一个 JSON 片段:
{
"candidates": [{
"content": { "role": "model", "parts": [{ "text": "增量文本" }] },
"finishReason": "STOP"
}],
"usageMetadata": { "promptTokenCount": 10, "candidatesTokenCount": 20 }
}
与 OpenAI SSE 不同:末尾无
[DONE],以最后一条finishReason非空(STOP/MAX_TOKENS)表示结束。