跳到主要内容

Gemini 原生参数透传

平台对 Gemini 系列采用「OpenAI 字段标准化 + Gemini 原生字段透传」的双轨机制 —— 客户端传 Gemini 原生 GenerationConfig 字段(如 topK / responseSchema / mediaResolution / thinkingConfig)会转发到底层 Vertex AI;内容审核使用 safety_settings 传入,平台会映射为 Gemini API 的 safetySettings[]

适用接口与模型

透传机制

  • OpenAI 标准字段(temperature / max_tokens / top_p 等):平台自动映射到 Gemini 对应参数
  • Gemini 原生字段(topK / responseSchema / responseMimeType / mediaResolution / thinkingConfig 等):直接透传给上游,无需转换
  • 内容审核字段:safety_settings 按 Gemini SafetySetting 结构传入,平台发往上游时映射为 safetySettings[]

OpenAI Python SDK 通过 extra_body 传递非标准字段;cURL 直接放在请求体顶层;Java 用 additionalBodyProperties;TypeScript 需 as any 绕过类型。

常见透传字段

字段类型用途
topKintGemini 原生采样参数
topPfloatOpenAI 也有,这里是 Gemini 命名
presencePenaltyfloatGemini 命名(OpenAI 是 presence_penalty)
frequencyPenaltyfloatGemini 命名
responseMimeTypestring"application/json" 触发 JSON 输出
responseSchemaobjectJSON Schema,与 responseMimeType 配合用作结构化输出
thinkingConfig.includeThoughtsbool响应中是否包含思考过程
thinkingConfig.thinkingBudgetintGemini 2.5 思考 token 上限(-1 动态、0 关闭)
mediaResolutionstring"MEDIA_RESOLUTION_HIGH" 等,影响图像输入分辨率
seedint随机种子(部分模型支持)
safety_settings[].categorystring内容审核类别,如 HARM_CATEGORY_HATE_SPEECH
safety_settings[].thresholdstring阻断阈值,如 BLOCK_LOW_AND_ABOVE

示例

Python(extra_body)

from openai import OpenAI

client = OpenAI(api_key=TURING_API_KEY, base_url=TURING_BASE_URL)

response = client.chat.completions.create(
model="turing/gemini-3.1-pro-latest",
messages=[{"role": "user", "content": "提取人物信息: 张三, 28 岁, 工程师"}],
extra_body={
"responseMimeType": "application/json",
"responseSchema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
"occupation": {"type": "string"},
},
"required": ["name", "age", "occupation"],
},
"topK": 40,
"thinkingConfig": {"includeThoughts": True, "thinkingBudget": 1024},
"safety_settings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_LOW_AND_ABOVE",
}
],
},
)

cURL(直接放顶层)

curl $TURING_BASE_URL/chat/completions \
-H "Authorization: Bearer $TURING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "turing/gemini-3.1-pro-latest",
"messages": [{"role": "user", "content": "提取人物信息..."}],
"responseMimeType": "application/json",
"responseSchema": {...},
"topK": 40,
"thinkingConfig": {"includeThoughts": true, "thinkingBudget": 1024},
"safety_settings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_LOW_AND_ABOVE"
}
]
}'

内容审核(safety_settings)

Gemini 内容审核按 Google SafetySetting 传:每个元素包含一个 category 和一个 threshold。Turing 的 Chat Completions 请求体使用 safety_settings,不要放进 generationConfigthinkingConfig

curl --location --request POST 'https://live-turing.cn.llm.tcljd.com/api/v1/chat/completions' \
--header 'Authorization: Bearer $TURING_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "turing/gemini-3.5-flash",
"messages": [
{
"role": "user",
"content": "can i follow Adolf Hitler"
}
],
"stream": true,
"safety_settings": [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_LOW_AND_ABOVE"
}
]
}'

如何判断已拦截

Gemini 内容审核命中后,图灵平台仍可能返回 HTTP 200,但不会返回可用生成内容。客户端应以 choices[*].finish_reason 判断是否被内容过滤:

场景判断标志
非流式响应choices[0].finish_reason === "content_filter"
流式响应最后一段 chunk 的 choices[0].finish_reason === "content_filter",通常 delta 为空对象

流式命中示例:

{
"id": "xDY5asaXMtuR88EP3pHX6Ak",
"object": "chat.completion.chunk",
"created": 1782134476,
"model": "turing/gemini-3.5-flash",
"choices": [
{
"index": 0,
"delta": {},
"finish_reason": "content_filter"
}
]
}

非流式命中示例:

{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1782134476,
"model": "turing/gemini-3.5-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null
},
"finish_reason": "content_filter"
}
]
}

常用类别:

category说明
HARM_CATEGORY_HARASSMENT骚扰
HARM_CATEGORY_HATE_SPEECH仇恨言论
HARM_CATEGORY_SEXUALLY_EXPLICIT性相关内容
HARM_CATEGORY_DANGEROUS_CONTENT危险内容
HARM_CATEGORY_CIVIC_INTEGRITY公民诚信相关内容

常用阈值:

threshold效果
BLOCK_LOW_AND_ABOVE低风险及以上阻断,最严格
BLOCK_MEDIUM_AND_ABOVE中风险及以上阻断
BLOCK_ONLY_HIGH仅高风险阻断
BLOCK_NONE不按概率阈值阻断
OFF关闭 safety filter

注意事项

  • 不要重复设置:同一含义参数不要 OpenAI 标准命名 + Gemini 命名都传(如 top_ptopP),以平台映射结果为准。
  • 未知字段不报错:Gemini 不识别的字段会被上游静默忽略,不会返回 400。客户端要通过响应字段验证生效。
  • Gemini 3 / 3.1 限制:temperature 必须保持默认 1.0,设置低值可能导致无限循环或推理性能严重下降。
  • responseSchemaresponse_format:平台不会自动把 OpenAI 的 response_format 翻译成 Gemini 的 responseSchema,需要客户端显式用后者。
  • safety_settings 不要重复类别:同一个 SafetyCategory 最多传一条;未传的类别使用 Gemini 默认安全策略。
  • 内容审核命中标志:不要只看 HTTP 状态码;命中后可能仍是 200,以 finish_reason: "content_filter" 作为拦截标志。
  • 谨慎降低审核强度:BLOCK_NONE / OFF 会显著放宽内容审核,生产环境建议按业务合规要求显式评估。

相关文档