生产最佳实践

利用最佳实践将 AI 项目过渡到生产环境。

本指南提供了一套全面的最佳实践,可帮助您从原型过渡到生产。无论您是经验丰富的机器学习工程师还是新手,本指南都应该为您提供在生产环境中成功使用平台所需的工具:从保护对我们 API 的访问到设计可以处理高流量的强大架构。使用本指南可帮助制定计划,以尽可能顺利有效地部署应用程序。

如果您想进一步探索进入生产的最佳实践,请查看我们的开发人员日讲座:

设置您的组织

登录 OpenAI 账户后,您可以在组织设置中找到您的组织名称和 ID。组织名称是组织的标签,显示在用户界面中。组织 ID 是组织的唯一标识符,可用于 API 请求。

属于多个组织的用户可以传递标头以指定用于 API 请求的组织。这些 API 请求的使用量将计入指定组织的配额。如果未提供标头,则默认组织将计费。您可以在用户设置中更改默认组织。

您可以从 Team (团队) 页面邀请新成员加入您的组织。成员可以是读取者所有者

读者:

  • 可以发出 API 请求。
  • 可以查看组织基本信息。
  • 可以在组织中创建、更新和删除资源(如 Assistant),除非另有说明。

业主:

  • 拥有读者的所有权限。
  • 可以修改账单信息。
  • 可以管理组织内的成员。

管理账单限制

要开始使用 OpenAI API,请输入您的账单信息。如果未输入账单信息,您仍将拥有登录访问权限,但无法发出 API 请求。

输入账单信息后,您将获得每月 100 USD 的批准使用限额,该限额由 OpenAI 设置。随着您在平台上的使用量增加以及您从一个使用套餐转移到另一个使用套餐,您的配额限制将自动增加。您可以在账户设置的 limits (限制) 页面中查看当前的使用限制。

如果您希望在使用量超过特定金额时收到通知,可以通过使用限制页面设置通知阈值。当达到通知阈值时,组织的所有者将收到一封电子邮件通知。您还可以设置每月预算,以便在达到每月预算后,任何后续 API 请求都将被拒绝。请注意,这些限制是尽力而为,在使用和实施限制之间可能会有 5 到 10 分钟的延迟。

API 密钥

OpenAI API 使用 API 密钥进行身份验证。访问您的 API 密钥页面以检索您将在请求中使用的 API 密钥。

这是一种相对简单的访问控制方法,但您必须警惕保护这些密钥。避免在代码或公共存储库中公开 API 密钥;相反,请将它们存储在安全的位置。您应该使用环境变量或 Secret Management Service 向应用程序公开密钥,这样就无需在代码库中对它们进行硬编码。在我们的 API 密钥安全最佳实践中阅读更多内容。

启用跟踪后,可以在 Usage (使用情况) 页面上监控 API 密钥使用情况。如果您使用的是 2023 年 12 月 20 日之前生成的 API 密钥,则默认情况下不会启用跟踪。您可以在 API 密钥管理控制面板上启用后续跟踪。2023 年 12 月 20 日之后生成的所有 API 密钥都启用了跟踪。任何以前未跟踪的使用情况都将显示在仪表板中。Untracked

暂存项目

在扩展时,您可能希望为暂存和生产环境创建单独的项目。您可以在控制面板中创建这些项目,从而隔离您的开发和测试工作,这样就不会意外地中断您的实时应用程序。您还可以限制用户访问您的生产项目,并为每个项目设置自定义费率和支出限制。

扩展您的解决方案架构

在为使用我们的 API 的生产设计应用程序或服务时,请务必考虑如何扩展以满足流量需求。无论您选择哪家云服务提供商,您都需要考虑几个关键领域:

  • 水平扩展:您可能希望水平扩展应用程序,以适应来自多个来源的应用程序请求。这可能涉及部署额外的服务器或容器来分配负载。如果您选择这种类型的扩展,请确保您的架构旨在处理多个节点,并且您有适当的机制来平衡它们之间的负载。
  • 垂直扩展:另一种选择是垂直扩展您的应用程序,这意味着您可以增强单个节点的可用资源。这将涉及升级服务器的功能以处理额外的负载。如果您选择这种类型的扩展,请确保您的应用程序旨在利用这些额外的资源。
  • 缓存:通过存储经常访问的数据,您可以缩短响应时间,而无需重复调用我们的 API。您的应用程序需要设计为尽可能使用缓存的数据,并在添加新信息时使缓存失效。有几种不同的方法可以做到这一点。例如,您可以将数据存储在数据库、文件系统或内存缓存中,具体取决于对您的应用程序最有意义的内容。
  • 负载平衡:最后,考虑负载平衡技术,以确保请求在可用服务器之间均匀分布。这可能涉及在服务器前面使用负载均衡器或使用 DNS 循环。平衡负载将有助于提高性能并减少瓶颈。

管理速率限制

使用我们的 API 时,了解和规划速率限制非常重要。

改善延迟

查看我们最新的延迟优化指南。

延迟是处理请求和返回响应所需的时间。在本节中,我们将讨论一些影响文本生成模型延迟的因素,并提供有关如何减少延迟的建议。

完成请求的延迟主要受两个因素的影响:模型和生成的 Token 数量。完成请求的生命周期如下所示:

网络
最终用户到 API 的延迟
服务器
处理提示令牌的时间
服务器
采样/生成令牌的时间
网络
API 到最终用户的延迟

大部分延迟通常来自令牌生成步骤。

直觉:提示令牌对完成调用的影响非常小。生成完成令牌的时间要长得多,因为令牌是一次生成一个令牌。较长的生成长度将累积延迟,因为每个令牌都需要生成。

影响延迟的常见因素和可能的缓解技术

现在我们已经了解了延迟的基础知识,让我们看一下可能影响延迟的各种因素,大致按影响最大到最小的顺序排列。

MODEL

我们的 API 提供了具有不同复杂程度和通用性的不同模型。功能最强大的模型(如 )可以生成更复杂和多样化的完成,但它们也需要更长的时间来处理您的查询。 诸如 之类的模型可以生成更快、更便宜的聊天完成,但它们生成的结果可能不太准确或与您的查询相关。您可以选择最适合您的使用案例的模型,并在速度、成本和质量之间进行权衡。gpt-4gpt-4o-mini

完成令牌数

请求大量生成的令牌完成可能会导致延迟增加:

  • 较低的最大令牌数:对于具有相似令牌生成计数的请求,具有较低参数的请求产生的延迟较小。max_tokens
  • Include stop sequences:为防止生成不需要的令牌,请添加 stop sequence。例如,您可以使用 stop sequence 生成具有特定项目数的列表。在这种情况下,通过使用 stop 序列,您可以生成一个仅包含 10 个项目的列表,因为完成将在达到时停止。阅读我们关于 Stop Sequences 的帮助文章,了解有关如何执行此操作的更多背景信息。11.11.
  • Generate less completions:降低 和 where 的值(如果可能)是指为每个提示生成的完成数,用于表示每个标记具有最高对数概率的结果。nbest_ofnbest_of

如果 和 都等于 1(这是默认值),则生成的令牌数最多等于 。nbest_ofmax_tokens

如果 (返回的完成数) 或 (为考虑而生成的完成数) 设置为 ,则每个请求将创建多个输出。在这里,您可以将生成的 Token 数量视为nbest_of> 1[ max_tokens * max (n, best_of) ]

请求中的设置使模型在令牌可用时立即开始返回令牌,而不是等待生成完整的令牌序列。它不会改变获取所有令牌的时间,但它会减少我们想要显示部分进度或将停止生成的应用程序的第一个令牌的时间。这可以提供更好的用户体验和 UX 改进,因此值得尝试流式传输。stream: true

基础设施

我们的服务器目前位于美国。虽然我们希望将来提供全球冗余,但与此同时,您可以考虑将基础设施的相关部分设在美国,以最大限度地减少服务器与 OpenAI 服务器之间的往返时间。

配料

根据您的使用案例,批处理可能会有所帮助。如果要向同一终端节点发送多个请求,则可以对要在同一请求中发送的提示进行批处理。这将减少您需要发出的请求数量。prompt 参数最多可以容纳 20 个唯一提示。我们建议您测试一下这种方法,看看是否有帮助。在某些情况下,您最终可能会增加生成的令牌数量,这将减慢响应时间。

管理成本

要监控您的成本,您可以在账户中设置通知阈值,以便在超过特定使用阈值时收到电子邮件提醒。您还可以设置每月预算。请注意,每月预算可能会对您的应用程序/用户造成干扰。使用使用情况跟踪控制面板监控当前和过去计费周期内的令牌使用情况。

文本生成

将原型投入生产的挑战之一是为运行应用程序相关的成本进行预算。OpenAI 提供现收现付定价模式,每 1,000 个代币的价格(大约等于 750 个单词)。要估算您的成本,您需要预测代币利用率。考虑流量级别、用户与您的应用程序交互的频率以及您将处理的数据量等因素。

考虑降低成本的一个有用框架是将成本视为代币数量和每个代币成本的函数。使用此框架有两种可能的方法可以降低成本。首先,您可以通过为某些任务切换到较小的模型来降低成本,从而降低每个代币的成本。或者,您可以尝试减少所需的令牌数量。有几种方法可以做到这一点,例如使用更短的提示、微调模型或缓存常见的用户查询,以便不需要重复处理它们。

您可以试用我们的交互式分词器工具来帮助您估算成本。API 和 playground 还会在响应中返回令牌计数。一旦您开始使用我们最强大的模型,您就可以查看其他模型是否可以以更低的延迟和成本产生相同的结果。在我们的令牌使用帮助文章中了解更多信息。

MLOps 策略

当您将原型投入生产时,您可能需要考虑制定 MLOps 策略。MLOps(机器学习操作)是指管理机器学习模型的端到端生命周期的过程,包括您可能使用我们的 API 微调的任何模型。在设计 MLOps 策略时,需要考虑许多方面。这些包括

  • 数据和模型管理:管理用于训练或微调模型的数据,并跟踪版本和更改。
  • 模型监控:跟踪模型在一段时间内的性能,并检测任何潜在问题或降级。
  • 模型再训练:确保您的模型与数据变化或不断变化的需求保持同步,并根据需要对其进行重新训练或微调。
  • 模型部署:自动执行将模型和相关构件部署到生产中的过程。

仔细考虑应用程序的这些方面将有助于确保您的模型保持相关性并随着时间的推移表现良好。

安全性与合规性

当您将原型投入生产时,您需要评估并满足可能适用于您的应用程序的任何安全性和合规性要求。这将涉及检查您正在处理的数据,了解我们的 API 如何处理数据,并确定您必须遵守哪些法规。我们的安全实践信任与合规门户提供了我们最全面和最新的文档。作为参考,以下是我们的隐私政策使用条款

您需要考虑的一些常见领域包括数据存储、数据传输和数据保留。您可能还需要实施数据隐私保护,例如尽可能加密或匿名化。此外,您还应遵循安全编码的最佳实践,例如输入清理和适当的错误处理。

安全最佳实践

使用我们的 API 创建应用程序时,请考虑我们的安全最佳实践,以确保您的应用程序安全且成功。这些建议强调了广泛测试商品、积极主动解决潜在问题以及限制滥用机会的重要性。

业务注意事项

随着使用 AI 的项目从原型转向生产,重要的是要考虑如何使用 AI 构建出色的产品,以及它如何与您的核心业务相关联。我们当然没有所有的答案,但一个很好的起点是我们的开发人员日的演讲,我们与一些客户深入探讨了这个问题: