Langchain (JS/TS)

Portkey 为任何 Langchain 应用程序增加核心生产能力。

circle-info

本指南涵盖了 Javascript / Typescript 版本的 Langchain 集成。Python Langchain 集成的文档在 这里

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它使应用程序能够:

  • 具有上下文感知:将语言模型连接到上下文源(提示指令、少量示例、用于基础响应的内容等)

  • 推理:依赖语言模型进行推理(根据提供的上下文如何回答、采取什么行动等)

您可以在 这里arrow-up-right 找到更多信息。

在使用 Langchain 时,Portkey 可以通过为您的 Langchain 应用添加快速的 AI 网关、可观察性、提示管理等功能,帮助将其推向生产环境。

快速开始集成

安装 Portkey 和 Langchain SDK 以开始使用。

npm install langchain portkey-ai @langchain/openai
circle-info

由于 Portkey 完全兼容 OpenAI 签名,您可以通过 ChatOpenAI 接口连接到 Portkey Ai Gateway。

  • baseURL 设置为 PORTKEY_GATEWAY_URL

  • 添加 defaultHeaders 以使用 createHeaders 辅助方法消耗 Portkey 需要的头部信息。

现在我们可以初始化模型并更新模型以使用 Portkey 的 AI 网关。

import { ChatOpenAI } from "@langchain/openai";
import { createHeaders, PORTKEY_GATEWAY_URL} from "portkey-ai"

const PORTKEY_API_KEY = "..."
const PROVIDER_API_KEY = "..." // 添加所使用的 AI 提供者的 API 密钥

const portkeyConf = {
  baseURL: PORTKEY_GATEWAY_URL,
  defaultHeaders: createHeaders({apiKey: PORTKEY_API_KEY, provider: "openai"})
}

const chatModel = new ChatOpenAI({
  apiKey: PROVIDER_API_KEY,
  configuration: portkeyConf
});

await chatModel.invoke("What is the meaning of life, universe and everything?")

响应

调用及相应的提示也将在 Portkey 日志标签中可见。

使用虚拟密钥管理多个模型

Portkey 支持 虚拟密钥,这是一种安全地存储和管理 API 密钥的简单方法。让我们尝试使用虚拟密钥进行 LLM 调用。

1. 在您的 Portkey 账户中创建一个虚拟密钥并复制 ID

让我们尝试为 Mistral 创建一个新的虚拟密钥,如下所示:

2. 在 Portkey Headers 中使用虚拟密钥

virtualKey 参数设置所使用的 AI 提供者的身份验证和提供者。在我们的案例中,我们使用的是 Mistral 虚拟密钥。

circle-info

请注意,apiKey 可以留空,因为该身份验证将不会被使用。

Portkey AI 网关将对 Mistral 的 API 请求进行身份验证,并以 OpenAI 格式返回响应,供您使用。

AI 网关扩展了 Langchain 的 ChatOpenAI 类,使其成为调用任何提供者和任何模型的单一接口。

嵌入

通过 Portkey 在 Langchain 中的嵌入与使用 OpenAIEmbeddings 类的聊天模型工作方式相同。让我们尝试使用 OpenAI 的嵌入模型创建一个嵌入。

链接与提示

Chainsarrow-up-right 使各种 Langchain 概念能够集成以实现同时执行,而 Langchain 支持 Prompt Templatesarrow-up-right 来构造语言模型的输入。让我们看看这在 Portkey 中是如何工作的。

我们将能够在 Portkey 日志仪表板中查看用于调用 OpenAI 的确切提示。

使用高级路由

Portkey AI Gateway 通过以配置为先的方法,为 Langchain 带来了负载均衡、后备、实验和金丝雀测试等功能。

让我们举一个 例子,假设我们想要在 gpt-4 和 claude-opus 之间以 50:50 的比例分配流量,以测试这两个大型模型。网关的配置如下所示:

然后,我们可以在从 langchain 发出的请求中使用这个 config

当调用 LLM 时,Portkey 将根据定义的权重比例将请求分配给 gpt-4claude-3-opus-20240229

您可以在 这里 找到更多配置示例。

代理与追踪

Langchain 的一个强大功能是创建代理。代理工作流的挑战在于提示通常被抽象化,难以了解代理正在做什么。这也使得调试变得更加困难。

将 Portkey 配置连接到 ChatOpenAI 模型,我们将能够利用如上所示的 AI 网关的所有好处。

此外,Portkey 将捕获代理 API 调用的日志,使我们能够全面了解情况。

这非常强大,因为我们能够控制和监视代理流程,从而识别问题并根据需要进行更新。

Last updated