AzureOpenAI
以前,LangChain.js 支持使用专用 Azure OpenAI SDK 与 Azure OpenAI 集成。此 SDK 现已弃用,取而代之的是 OpenAI SDK 中的新 Azure 集成,它允许在发布当天访问最新的 OpenAI 模型和功能,并允许在 OpenAI API 和 Azure OpenAI 之间无缝过渡。
如果您使用的是 Azure OpenAI 和已弃用的 SDK,请查看 迁移指南,以更新到新 API。
Azure OpenAI 是一种 Microsoft Azure 服务,它提供来自 OpenAI 的强大语言模型。
这将帮助您开始使用 LangChain 的 AzureOpenAI 完成模型 (LLM)。有关 AzureOpenAI
功能和配置选项的详细文档,请参阅 API 参考。
概述
集成详细信息
类 | 包 | 本地 | 可序列化 | PY 支持 | 包下载 | 包最新 |
---|---|---|---|---|---|---|
AzureOpenAI | @langchain/openai | ❌ | ✅ | ✅ |
设置
要访问 AzureOpenAI 模型,您需要创建一个 Azure 帐户、获取 API 密钥并安装 @langchain/openai
集成包。
凭据
前往 azure.microsoft.com 注册 AzureOpenAI 并生成 API 密钥。
您还需要部署一个 Azure OpenAI 实例。您可以按照 本指南在 Azure 门户中部署一个版本。
实例运行后,请确保您拥有实例名称和密钥。您可以在 Azure 门户中找到密钥,位于实例的“密钥和终结点”部分。
如果您使用的是 Node.js,则可以定义以下环境变量以使用该服务
AZURE_OPENAI_API_INSTANCE_NAME=<YOUR_INSTANCE_NAME>
AZURE_OPENAI_API_DEPLOYMENT_NAME=<YOUR_DEPLOYMENT_NAME>
AZURE_OPENAI_API_KEY=<YOUR_KEY>
AZURE_OPENAI_API_VERSION="2024-02-01"
或者,您可以将这些值直接传递给 AzureOpenAI
构造函数。
如果您希望对模型调用进行自动跟踪,还可以通过取消下面的注释来设置您的 LangSmith API 密钥
# export LANGCHAIN_TRACING_V2="true"
# export LANGCHAIN_API_KEY="your-api-key"
安装
LangChain AzureOpenAI 集成位于 @langchain/openai
包中
有关安装集成包的常规说明,请参阅 本节。
- npm
- yarn
- pnpm
npm i @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
实例化
现在我们可以实例化我们的模型对象并生成聊天完成项
import { AzureOpenAI } from "@langchain/openai";
const llm = new AzureOpenAI({
model: "gpt-3.5-turbo-instruct",
azureOpenAIApiKey: "<your_key>", // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
azureOpenAIApiInstanceName: "<your_instance_name>", // In Node.js defaults to process.env.AZURE_OPENAI_API_INSTANCE_NAME
azureOpenAIApiDeploymentName: "<your_deployment_name>", // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
azureOpenAIApiVersion: "<api_version>", // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
temperature: 0,
maxTokens: undefined,
timeout: undefined,
maxRetries: 2,
// other params...
});
调用
const inputText = "AzureOpenAI is an AI company that ";
const completion = await llm.invoke(inputText);
completion;
provides AI solutions to businesses. They offer a range of services including natural language processing, computer vision, and machine learning. Their solutions are designed to help businesses automate processes, gain insights from data, and improve decision-making. AzureOpenAI also offers consulting services to help businesses identify and implement the best AI solutions for their specific needs. They work with a variety of industries, including healthcare, finance, and retail. With their expertise in AI and their partnership with Microsoft Azure, AzureOpenAI is a trusted provider of AI solutions for businesses looking to stay ahead in the rapidly evolving world of technology.
链接
我们可以将 完成模型与提示模板链接,如下所示
import { PromptTemplate } from "@langchain/core/prompts";
const prompt = new PromptTemplate({
template: "How to say {input} in {output_language}:\n",
inputVariables: ["input", "output_language"],
});
const chain = prompt.pipe(llm);
await chain.invoke({
output_language: "German",
input: "I love programming.",
});
Ich liebe Programmieren.
使用 Azure 托管身份
如果您使用的是 Azure 托管身份,则可以按如下方式配置凭据
import {
DefaultAzureCredential,
getBearerTokenProvider,
} from "@azure/identity";
import { AzureOpenAI } from "@langchain/openai";
const credentials = new DefaultAzureCredential();
const azureADTokenProvider = getBearerTokenProvider(
credentials,
"https://cognitiveservices.azure.com/.default"
);
const managedIdentityLLM = new AzureOpenAI({
azureADTokenProvider,
azureOpenAIApiInstanceName: "<your_instance_name>",
azureOpenAIApiDeploymentName: "<your_deployment_name>",
azureOpenAIApiVersion: "<api_version>",
});
使用其他域
如果您的实例托管在除默认 openai.azure.com
以外的其他域下,则需要使用备用 AZURE_OPENAI_BASE_PATH
环境变量。例如,以下是如何连接到域 https://westeurope.api.microsoft.com/openai/deployments/{DEPLOYMENT_NAME}
import { AzureOpenAI } from "@langchain/openai";
const differentDomainLLM = new AzureOpenAI({
azureOpenAIApiKey: "<your_key>", // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
azureOpenAIApiDeploymentName: "<your_deployment_name>", // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
azureOpenAIApiVersion: "<api_version>", // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
azureOpenAIBasePath:
"https://westeurope.api.microsoft.com/openai/deployments", // In Node.js defaults to process.env.AZURE_OPENAI_BASE_PATH
});
从 Azure OpenAI SDK 迁移
如果您使用的是已弃用的 Azure OpenAI SDK 和 @langchain/azure-openai
包,则可以按照以下步骤更新您的代码以使用新的 Azure 集成
安装新的
@langchain/openai
包并删除以前的@langchain/azure-openai
包npm install @langchain/openai
npm uninstall @langchain/azure-openai更新您的导入以使用来自
@langchain/openai
包的新AzureOpenAI
和AzureChatOpenAI
类。import { AzureOpenAI } from "@langchain/openai";
更新您的代码以使用新的
AzureOpenAI
和AzureChatOpenAI
类,并传递所需的参数。const model = new AzureOpenAI({
azureOpenAIApiKey: "<your_key>",
azureOpenAIApiInstanceName: "<your_instance_name>",
azureOpenAIApiDeploymentName: "<your_deployment_name>",
azureOpenAIApiVersion: "<api_version>",
});请注意,构造函数现在需要
azureOpenAIApiInstanceName
参数而不是azureOpenAIEndpoint
参数,并且添加了azureOpenAIApiVersion
参数来指定 API 版本。如果您使用的是 Azure 托管身份,您现在需要使用构造函数的
azureADTokenProvider
参数而不是credentials
,有关详细信息,请参见Azure 托管身份 部分。如果您使用的是环境变量,您现在必须设置
AZURE_OPENAI_API_INSTANCE_NAME
环境变量而不是AZURE_OPENAI_API_ENDPOINT
,并添加AZURE_OPENAI_API_VERSION
环境变量来指定 API 版本。
API 参考
有关所有 AzureOpenAI 功能和配置的详细文档,请前往 API 参考:https://api.js.langchain.com/classes/langchain_openai.AzureOpenAI.html