设置 OpenAI -> Azure OpenAI 回退

在 Colab 中打开arrow-up-right

如何从 OpenAI 切换到 Azure OpenAI

假设您已经构建了一个基于 LLM 的应用并将其部署到生产环境中。它依赖于 OpenAI 的 gpt-4 模型。现在是 2023 年 3 月 12 日arrow-up-right,突然您的用户发现应用的功能出现了错误 — “它无法工作!”

结果发现,在日志中,应用由于服务器端请求过载而遇到了 503 错误arrow-up-right。您可以做些什么?如果您处于这种情况,我们有一个解决方案:Portkey Fallbacks。

Portkey Fallbacks 可以自动将您的应用请求从一个 LLM 提供者切换到另一个,确保通过在多个 LLM 之间进行切换来提高可靠性。这在 LLM API 的不可预测性面前尤其有用。使用 Portkey,您可以在需要时切换到不同的 LLM 提供者,例如 Azure,使您的应用准备好进入生产环境。

在本手册中,我们将学习如何在我们的应用中实现一个后备机制,使我们能够通过几行代码自动将 LLM 提供者从 OpenAI 切换到 Azure OpenAI。这两个提供者拥有完全相同的模型集,但它们的部署方式不同。Azure OpenAI 拥有自己的部署机制,通常被认为更可靠。

先决条件:

  1. 您将 OpenAI 和 Azure OpenAI API 密钥存储为 虚拟密钥arrow-up-right

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 更加简洁。试试看arrow-up-right

将此配置添加到 portkey 实例,以将备用行为应用于所有请求。

始终从环境变量中引用凭据,以防止任何敏感数据的泄露。Portkey 将根据传递的虚拟密钥自动推断 LLM 提供者。

Azure OpenAI 虚拟密钥只需设置一次,随后在所有后续 API 调用中都可以通过 Portkey 访问。

chevron-right没有虚拟密钥的备用配置hashtag

3. 发起请求

所有请求将直接发送到 OpenAI,因为 Portkey 会将所有这些请求代理到我们已经指定的目标。请注意,对请求的更改不需要在业务逻辑实现中进行任何代码更改。顺利!

当 OpenAI 返回任何 4xx 或 5xx 错误时,Portkey 将自动切换到 Azure OpenAI,以确保使用相同的指定模型。

4. 在日志中查看回退状态

由于所有请求都经过 Portkey,因此 Portkey 可以记录这些请求,以便更好地观察您的应用程序。您可以通过传递 trace ID 找到特定的请求。它可以是任何所需的字符串名称。在这种情况下,my-trace-id

您可以使用 Trace ID 应用过滤器以列出请求。回退被激活的实例将突出显示回退图标。日志可以按成本、令牌、状态、配置、trace id 等进行过滤。

了解更多关于 Logsarrow-up-right

5. 高级:针对特定状态码的回退

Portkey 提供了更精细的控制,以决定何时对 LLM 的请求应用回退策略。您可以根据 LLM 提供商返回的特定状态码定义配置条件。

在上述情况下,所有被状态码 429 确认的请求将从 OpenAI 回退到 Azure OpenAI。

6. 注意事项

这就是全部;您只需几行代码即可实现生产级的回退机制。虽然您已经具备了实现回退到下一个 GenAI 应用所需的所有工具,但这里有一些注意事项:

  • 回退的实现不会改变您的应用接收到的 LLM 输出的质量。

  • Azure 要求您部署特定的模型。如果可用,Portkey 将自动触发使用 GPT4 的聊天完成端点,而不是 GPT3.5。

Last updated