本文详解如何通过 safety_settings 参数彻底关闭 gemini vision pro 模型的默认内容安全过滤,解决因图像触发敏感策略导致的 invalidargument 错误,并提供可直接运行的配置示例与关键注意事项。
在使用 Google Gemini Vision Pro(现已被整合进 gemini-1.5-pro 等更新模型,但 gemini-pro-vision 在旧版 SDK 中仍被广泛调用)进行多模态推理时,模型默认启用严格的安全过滤(Safety Settings),用于拦截潜在有害、违法或不适宜的内容。当输入图像(如自拍、含文字标识的场景、模糊纹理或特定构图)被安全系统误判为涉及 HARM_CATEGORY_* 类别时,API 会直接拒绝请求并抛出 google.api_core.exceptions.InvalidArgument 异常——该错误不返回具体原因,仅提示“error details recorded in logs”,极大增加调试难度。
要真正绕过这一限制,不能使用空列表 [] 或省略参数(SDK 会自动回退至默认高敏感阈值),而必须显式声明全部五大核心风险类别,并统一设为 "BLOCK_NONE"。注意:Gemini 官方文档明

safety_settings = [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_NONE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_NONE"
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_NONE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_NONE"
}
# 注意:HARM_CATEGORY_DANGEROUS(无 "_CONTENT" 后缀)不是有效类别,应删除
]✅ 正确用法示例(整合进你的函数):
import google.generativeai as genai
def Gemini_vision(prompt, image):
genai.configure(api_key=GEMINI_API_KEY)
model = genai.GenerativeModel('gemini-pro-vision')
safety_settings = [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
{"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}
]
response = model.generate_content(
contents=[image[0], prompt],
safety_settings=safety_settings
)
return response.text⚠️ 重要注意事项:
总结而言,禁用安全过滤的核心是精准枚举全部有效类别并设为 BLOCK_NONE,而非简化或遗漏。此举能显著提升调试效率,但务必与内容审核策略协同设计,平衡可用性与安全性。