设置 OpenAI -> Azure OpenAI 回退
如何从 OpenAI 切换到 Azure OpenAI
假设您已经构建了一个基于 LLM 的应用并将其部署到生产环境中。它依赖于 OpenAI 的 gpt-4 模型。现在是 2023 年 3 月 12 日,突然您的用户发现应用的功能出现了错误 — “它无法工作!”
结果发现,在日志中,应用由于服务器端请求过载而遇到了 503 错误。您可以做些什么?如果您处于这种情况,我们有一个解决方案:Portkey Fallbacks。
Portkey Fallbacks 可以自动将您的应用请求从一个 LLM 提供者切换到另一个,确保通过在多个 LLM 之间进行切换来提高可靠性。这在 LLM API 的不可预测性面前尤其有用。使用 Portkey,您可以在需要时切换到不同的 LLM 提供者,例如 Azure,使您的应用准备好进入生产环境。
在本手册中,我们将学习如何在我们的应用中实现一个后备机制,使我们能够通过几行代码自动将 LLM 提供者从 OpenAI 切换到 Azure OpenAI。这两个提供者拥有完全相同的模型集,但它们的部署方式不同。Azure OpenAI 拥有自己的部署机制,通常被认为更可靠。
先决条件:
您拥有 Portkey API 密钥。 [ 注册 ]
您将 OpenAI 和 Azure OpenAI API 密钥存储为 虚拟密钥。
1. 导入SDK并使用Portkey进行身份验证
我们首先通过npm将Portkey SDK导入到我们的NodeJS项目中,并通过传递Portkey API密钥进行身份验证。
!pip install portkey-ai openaifrom portkey_ai import Portkey
from google.colab import userdata
PORTKEYAI_API_KEY=userdata.get('PORTKEY_API_KEY')
OPENAI_VIRTUAL_KEY=userdata.get('OPENAI_VIRTUAL_KEY')
portkey = Portkey(
api_key=PORTKEYAI_API_KEY,
)2. 创建备用配置
接下来,我们将创建一个 configs 对象,该对象影响使用 Portkey 发送的请求的行为。
此配置指示 Portkey 使用 _fallback_ 策略进行请求。 _targets_ 数组列出了 LLM 的虚拟密钥,Portkey 应按此顺序回退到替代方案。
大多数用户发现通过 Portkey 用户界面定义配置并在代码中引用配置 ID 更加简洁。试试看。
将此配置添加到 portkey 实例,以将备用行为应用于所有请求。
始终从环境变量中引用凭据,以防止任何敏感数据的泄露。Portkey 将根据传递的虚拟密钥自动推断 LLM 提供者。
Azure OpenAI 虚拟密钥只需设置一次,随后在所有后续 API 调用中都可以通过 Portkey 访问。
3. 发起请求
所有请求将直接发送到 OpenAI,因为 Portkey 会将所有这些请求代理到我们已经指定的目标。请注意,对请求的更改不需要在业务逻辑实现中进行任何代码更改。顺利!
当 OpenAI 返回任何 4xx 或 5xx 错误时,Portkey 将自动切换到 Azure OpenAI,以确保使用相同的指定模型。
4. 在日志中查看回退状态
由于所有请求都经过 Portkey,因此 Portkey 可以记录这些请求,以便更好地观察您的应用程序。您可以通过传递 trace ID 找到特定的请求。它可以是任何所需的字符串名称。在这种情况下,my-trace-id
您可以使用 Trace ID 应用过滤器以列出请求。回退被激活的实例将突出显示回退图标。日志可以按成本、令牌、状态、配置、trace id 等进行过滤。
了解更多关于 Logs。
5. 高级:针对特定状态码的回退
Portkey 提供了更精细的控制,以决定何时对 LLM 的请求应用回退策略。您可以根据 LLM 提供商返回的特定状态码定义配置条件。
在上述情况下,所有被状态码 429 确认的请求将从 OpenAI 回退到 Azure OpenAI。
6. 注意事项
这就是全部;您只需几行代码即可实现生产级的回退机制。虽然您已经具备了实现回退到下一个 GenAI 应用所需的所有工具,但这里有一些注意事项:
回退的实现不会改变您的应用接收到的 LLM 输出的质量。
Azure 要求您部署特定的模型。如果可用,Portkey 将自动触发使用 GPT4 的聊天完成端点,而不是 GPT3.5。
Last updated