安全指导

生成式人工智能模型是功能强大的工具,但也有其局限性。它们的多样性和适用性有时可能会导致意外的输出,例如不准确、有偏见或令人反感的输出。后处理和严格的人工评估对于限制此类输出带来的伤害风险至关重要。

Gemini API 提供的模型可用于各种生成式 AI 和自然语言处理 (NLP) 应用。这些功能只能通过 Gemini API 或 Google AI Studio Web 应用使用。使用 Gemini API 时还须遵守《生成式 AI 使用限制政策》《Gemini API 服务条款》

大语言模型 (LLM) 之所以如此实用,部分原因在于它们是创意工具,可以处理许多不同的语言任务。遗憾的是,这也意味着大语言模型可能会生成意料之外的输出,包括令人反感、不顾他人感受或事实上不正确的文本。更重要的是,这些模型具有出色的多样性,但也因此很难准确预测它们可能会产生哪些不理想的输出。虽然 Gemini API 在设计时考虑到了 Google AI 原则,但开发者有责任以负责任的方式应用这些模型。为了帮助开发者创建安全可靠的应用,Gemini API 内置了一些内容过滤功能,并提供了可调整的安全设置,可从 4 个危害维度进行调整。如需了解详情,请参阅安全设置指南。

本文档旨在向您介绍使用 LLM 时可能会出现的一些安全风险,并推荐新兴的安全设计和开发建议。(请注意,法律法规也可能会施加限制,但此类考虑因素不在本指南的讨论范围内。)

建议在构建使用 LLM 的应用时遵循以下步骤:

  • 了解应用的安全风险
  • 考虑进行调整,以降低安全风险
  • 执行适合您的应用场景的安全测试
  • 征求用户反馈和监控使用情况

调整和测试阶段应以迭代方式进行,直到您获得适合应用的性能。

模型实施周期

了解应用的安全风险

在此背景下,安全性是指 LLM 避免对用户造成伤害的能力,例如避免生成有害的语言或宣传刻板印象的内容。通过 Gemini API 提供的模型在设计时秉承了 Google 的 AI 原则,您在使用这些模型时须遵守《生成式 AI 使用限制政策》。该 API 提供内置的安全过滤条件,有助于解决一些常见的语言模型问题,例如有害语言和仇恨言论,并力求实现包容性并避免刻板印象。不过,每款应用都可能给用户带来不同的风险。因此,作为应用所有者,您有责任了解用户以及应用可能造成的潜在危害,并确保应用以安全负责的方式使用 LLM。

在进行此评估时,您应考虑发生危害的可能性,并确定危害的严重程度和缓解措施。例如,与生成虚构故事以供娱乐的应用相比,根据事实事件生成文章的应用需要更加谨慎地避免提供错误信息。开始探索潜在安全风险的好方法是研究最终用户以及可能受到应用结果影响的其他人员。这可以采取多种形式,包括研究应用领域中的最新研究成果、观察用户如何使用类似应用,或者开展用户研究、调查或与潜在用户进行非正式访谈。

高级提示

  • 与目标人群中不同类型的潜在用户交流,了解您的应用及其预期用途,以便更全面地了解潜在风险,并根据需要调整多样性标准。
  • 美国政府的国家标准与技术研究院 (NIST) 发布的 AI 风险管理框架为 AI 风险管理提供了更详细的指导和更多学习资源。
  • DeepMind 发表的关于 语言模型造成伤害的伦理和社会风险 的出版物详细介绍了语言模型应用可能造成伤害的方式。

考虑进行调整,以降低安全风险

现在,您已经了解了相关风险,可以决定如何缓解这些风险。确定要优先处理哪些风险以及应采取哪些措施来防范这些风险是一项关键决策,类似于对软件项目中的 bug 进行分级。确定优先事项后,您可以开始考虑最合适的缓解措施类型。通常,简单的更改就能带来改变并降低风险。

例如,在设计应用时,请考虑以下事项:

  • 调整模型输出,使其更好地反映应用上下文中的可接受内容。调优可使模型的输出更具可预测性和一致性,因此有助于降低某些风险。
  • 提供有助于生成更安全输出的输入方法。您向 LLM 提供的确切输入内容可能会影响输出内容的质量。 尝试使用不同的输入提示,找到最适合您的使用情形的安全提示,这非常值得一试,因为这样一来,您就可以提供有助于实现这一目标的 UX。例如,您可以限制用户只能从下拉输入提示列表中进行选择,或者提供包含描述性短语的弹出式建议,这些短语在您的应用环境中表现安全。
  • 在向用户显示输出内容之前,屏蔽不安全的输入内容并过滤输出内容。在简单的情况下,可以使用屏蔽名单来识别和屏蔽提示或回答中的不安全字词或短语,或者要求人工审核者手动更改或屏蔽此类内容。

  • 使用经过训练的分类器,逐一标记可能包含潜在危害或对抗性信号的提示。然后,您可以根据检测到的危害类型应用不同的策略来处理请求。例如,如果输入具有明显的对抗性或辱骂性,系统可能会屏蔽该输入,而是输出预编写的回答。

    高级提示

    • 如果信号确定输出有害,应用可以采用以下选项:
      • 提供错误消息或预编写的输出内容。
      • 再次尝试该提示,看看是否会生成其他安全输出,因为有时同一提示会生成不同的输出。

  • 采取防范故意滥用的保障措施,例如为每位用户分配唯一 ID,并限制在给定时间段内可提交的用户查询量。另一项安全措施是尝试防范可能的提示注入。提示注入与 SQL 注入非常相似,都是恶意用户设计输入提示来操纵模型输出的方式,例如,发送一条输入提示,指示模型忽略任何之前的示例。如需详细了解蓄意滥用行为,请参阅《生成式 AI 使用限制政策》

  • 将功能调整为风险较低的功能。 范围较窄的任务(例如从文本段落中提取关键字)或需要更多人工监督的任务(例如生成将由人工审核的短视频内容)通常风险较低。例如,您可能不会从头开始创建一个用于撰写电子邮件回复的应用,而是将其限制为根据大纲进行扩展或建议替代措辞。

执行适合您的应用场景的安全测试

测试是构建稳健安全的应用的关键环节,但测试的程度、范围和策略会有所不同。例如,纯粹用于娱乐的俳句生成器可能比律师事务所用于总结法律文件和帮助起草合同的应用带来的风险要低。不过,俳句生成器可能会被更多种类的用户使用,这意味着对抗性尝试甚至意外的有害输入的可能性会更大。实现上下文也很重要。例如,如果应用在采取任何行动之前,其输出会经过人工专家审核,那么与没有此类监督的相同应用相比,该应用被认为不太可能产生有害输出。

即使是风险相对较低的应用,在确信可以发布之前,也需要经历多次更改和测试迭代。以下两种测试对于 AI 应用特别有用:

  • 安全基准比较是指设计安全指标,以反映应用在可能的使用方式方面可能存在的不安全之处,然后使用评估数据集测试应用在这些指标上的表现。在测试之前,最好先考虑安全指标的最低可接受水平,以便 1) 根据这些预期评估测试结果,以及 2) 根据评估您最关心的指标的测试来收集评估数据集。

    高级提示

    • 请注意,不要过度依赖“现成”的方法,因为您可能需要使用人工评估者构建自己的测试数据集,才能完全适应应用的上下文。
    • 如果您有多个指标,则需要确定,如果某项更改导致一个指标有所改进,但另一个指标有所下降,您将如何权衡。与其他性能工程一样,您可能需要关注评估集中的最坏情况性能,而不是平均性能。
  • 对抗性测试是指主动尝试破坏应用。目标是找出弱点,以便您采取适当的措施来弥补这些弱点。对抗性测试可能需要具有应用专业知识的评估人员花费大量时间/精力,但测试次数越多,发现问题的几率就越大,尤其是那些很少发生或仅在应用重复运行后才发生的问题。

    • 对抗性测试是一种系统性评估方法,用来了解在用户恶意或无意输入有害内容时,机器学习模型将如何应对:
      • 如果输入内容明显是为了产生不安全或有害输出,那就属于恶意输入内容。例如,要求文本生成模型生成针对特定宗教的仇恨咆哮。
      • 如果输入内容本身可能无害,但会产生有害输出,那就属于无意的有害输入内容。例如,要求文本生成模型描述特定种族的人,但模型输出种族主义内容。
    • 对抗性测试与标准评估的区别在于用于测试的数据的构成。对于对抗性测试,请选择最有可能让模型生成问题输出的测试数据。这意味着要探测模型在所有可能出现的危害类型方面的行为,包括与安全政策相关的罕见或不寻常的示例和极端情况。还应包含句子不同维度(例如结构、含义和长度)的多样性。如需详细了解在构建测试数据集时应考虑哪些因素,您可以参阅 Google 在公平性方面的 Responsible AI 实践

      高级提示

      • 使用自动化测试,而不是采用传统方法,即招募“红队”人员来尝试破解您的应用。在自动化测试中,“红队”是另一个语言模型,用于查找会使被测模型生成有害输出的输入文本。

监控问题

无论您进行多少测试和缓解措施,都无法保证完美无缺,因此请提前规划如何发现和处理出现的问题。常见方法包括设置一个受监控的渠道供用户分享反馈(例如,点赞/点踩评分),以及开展用户研究以主动征求不同用户的反馈意见,如果使用模式与预期不同,则此方法尤其有用。

高级提示

后续步骤

  • 请参阅安全设置指南,了解可通过 Gemini API 调整的安全设置。
  • 请参阅提示简介,开始撰写您的第一个提示。