AzureChatOpenAI
Azure OpenAI 是 Microsoft Azure 服务,提供来自 OpenAI 的强大语言模型。
这将帮助您开始使用 AzureChatOpenAI 聊天模型。有关所有 AzureChatOpenAI 功能和配置的详细文档,请访问 API 参考。
概述
集成详情
类 | 包 | 本地 | 可序列化 | PY 支持 | 包下载 | 包最新版本 |
---|---|---|---|---|---|---|
AzureChatOpenAI | @langchain/openai | ❌ | ✅ | ✅ | ![]() | ![]() |
模型功能
请参阅下表标题中的链接,以获取有关如何使用特定功能的指南。
工具调用 | 结构化输出 | JSON 模式 | 图像输入 | 音频输入 | 视频输入 | 令牌级流式传输 | 令牌使用量 | 对数概率 |
---|---|---|---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
设置
Azure OpenAI 是一项云服务,可帮助您使用来自 OpenAI、Meta 及其他来源的各种预构建和精选模型快速开发生成式 AI 体验。
LangChain.js 支持通过 OpenAI SDK 中的新 Azure 集成与 Azure OpenAI 集成。
您可以在此页面上了解有关 Azure OpenAI 及其与 OpenAI API 区别的更多信息。
凭据
如果您没有 Azure 帐户,可以创建一个免费帐户开始使用。
您还需要部署一个 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"
如果您想获得模型调用的自动跟踪,您还可以通过取消注释下方内容来设置您的 LangSmith API 密钥
# export LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"
安装
LangChain AzureChatOpenAI 集成位于 @langchain/openai
包中
有关安装集成包的通用说明,请参阅此部分。
- npm
- yarn
- pnpm
npm i @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
实例化
现在我们可以实例化我们的模型对象并生成聊天完成
import { AzureChatOpenAI } from "@langchain/openai";
const llm = new AzureChatOpenAI({
model: "gpt-4o",
temperature: 0,
maxTokens: undefined,
maxRetries: 2,
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY, // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_INSTANCE_NAME
azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION, // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
});
调用
const aiMsg = await llm.invoke([
[
"system",
"You are a helpful assistant that translates English to French. Translate the user sentence.",
],
["human", "I love programming."],
]);
aiMsg;
AIMessage {
"id": "chatcmpl-9qrWKByvVrzWMxSn8joRZAklHoB32",
"content": "J'adore la programmation.",
"additional_kwargs": {},
"response_metadata": {
"tokenUsage": {
"completionTokens": 8,
"promptTokens": 31,
"totalTokens": 39
},
"finish_reason": "stop"
},
"tool_calls": [],
"invalid_tool_calls": [],
"usage_metadata": {
"input_tokens": 31,
"output_tokens": 8,
"total_tokens": 39
}
}
console.log(aiMsg.content);
J'adore la programmation.
链式调用
我们可以像这样使用提示模板链式调用我们的模型
import { ChatPromptTemplate } from "@langchain/core/prompts";
const prompt = ChatPromptTemplate.fromMessages([
[
"system",
"You are a helpful assistant that translates {input_language} to {output_language}.",
],
["human", "{input}"],
]);
const chain = prompt.pipe(llm);
await chain.invoke({
input_language: "English",
output_language: "German",
input: "I love programming.",
});
AIMessage {
"id": "chatcmpl-9qrWR7WiNjZ3leSG4Wd77cnKEVivv",
"content": "Ich liebe das Programmieren.",
"additional_kwargs": {},
"response_metadata": {
"tokenUsage": {
"completionTokens": 6,
"promptTokens": 26,
"totalTokens": 32
},
"finish_reason": "stop"
},
"tool_calls": [],
"invalid_tool_calls": [],
"usage_metadata": {
"input_tokens": 26,
"output_tokens": 6,
"total_tokens": 32
}
}
使用 Azure 托管身份
如果您正在使用 Azure 托管身份,您可以像这样配置凭据
import {
DefaultAzureCredential,
getBearerTokenProvider,
} from "@azure/identity";
import { AzureChatOpenAI } from "@langchain/openai";
const credentials = new DefaultAzureCredential();
const azureADTokenProvider = getBearerTokenProvider(
credentials,
"https://cognitiveservices.azure.com/.default"
);
const llmWithManagedIdentity = new AzureChatOpenAI({
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 { AzureChatOpenAI } from "@langchain/openai";
const llmWithDifferentDomain = new AzureChatOpenAI({
temperature: 0.9,
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
});
自定义标头
您可以通过传入 configuration
字段来指定自定义标头
import { AzureChatOpenAI } from "@langchain/openai";
const llmWithCustomHeaders = new AzureChatOpenAI({
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY, // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_INSTANCE_NAME
azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION, // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
configuration: {
defaultHeaders: {
"x-custom-header": `SOME_VALUE`,
},
},
});
await llmWithCustomHeaders.invoke("Hi there!");
configuration
字段也接受官方 SDK 接受的其他 ClientOptions
参数。
注意: 特定标头 api-key
当前无法以这种方式覆盖,并将传递来自 azureOpenAIApiKey
的值。
从 Azure OpenAI SDK 迁移
如果您正在使用已弃用的 Azure OpenAI SDK 和 @langchain/azure-openai
包,您可以按照以下步骤更新您的代码以使用新的 Azure 集成
- 安装新的
@langchain/openai
包并删除之前的@langchain/azure-openai
包
- npm
- yarn
- pnpm
npm i @langchain/openai
yarn add @langchain/openai
pnpm add @langchain/openai
npm uninstall @langchain/azure-openai
更新您的导入以使用来自
@langchain/openai
包的新AzureChatOpenAI
类import { AzureChatOpenAI } from "@langchain/openai";
更新您的代码以使用新的
AzureChatOpenAI
类并传递必需的参数const model = new AzureChatOpenAI({
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 参考
有关所有 AzureChatOpenAI 功能和配置的详细文档,请访问 API 参考: https://api.js.langchain.com/classes/langchain_openai.AzureChatOpenAI.html