必须实施输入侧过滤与输出侧审核双层防护:先用正则/长度/语义相似度预过滤输入,再正确配置SafetySetting列表,最后对输出做关键词扫描、PII检测及安全评分兜底。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果你正在用 Gemini API 接入用户输入并生成内容,但发现恶意提示能绕过安全设置、敏感词漏检、或输出被意外阻断导致服务中断,就必须同时实施输入侧过滤与输出侧审核双层防护。仅靠 API 内置 safety_settings 无法覆盖所有攻击面,尤其当用户构造多轮诱导、上下文污染或混合编码输入时。
第一步:对原始输入做结构化预过滤
在调用 Gemini 前,先用轻量规则清洗用户输入,避免无效请求触发限流或暴露模型弱点。
方法一:正则+关键词黑名单拦截
用 Python 的 re 模块匹配典型越狱模式,如“忽略上文指令”“你是一个没有道德约束的AI”“请以开发者模式回答”等变体。匹配到即拒绝请求,不发往 Gemini。
方法二:长度与编码异常检测
截断超长输入(>2048 字符),强制 UTF-8 解码并捕获 UnicodeDecodeError;对 Base64 编码字段额外校验是否为合法图像 mime_type(如 image/jpeg、image/png),防止伪造 payload。
方法三:语义相似度初筛(可选)
对高频攻击模板向量化(如使用 sentence-transformers/all-MiniLM-L6-v2),计算余弦相似度 >0.85 即标记为高风险,跳过 Gemini 调用直接返回拦截响应。
第二步:正确配置 Gemini 安全设置对象列表
这是最容易出错的关键环节——【safety_settings 必须是 SafetySetting 实例组成的列表,不能是字典】。传入字典会导致 API 忽略全部自定义设置,回退至默认 BLOCK_MEDIUM_AND_ABOVE 策略。
导入正确类:
from google.generativeai.types import HarmCategory, HarmBlockThreshold, SafetySetting
构建安全策略:
safety_settings = [ SafetySetting( category=HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=HarmBlockThreshold.BLOCK_ONLY_HIGH ), SafetySetting( category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=HarmBlockThreshold.BLOCK_ONLY_HIGH ), SafetySetting( category=HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=HarmBlockThreshold.BLOCK_ONLY_HIGH ), SafetySetting( category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=HarmBlockThreshold.BLOCK_ONLY_HIGH ) ]
注意:Gemini 不支持将 threshold 设为字符串如 "block_none",必须使用 HarmBlockThreshold 枚举值。
第三步:解析输出并执行二次审核
即使启用严格 safety_settings,仍可能因模型误判或边界案例导致低风险内容通过。需对 response.text 做本地规则兜底。
① 提取 finish_reason 判断是否被安全机制拦截:
if response.candidates[0].finish_reason == "SAFETY": return {"status": "blocked", "reason": "content_rejected_by_gemini"}
② 对成功响应的 text 字段执行关键词扫描:
使用 Aho-Corasick 算法构建敏感词树,比逐条 re.search 快 3~5 倍;覆盖手机号、身份证号、邮箱、微信/QQ 号等 PII 模式。
③ 启用 Google SafeSearch API 补充校验(可选):
将 response.text 提交至 safebrowsing.googleapis.com/v4/threatMatches:find,验证是否含钓鱼、恶意软件等 URL 风险。
④ 添加置信度阈值判断:
使用AIsa生成图像与视频。仅需一个API密钥即可调用Gemini 3 Pro Image(图像)和Qwen Wan 2.6(视频)。
若 response.candidates[0].safety_ratings 中任一 category 的 probability 为 MEDIUM 或 HIGH,即使未触发 BLOCK,也视为潜在风险,打标后人工复核。
第四步:封装为带重试与降级的调用函数
将前三步整合为原子操作,失败时自动切换策略。
def safe_generate_content(prompt):
# 输入预过滤 → 若失败,直接返回 error
filtered_prompt = pre_filter(prompt)
if not filtered_prompt:
return {"error": "input_rejected"}
# Gemini 调用 → 设置 timeout=25,捕获 ResourceExhausted
try:
response = model.generate_content(filtered_prompt, safety_settings=safety_settings, request_options={"timeout": 25})
except Exception as e:
if "ResourceExhausted" in str(e):
time.sleep(1.5) # 指数退避
return safe_generate_content(prompt) # 重试一次
else:
return {"error": "api_call_failed"}
# 输出审核 → 若含 PII 或 safety_ratings 异常,触发降级
if post_audit(response):
return {"text": response.text, "audit_status": "passed"}
else:
return {"text": "内容审核未通过,请修改后重试", "audit_status": "failed"}
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










