API 参考
Gemini 原生接口
以 Google Gemini API 原生格式调用 Gemini 模型。
需要与 Google Gemini API(GenAI 风格)逐字段对齐时,使用 FIM Gate 的 Gemini 原生入口。Gemini 的接口形态与 OpenAI 差异较大:模型名写在 URL 路径里,请求体用 contents / parts 结构。若无对齐需求,可改用 OpenAI 兼容接口。
端点
| 项目 | 值 |
|---|---|
| Base URL | https://api.gate.fim.ai |
| 非流式 | POST /v1beta/models/{model}:generateContent |
| 流式 | POST /v1beta/models/{model}:streamGenerateContent?alt=sse |
| 鉴权 | x-goog-api-key: $FIM_API_KEY |
{model} 替换为模型 ID,如 gemini-2.5-flash、gemini-2.5-pro。流式请求必须带查询参数 alt=sse,否则返回的是 JSON 数组分块而非标准 SSE。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
contents | array | 是 | 对话内容数组,每项含 role(user / model)和 parts |
contents[].parts | array | 是 | 内容块数组,文本用 {"text": "..."},内联图片用 inline_data(含 mime_type 和 base64 data) |
systemInstruction | object | 否 | 系统指令,结构为 {"parts": [{"text": "..."}]} |
generationConfig | object | 否 | 生成参数集合,见下表 |
safetySettings | array | 否 | 安全过滤阈值配置 |
tools | array | 否 | 工具声明,函数调用用 functionDeclarations |
generationConfig 常用字段:
| 字段 | 类型 | 说明 |
|---|---|---|
temperature | number | 采样温度 |
topP | number | 核采样阈值 |
topK | integer | 候选截断数量 |
maxOutputTokens | integer | 输出 token 上限 |
stopSequences | array | 终止序列 |
注意 Gemini 原生格式字段名为驼峰式(maxOutputTokens),与 OpenAI 的蛇形命名不同。
非流式请求
curl "https://api.gate.fim.ai/v1beta/models/gemini-2.5-flash:generateContent" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $FIM_API_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "为什么海水是咸的?"}]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'响应结构:
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{"text": "海水中的盐分主要来自岩石风化……"}
]
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 9,
"candidatesTokenCount": 182,
"totalTokenCount": 191
},
"modelVersion": "gemini-2.5-flash"
}生成文本位于 candidates[0].content.parts[].text。
finishReason 取值
| 取值 | 含义 |
|---|---|
STOP | 正常结束 |
MAX_TOKENS | 达到 maxOutputTokens 上限 |
SAFETY | 触发安全过滤 |
RECITATION | 因复述检测被中止 |
流式请求(SSE)
curl "https://api.gate.fim.ai/v1beta/models/gemini-2.5-flash:streamGenerateContent?alt=sse" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $FIM_API_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "写一段 50 字的产品介绍"}]
}
]
}'每个 SSE 事件的 data 是一个与非流式响应同构的 JSON 片段,增量文本同样在 candidates[0].content.parts[].text,逐事件拼接即可。
配合 Google GenAI SDK 使用
pip install -U google-genaifrom google import genai
from google.genai import types
client = genai.Client(
api_key="$FIM_API_KEY",
http_options=types.HttpOptions(base_url="https://api.gate.fim.ai"),
)
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="你好",
)
print(response.text)通过 http_options.base_url 把 SDK 的请求指向 FIM Gate,其余用法与官方 SDK 一致。