Portkey 的网关配置 101

您可能熟悉如何向 GPT4 发起 API 调用以获取聊天完成。然而,您是否知道可以使用 Portkey 为可能在 OpenAI 端失败的请求 设置 自动重试?

Portkey AI 网关提供了几个有用的功能,您可以利用这些功能来增强您的请求。在本食谱中,我们将首先向 LLM 发起 API 调用,并探索如何利用网关配置来优化这些 API 调用。

1. 使用 Portkey 调用 LLM 的 API

考虑一个典型的 API 调用,使用 OpenAI SDK 获取 GPT4 的聊天完成。它需要 messagesmodel 参数来获取响应。如果你之前尝试过,这段代码应该看起来很熟悉。这是因为 Portkey Client SDK 的签名与 OpenAI 的相同。

import { Portkey } from 'portkey-ai';

const portkey = new Portkey({
  apiKey: 'xxxxxxxtrk',
  virtualKey: 'ma5xfxxxxx4x'
});

const messages = [
  {
    role: 'user',
    content: `What are the 7 wonders of the world?`
  }
];

const response = await portkey.chat.completions.create({
  messages,
  model: 'gpt-4'
});

console.log(response.choices[0].message.content);

除了 Portkey API Key (获取一个),你可能注意到在实例化 portkey 变量时有一个新参数 — virtualKey。Portkey 将 LLM 提供商的 API 密钥安全存储在一个保险库中,并在运行时替换请求中的 API 密钥。这些 API 密钥的唯一标识符称为虚拟密钥。有关更多信息,请参见 文档

在了解基本内容后,让我们直接进入我们最初希望通过 AI 网关实现的目标 — 当我们遇到速率限制(429 状态码)时,自动重试请求。

2. 应用网关配置

AI 网关需要指令以自动重试请求。这涉及提供网关配置,这本质上是协调 AI 网关的 JSON 对象。在我们当前的场景中,我们的目标是使用自动重试 429 状态码的请求来访问 GPT4。

现在我们的网关配置已经整理好了。但我们如何指示我们的 AI 网关呢?

你猜对了,在请求头中。下一部分将探讨两种创建和引用网关配置的方法。

a. 从 UI 中引用网关配置

正如标题所述——您可以在 UI 上创建它们,并使用 ID 使 Portkey 自动在请求头中应用,以指示 AI 网关。UI 构建器功能提供 lint 建议,便于引用(通过配置 ID),消除手动管理,并允许您查看版本历史。

要创建网关配置,

  1. 访问 portkey.ai

  2. 点击 Configs

    1. 选择 Create

    2. 选择任意名称(例如 request_retries)

在游乐场中编写配置并点击 Save Config

在列表中查看保存的配置及其 ID

现在试试看!

保存的配置将作为行项目出现在配置页面上。ID 非常重要,因为它在我们通过 AI 网关的调用中被引用。

Portkey SDK

Portkey SDK 接受配置参数,该参数以创建的配置 ID 作为参数。为确保所有请求都启用自动重试,请在实例化 portkey 时将配置 ID 作为参数传递。

没错!只需一行代码,您应用中的所有请求现在都继承了网关配置并展示了自动重试。

让我们看看代码片段:

Axios

在无法使用 SDK 的情况下,您可以将相同的配置作为带有键 x-portkey-config 的头传递。

OpenAI SDK

Portkey 可以与 OpenAI SDK 一起使用。

要使用 OpenAI SDK 客户端发送请求并将网关配置应用于请求,请传递 baseURL 和必要的头,如下所示:

在 UI 中声明网关配置并在代码中引用它们的方式是推荐的,因为它保持了配置的原子性,并与业务逻辑解耦,可以升级以添加更多功能。如果您想为所有成千上万的请求启用缓存?只需从 UI 更新配置即可。无需提交,无需重新部署。

b. 代码中的参考网关配置

根据您应用的动态性,您可能希望在运行时构建网关配置。您需要做的就是将网关配置直接作为参数传递给 config 参数。

Portkey SDK

Axios

OpenAI SDK

以上是三种在请求中使用网关配置的方法。

在您希望为特定请求而不是所有请求单独添加配置的情况下,Portkey 允许您在聊天完成调用时将 config 参数作为单独的对象传递,而不是在 Portkey({..}) 实例化时传递。

将重试超能力应用于您的请求就是这么简单!

下一步:深入了解 AI 网关的功能

出色地实现了对 OpenAI 的 LLM 调用的重试行为!

Gateway Configs 是一个可以帮助您管理回退、请求超时、负载均衡、缓存等的工具。借助 Portkey 对 100 多个 LLM 的支持,它是管理涉及多个目标配置的复杂用例的强大工具。一个涵盖这种复杂性的 Gateway Config 可能看起来像:

有关完整参考,请参阅 Config Object

看到所有可用于您请求的 AI 网关功能令人兴奋。请随意进行实验,充分利用它们。继续保持出色的工作!

Last updated