OpenAI

学习如何将 OpenAI 与 Portkey 集成,实现无缝的补全、提示管理以及流式传输、函数调用和微调等高级功能。

Portkey 与 OpenAI 的 Node.js、Python SDK 及其 REST API 具有本地集成。有关使用其他框架进行 OpenAI 集成的信息,请查看我们的合作伙伴关系,包括 LangchainLlamaIndex其他

Provider Slug**: openai**

使用 Portkey 网关

要将 Portkey 网关与 OpenAI 集成,

  • baseURL 设置为 Portkey 网关 URL

  • 包含特定于 Portkey 的头信息,例如 providerapiKey 等。

以下是如何将其应用于 聊天完成 请求:

  1. 在您的应用程序中安装 Portkey SDK

npm i --save portkey-ai
  1. 接下来,将特定于 Portkey 的代码插入到您的 OpenAI 完成调用中,如高亮行所示。PORTKEY_GATEWAY_URL 是 Portkey 的网关 URL,用于路由您的请求,createHeaders 是一个生成头对象的便利函数。 (所有支持的参数/头信息)

import OpenAI from 'openai'; // We're using the v4 SDK
import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

const openai = new OpenAI({
  apiKey: 'OPENAI_API_KEY', // defaults to process.env["OPENAI_API_KEY"],
  baseURL: PORTKEY_GATEWAY_URL,
  defaultHeaders: createHeaders({
    provider: "openai",
    apiKey: "PORTKEY_API_KEY" // defaults to process.env["PORTKEY_API_KEY"]
  })
});

async function main() {
  const chatCompletion = await openai.chat.completions.create({
    messages: [{ role: 'user', content: 'Say this is a test' }],
    model: 'gpt-4-turbo',
  });

  console.log(chatCompletion.choices);
}

main();

此请求将由 Portkey 自动记录。您可以在日志仪表板中查看此信息。Portkey 记录每个请求使用的令牌、执行时间和成本。此外,您可以深入了解详细信息,以查看确切的请求和响应数据。

跟踪最终用户 ID

Portkey 允许您跟踪在 OpenAI 请求中通过 user 参数传递的用户 ID,从而使您能够监控用户级别的费用、请求等。

当您在请求中包含 user 参数时,Portkey 日志将显示相关的用户 ID,如下图所示:

除了 user 参数,Portkey 还允许您在请求中发送任意自定义元数据。这个强大的功能使您能够将额外的上下文或信息与每个请求关联,这对于分析、调试或其他自定义用例非常有用。

元数据

使用 Prompts API

Portkey 还支持在 prompt library 中创建和管理提示模板。这使得可以通过用户界面直接协作开发提示。

  1. 创建一个带有变量的提示模板并设置超参数。

  1. 使用 Portkey SDK 在您的代码库中使用此提示。

观察这如何简化您的代码可读性,并通过 UI 简化提示更新,而无需更改代码库。

高级用例

流式响应

Portkey 支持使用服务器发送事件 (SSE) 的流式响应。

使用视觉模型

Portkey 的多模态网关同样完全支持 OpenAI 视觉模型。有关更多信息,请参阅本指南:

视觉

函数调用

在您的 OpenAI 或 Portkey SDK 操作中,函数调用保持标准。这些日志将出现在 Portkey 中,突出显示使用的函数及其输出。

此外,您可以在提示中定义函数,并像上面那样调用 portkey.prompts.completions.create 方法。

微调

请参考我们的微调指南,以利用 Portkey 的高级 持续微调 功能。

图像生成

Portkey 支持 OpenAI 的多种模式,您可以通过 Portkey 的 AI 网关以与完成调用相同的方式发起图像生成请求。

Portkey 的快速 AI 网关会在您的 Portkey 仪表板上捕获请求信息。在您的日志屏幕上,您将能够看到该请求及其请求和响应。

OpenAI 图像生成请求的日志视图

有关图像生成的更多信息,请参阅 API 参考

音频 - 转录、翻译和文本转语音

Portkey 的多模态网关还支持 OpenAI API 上的 audio 方法。支持 tts-1tts-1-hdwhisper-1 模型。

查看以下指南以获取更多信息:

文本转语音语音转文本

在 Portkey 中管理 OpenAI 项目和组织

在将 OpenAI 与 Portkey 集成时,您可以指定您的 OpenAI 组织和项目 ID 以及您的 API 密钥。这在您属于多个组织或通过遗留用户 API 密钥访问项目时特别有用。

指定组织和项目 ID 有助于您更好地控制访问规则、使用情况和成本。

在 Portkey 中,您可以通过以下方式添加您的组织和项目详细信息:

  1. 创建您的虚拟密钥

  2. 定义网关配置

  3. 在请求中传递详细信息

让我们更详细地探讨每种方法。

使用虚拟密钥

在创建虚拟密钥时,从下拉菜单中选择 OpenAI,Portkey 会自动显示组织 ID 和项目 ID 的可选字段,以及 API 密钥字段。

从这里获取您的 OpenAI API 密钥,然后将其添加到 Portkey,以创建可以在 Portkey 中使用的虚拟密钥。

虚拟密钥

Portkey 在预算管理方面比 OpenAI 更进一步。虽然 OpenAI 允许为每个项目设置预算限制,但 Portkey 使您能够为每个创建的虚拟密钥设置预算限制。有关预算限制的更多信息,请参阅此文档:

预算限制

使用网关配置

您还可以在网关配置中指定组织和项目的详细信息,可以在根级别或特定目标内进行设置。

发起请求时

您还可以在使用 curl、OpenAI SDK 或 Portkey SDK 发起请求时直接传递您的组织和项目详细信息。


Portkey 特性

Portkey 通过 OpenAI SDK 支持其所有功能,因此您无需迁移。

请在相关部分中找到更多信息:

Last updated