设置 OpenAI -> Azure OpenAI 回退

在 Colab 中打开

如何从 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 拥有自己的部署机制,通常被认为更可靠。

先决条件:

  1. 您拥有 Portkey API 密钥。 [ 注册 ]

  2. 您将 OpenAI 和 Azure OpenAI API 密钥存储为 虚拟密钥

1. 导入SDK并使用Portkey进行身份验证

我们首先通过npm将Portkey SDK导入到我们的NodeJS项目中,并通过传递Portkey API密钥进行身份验证。

!pip install portkey-ai openai
from 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