安全的最佳实践open in new window
使用我们免费的审核API
OpenAI的审核API是免费使用的,它可以帮助减少完成任务中不安全内容的出现频率。另外,您也可以根据自己的使用情况开发自己的内容过滤系统。
对抗性测试
我们建议对你的应用程序进行 "红队 "测试,以确保它对对抗性输入的稳健性。在广泛的输入和用户行为上测试你的产品,既要有代表性的集合,又要反映出有人试图 "破坏 "你的应用程序。它是否游离于主题之外?有人能很容易地通过提示注入重定向功能,例如 "忽略先前的指示,改做这个"?
Human in the loop (HITL)
只要有可能,我们建议在实践中使用产出之前,由人类来审查它们。这在高风险领域和代码生成方面尤其关键。人类应该意识到系统的局限性,并且能够获得验证输出结果所需的任何信息(例如,如果应用程序总结了笔记,人类应该能够很容易地获得原始笔记以进行参考)。
提示工程
"提示工程 "可以帮助约束输出文本的主题和语气。这就减少了产生不想要的内容的机会,即使用户试图产生这些内容。为模型提供额外的背景(比如在新的输入之前给出一些高质量的期望行为的例子)可以使模型的输出更容易被引导到期望的方向。
“Know your customer” (KYC)
用户一般需要注册和登录来访问你的服务。将这项服务与现有的账户联系起来,如Gmail、LinkedIn或Facebook的登录,可能会有帮助,但可能不适合所有的使用情况。要求使用信用卡或身份证可以进一步降低风险。
限制用户输入和限制输出token
限制用户可以输入提示的文本量有助于避免提示注入。限制输出token的数量有助于减少误用的机会。
缩小输入或输出的范围,特别是来自可信来源的输入或输出,减少了应用程序内可能的滥用程度。
允许用户通过验证的下拉字段进行输入(例如,维基百科上的电影列表),比允许开放式文本输入更安全。
在可能的情况下,从后端验证过的材料集中返回输出,比返回新生成的内容更安全(例如,将客户查询路由到最佳匹配的现有客户支持文章,而不是试图从头开始回答查询)。
允许用户报告问题
用户一般应该有一个容易使用的方法来报告不适当的功能或其他关于应用程序行为的问题(列出的电子邮件地址,票据提交方法等)。这种方法应该由一个人监控,并在适当的时候作出回应。
理解并沟通限制
从产生幻觉的不准确信息,到令人反感的输出,再到偏见等等,如果不做重大修改,语言模型可能并不适合每一个用例。考虑该模型是否适合你的目的,并评估API在广泛的潜在输入上的性能,以确定API的性能可能下降的情况。考虑你的客户群和他们将使用的输入范围,并确保他们的期望被校准。
TIP
在OpenAI,安全和安保对我们来说非常重要。
如果您在开发过程中发现API或其他与OpenAI相关的安全问题,请通过我们的协调漏洞披露计划提交这些问题。
终端用户ID
在您的请求中发送终端用户ID,可以成为帮助OpenAI监控和检测滥用行为的有用工具。这使得OpenAI在检测到您的应用程序有任何违反政策的行为时,可以向您的团队提供更多可操作的反馈。
ID应该是一个能唯一识别每个用户的字符串。我们建议对他们的用户名或电子邮件地址进行散列,以避免向我们发送任何识别信息。如果你向未登录的用户提供你的产品预览,你可以发送一个会话ID来代替。
你可以通过user
参数在你的API请求中包括最终用户ID,如下所示:
Python:
response = openai.Completion.create(
model="text-davinci-003",
prompt="This is a test",
max_tokens=5,
user="user123456"
)
2
3
4
5
6
cUrl:
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "text-davinci-003",
"prompt": "This is a test",
"max_tokens": 5,
"user": "user123456"
}'
2
3
4
5
6
7
8
9