安全指导

大型语言模型 (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 提供的可调整安全设置。
  • 请参阅提示简介,以开始编写您的第一个提示。