OpenAI

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

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

circle-info

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

元数据chevron-right
circle-info

使用 Prompts API

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

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

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

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

高级用例

流式响应

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

使用视觉模型

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

视觉chevron-right

函数调用

在您的 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 模型。

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

文本转语音chevron-right语音转文本chevron-right

在 Portkey 中管理 OpenAI 项目和组织

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

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

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

  1. 创建您的虚拟密钥

  2. 定义网关配置

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

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

使用虚拟密钥

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

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

虚拟密钥chevron-right

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

预算限制chevron-right

使用网关配置

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

发起请求时

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


Portkey 特性

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

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

Last updated