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