安全指导

生成式人工智能模型是强大的工具,但它们并非没有限制。它们的通用性和适用性有时会导致意外输出,例如不准确、有偏差或令人反感的输出。后期处理和严格的手动评估对于限制此类输出造成损害的风险至关重要。

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 提供的确切输入会改变输出的质量。不妨对输入提示进行实验,找出最适合您用例的提示,这值得您一臂之力,因为接下来,您就可以提供相应的用户体验了。例如,您可以限制用户只能从输入提示下拉列表中进行选择,或者提供包含描述性短语的弹出式建议(您认为该短语在应用上下文中可以安全运行)。
  • 屏蔽不安全的输入,并在输出显示给用户之前对其进行过滤。在简单的情况下,屏蔽名单可用于识别和屏蔽提示或回答中的不安全字词或短语,或者要求人工审核者手动更改或屏蔽此类内容。

  • 使用经过训练的分类器为每个提示添加潜在危害或对抗性信号标签。然后,根据检测到的损害类型,可以采用不同的策略来处理请求。例如,如果输入明显具有攻击性或侮辱性,则可能会被阻止,改为输出预先编写好的响应。

    高级技巧

    • 如果信号确定输出是有害的,则应用可采用以下选项:
      • 提供错误消息或预先编写了脚本的输出。
      • 请再次尝试该提示,以防系统生成备用安全输出,因为有时相同的提示会产生不同的输出。

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

  • 将功能调整为本身风险较低的功能。 范围较窄的任务(例如,从文本段落中提取关键字)或需要更强的人工监督(例如生成将由人工审核的短视频内容)的任务通常具有较低的风险。例如,与其创建应用来从头开始撰写电子邮件回复,不如将其限制为扩充内容纲要或建议其他措辞。

执行适合您的用例的安全测试

测试是构建强大且安全的应用的关键一环,但测试范围、测试范围和策略会有所不同。例如,仅仅是好玩的俳句诗生成器带来的风险可能不如专为律师事务所设计的应用程序,用于总结法律文件并帮助起草合同。但是,俳句诗生成器可能被更广泛的用户使用,这意味着对抗尝试甚至意外的有害输入的可能性更大。实施环境也很重要。例如,如果某个应用的输出在执行操作之前经过人工专家审核,那么与没有此类监督的相同应用相比,该应用生成有害输出的可能性较低。

在确信自己已准备好发布之前,反复多次进行更改和测试是很常见的,即使对于风险相对较低的应用也是如此。两种测试对 AI 应用特别有用:

  • 安全基准测试涉及设计安全指标,这些指标反映您的应用在使用可能性的情况下可能不安全的方式,然后使用评估数据集测试应用在这些指标上的表现。最好在测试前考虑可接受的最低安全指标级别,以便 1) 对照这些预期评估测试结果;2) 根据用于评估您最关注指标的测试来收集评估数据集。

    高级提示

    • 避免过度依赖“现成的”方法,因为您可能需要通过人工评分者来构建自己的测试数据集,以完全适合应用的情境。
    • 如果您有多个指标,则需要决定在一项更改能够使某一项指标的改进与另一项指标不相上下时如何进行权衡。与其他性能工程一样,您可能希望关注整个评估集的最差性能,而不是平均性能。
  • 对抗性测试涉及主动尝试破坏您的应用。目标是找出薄弱环节,以便您采取适当措施进行补救。对抗性测试可能需要具有应用专业知识的评估人员花费大量时间/工作量,但您执行得越多,发现问题的可能性就越大,尤其是那些很少或仅在重复运行应用后发生的问题。

    • 对抗性测试是一种系统地评估机器学习模型的方法,目的是了解模型在收到恶意或无意中有害的输入时的行为方式:
      • 如果输入的设计明显是为了生成不安全或有害的输出(例如,要求文本生成模型生成关于特定宗教的仇恨言论),则该输入可能是恶意的。
      • 如果输入本身可能是无害的,但会产生有害的输出(例如,要求文本生成模型描述特定种族的人并收到种族主义输出),则会无意中造成伤害。
    • 对抗性测试与标准评估的区别在于,用于测试的数据的组成。对于对抗性测试,请选择最有可能从模型中引发有问题的输出的测试数据。这意味着,要探测所有可能的危害类型的行为,包括罕见或不常见的示例以及与安全政策相关的极端情况。它还应该包含句子不同维度的多样性,例如结构、含义和长度。您可以参阅 Google 的 Responsible AI 公平性做法,详细了解构建测试数据集时的注意事项。

      高级提示

      • 使用自动化测试(而非招募“红队”人员的传统方法)来尝试破坏您的应用。在自动化测试中,“红色团队”是另一种语言模型,它能够查找会导致被测模型产生有害输出的输入文本。

监控问题

无论您进行多少次测试和缓解,都不能保证完美,因此请提前规划如何发现和处理出现的问题。常见方法包括设置受监控的渠道供用户分享反馈(例如,我喜欢/不喜欢),以及开展用户研究以主动从多元化用户处征集反馈 - 在使用模式与预期不同时尤其有用。

高级提示

  • 当用户对 AI 产品提供反馈时,可以随着时间的推移大幅提升 AI 性能和用户体验,例如帮助您选择更好的示例进行提示调优等。Google 的《人与 AI 指南》中的“反馈和控制”一章重点介绍了在设计反馈机制时需要考虑的关键注意事项。

后续步骤

  • 如需了解 Gemini API 提供的可调整安全设置,请参阅安全设置指南。
  • 请参阅提示简介以开始编写您的第一批提示。