OpenAi的安全最佳实践
使用我们的免费审核 API
OpenAI 的审核 API 是免费使用的,可以帮助减少完成过程中不安全内容的频率。或者,您可能希望开发自己的内容过滤系统,以适合您的用例。
对抗性测试
我们建议对应用程序进行“红队”处理,以确保它对对抗性输入具有健壮性。在广泛的输入和用户行为中测试您的产品,包括代表性集和那些反映试图“破坏”您的应用程序的人的输入和行为。会跑题吗?有人可以通过提示注入轻松重定向该功能,例如“忽略前面的说明并执行此操作”吗?
人机交互 (HITL)
在可能的情况下,我们建议在实践中使用之前进行人工审核输出。这在高风险领域和代码生成中尤其重要。人类应该意识到系统的局限性,并可以访问验证输出所需的任何信息(例如,如果应用程序汇总了笔记,则人类应该可以轻松访问原始笔记以参考)。
快速工程
“提示工程”可以帮助约束输出文本的主题和语气。这减少了产生不需要的内容的机会,即使用户试图制作它。为模型提供额外的上下文(例如,在新输入之前提供一些所需行为的高质量示例)可以更轻松地将模型输出引导到所需方向。
“了解您的客户”(KYC)
用户通常需要注册并登录才能访问您的服务。将此服务链接到现有帐户(例如 Gmail、LinkedIn 或 Facebook 登录)可能会有所帮助,但可能不适用于所有用例。要求信用卡或身份证可进一步降低风险。
约束用户输入并限制输出令牌
限制用户可以在提示中输入的文本量有助于避免提示注入。限制输出令牌的数量有助于减少误用的可能性。
缩小输入或输出的范围,特别是从可信来源获取的输入或输出,可以减少应用程序中可能的滥用程度。
允许用户通过经过验证的下拉字段(例如,维基百科上的电影列表)输入比允许开放式文本输入更安全。
在可能的情况下,从后端的一组经过验证的材料返回输出可能比返回新颖生成的内容更安全(例如,将客户查询路由到最匹配的现有客户支持文章,而不是尝试从头开始回答查询)。
允许用户报告问题
用户通常应该有一种易于获得的方法,用于报告功能不当或有关应用程序行为的其他问题(列出的电子邮件地址、票证提交方法等)。这种方法应由人工监控并酌情响应。
了解和传达限制
从幻觉不准确的信息,到令人反感的输出,再到偏见等等,如果不进行重大修改,语言模型可能并不适合每个用例。考虑模型是否适合您的目的,并评估 API 在各种潜在输入上的性能,以确定 API 性能可能下降的情况。考虑您的客户群和他们将使用的输入范围,并确保他们的期望得到适当的校准。
在OpenAI,安全和保障对我们非常重要。
如果在开发过程中,您确实注意到 API 或与 OpenAI 相关的任何其他内容存在任何安全或安保问题,请通过我们的协调漏洞披露计划提交这些问题。
最终用户标识
在请求中发送最终用户 ID 是帮助 OpenAI 监控和检测滥用行为的有用工具。这使 OpenAI 能够在我们检测到您的应用程序中有任何违反策略的行为时为您的团队提供更多可操作的反馈。
ID 应是唯一标识每个用户的字符串。我们建议对他们的用户名或电子邮件地址进行哈希处理,以避免向我们发送任何识别信息。如果您向未登录的用户提供产品预览,则可以改为发送会话 ID。
您可以通过参数在 API 请求中包含最终用户 ID,如下所示:user
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"
}'