Gemini-Pro安全配置触发InvalidArgument错误:请求含无效参数
问题解决:自定义Vertex AI安全配置时的400错误及SQL生成拦截问题
错误原因
你的代码核心问题是安全配置格式错误:Vertex AI的GenerativeModel要求safety_settings参数接收由generative_models.SafetySetting实例组成的列表,而非字典。直接用字典传入会触发400参数无效错误。
修复后的代码
from vertexai.preview.generative_models import GenerativeModel from vertexai.preview import generative_models # 正确的安全配置格式:由SafetySetting对象组成的列表 safety_config = [ generative_models.SafetySetting( category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=generative_models.HarmBlockThreshold.BLOCK_NONE ), generative_models.SafetySetting( category=generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=generative_models.HarmBlockThreshold.BLOCK_NONE ), generative_models.SafetySetting( category=generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=generative_models.HarmBlockThreshold.BLOCK_NONE ), generative_models.SafetySetting( category=generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=generative_models.HarmBlockThreshold.BLOCK_NONE ) ] model = GenerativeModel( "gemini-pro", safety_settings=safety_config ) response = model.generate_content("用一句话描述AI的未来?") print(response.text)
关键说明
- 不要配置
HARM_CATEGORY_UNSPECIFIED:该类别为系统预留项,手动设置会导致参数无效,直接忽略即可。 - 解决SQL生成被拦截问题:将相关风险类别的拦截阈值设为
BLOCK_NONE或BLOCK_ONLY_HIGH(根据自身风险容忍度调整),可避免正常SQL生成请求被误拦截。 - 版本注意事项:
vertexai.preview下的API可能存在变动,需确保参数格式匹配当前版本要求,当前列表格式为标准用法。
内容的提问来源于stack exchange,提问作者Ya.
相关产品推荐
相关产品推荐

