需显式配置gemini安全过滤机制:一、在generate_content中传入含六类harm_category的safety_settings字典;二、用harmcategory/harmblockthreshold枚举构建类型安全配置;三、在start_chat中全局设定策略;四、仅对必要类别设block_none,禁用全部将违反服务条款。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用 Gemini 生成内容时希望主动抑制敏感信息输出,需明确配置其内置的多类别安全过滤机制。Gemini 并不默认启用宽松策略,必须通过显式声明危害类别与对应阻断阈值来生效。以下是实现该目标的实战设置步骤:
一、显式传入完整 safety_settings 字典(SDK 级配置)
此方法适用于单次请求,直接在 generate_content 调用中注入过滤策略,避免依赖默认或空配置导致策略未加载。Gemini 将依据该字典对六类危害内容进行实时拦截。
1、确保已安装 google-generativeai >= 0.8.1,并完成 API 密钥配置。
2、初始化 GenerativeModel 实例时,不传入 safety_settings 参数;该参数须在 generate_content 方法中显式提供。
3、构造包含全部有效类别的字典,键为字符串形式的 HARM_CATEGORY_*,值为字符串阈值,例如:{"HARM_CATEGORY_HARASSMENT": "BLOCK_MEDIUM_AND_ABOVE", "HARM_CATEGORY_SEXUALLY_EXPLICIT": "BLOCK_ONLY_HIGH", "HARM_CATEGORY_HATE_SPEECH": "BLOCK_MEDIUM_AND_ABOVE", "HARM_CATEGORY_DANGEROUS_CONTENT": "BLOCK_MEDIUM_AND_ABOVE", "HARM_CATEGORY_MEDICAL": "BLOCK_ONLY_HIGH", "HARM_CATEGORY_VIOLENCE": "BLOCK_MEDIUM_AND_ABOVE"}。
4、将该字典作为 safety_settings 参数传入 model.generate_content(),不可省略任一类别,否则缺失项将回退至默认高敏感策略。
二、使用 HarmCategory 与 HarmBlockThreshold 枚举构建类型安全配置
该方式规避字符串硬编码风险,提升代码可维护性与 IDE 自动补全支持,尤其适合长期演进项目或团队协作场景。
1、从 google.generativeai.types 导入 HarmCategory 和 HarmBlockThreshold。
2、检查当前 SDK 支持的完整类别列表:print([c.name for c in HarmCategory]),确认 HARM_CATEGORY_MEDICAL 等扩展类别存在。
3、构建字典,键使用 HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,值使用 HarmBlockThreshold.BLOCK_LOW_AND_ABOVE。
4、将该字典赋值给 safety_settings 参数并调用 generate_content;若出现 ValueError,说明所用枚举值在当前版本中已被弃用或拼写不匹配。
三、在 ChatSession 中全局启用一致过滤强度
当需在整个对话生命周期内维持统一内容边界时,可在会话初始化阶段一次性设定安全策略,后续所有 send_message 均继承该配置,无需重复声明。
1、调用 model.start_chat() 方法,并传入 safety_settings 参数,结构与 generate_content 所需完全一致。
2、验证是否生效:在会话中连续发送含潜在骚扰倾向的语句(如“如何嘲讽同事”),观察是否稳定返回 SAFETY_BLOCKED 错误而非生成响应。
3、注意:临时聊天模式(Incognito mode)下该配置仍有效,但不会保存历史记录或影响其他会话的安全上下文。
4、若会话中途需切换策略,必须新建 ChatSession,现有实例无法动态更新 safety_settings。
四、禁用特定类别以保留业务必要表达
某些合规场景需允许中低风险表述存在(如医疗咨询中提及“癌症治疗方案”),此时应针对性放开对应类别,而非整体关闭过滤。
1、识别业务必需但易被拦截的类别,例如 HARM_CATEGORY_MEDICAL 在健康问答中常触发误拦。
2、将该类别阈值设为 "BLOCK_NONE",其余类别保持原有严格等级,例如:{"HARM_CATEGORY_MEDICAL": "BLOCK_NONE", "HARM_CATEGORY_HARASSMENT": "BLOCK_MEDIUM_AND_ABOVE"}。
3、测试对比:使用相同 prompt 分别在启用与禁用 HARM_CATEGORY_MEDICAL 的配置下运行,确认仅该类拦截解除,其余风险仍受控。
4、严禁将全部类别设为 BLOCK_NONE,该操作将导致模型完全失去政策合规约束,违反 Google Cloud AI 服务条款。











