Google Gemini API安全设置失效问题排查请求
Gemini翻译工具安全设置不生效问题排查与解决
问题概述
基于Gemini开发的多轮对话翻译工具,已将所有安全类别阈值设为BLOCK_NONE,但仍频繁因安全机制触发中断。API返回显示HARM_CATEGORY_DANGEROUS_CONTENT概率为MEDIUM,触发了安全拦截。
核心原因分析
从代码看,安全设置的参数传递存在错误:Google AI Node.js SDK中,安全配置的参数键应为safetySettings,而非自定义的safe,导致设置未被正确识别。
解决方案
1. 修正安全设置参数名
将代码中的safe参数改为safetySettings,确保SDK能正确读取配置:
const safetySettings = [ { "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", }, ]; async function run() { const model = genAI.getGenerativeModel( { model: "gemini-pro", safetySettings // 修正参数名 }); chat = model.startChat({}); const msg = readFile("./description.txt"); const result = await chat.sendMessage(msg); const response = await result.response; const text = response.text(); console.log(text); }
2. 排查多轮对话上下文影响
多轮对话会保留历史上下文,若之前的对话内容触发过安全标记,可能导致后续请求被拦截。可以尝试:
- 每次对话前重置会话(不复用
chat实例),测试单轮请求是否生效 - 清理历史对话内容后,重新发起请求
3. 确认SDK版本与模型权限
- 确保使用最新版本的Google AI Node.js SDK,旧版本可能存在配置兼容问题
- 验证Gemini-pro模型是否允许设置
BLOCK_NONE(官方文档显示该模型支持此阈值)
4. 测试单轮请求验证设置
先脱离多轮对话,用单轮请求测试安全设置是否生效,排除上下文干扰:
async function testSingleRequest() { const model = genAI.getGenerativeModel( { model: "gemini-pro", safetySettings }); const msg = readFile("./description.txt"); const result = await model.generateContent(msg); const response = await result.response; console.log(response.text()); }
内容的提问来源于stack exchange,提问作者Egor Vasilev
相关产品推荐
相关产品推荐

