Azure OpenAI 是一项 Microsoft Azure 服务,提供来自 OpenAI 的强大语言模型。
这将帮助您开始使用 AzureChatOpenAI 聊天模型。有关所有 AzureChatOpenAI 功能和配置的详细文档,请访问 API 参考.
概述
集成详情
| 类 | 包 | 可序列化 | Python 支持 | 下载量 | 版本 |
|---|---|---|---|---|---|
AzureChatOpenAI | @langchain/openai | ✅ | ✅ | !NPM - 下载量 | !NPM - 版本 |
模型特性
请参阅下面表格标题中的链接,了解如何使用特定功能。
| 工具调用 | 结构化输出 | 图片输入 | 音频输入 | 视频输入 | Token 级流式输出 | Token 使用量 | 对数概率 |
|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
设置
Azure OpenAI 是一项云服务,帮助您使用来自 OpenAI、Meta 等公司的多样化预构建和精选模型快速开发生成式 AI 体验。
LangChain.js 支持与 Azure OpenAI 集成,使用 OpenAI SDK 中的新 Azure 集成 OpenAI SDK.
您可以在 此页面.
凭据
如果您没有 Azure 账户,可以 创建一个免费账户 开始使用。
您还需要部署一个 Azure OpenAI 实例。您可以按照 本指南.
在 Azure Portal 上部署一个版本。实例运行后,请确保您有实例名称和密钥。您可以在 Azure Portal 中实例的“密钥和终结点”部分找到密钥。然后,如果使用 Node.js,您可以将凭据设置为环境变量:
AZURE_OPENAI_API_INSTANCE_NAME=
AZURE_OPENAI_API_DEPLOYMENT_NAME=
AZURE_OPENAI_API_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 package:
npm install @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
实例化
现在我们可以实例化模型对象并生成聊天补全:
const llm = new AzureChatOpenAI({
model: "gpt-5.5",
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.
使用 Azure 托管身份
如果您使用 Azure 托管身份,可以按以下方式配置凭据:
DefaultAzureCredential,
getBearerTokenProvider,
} from "@azure/identity";
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}:
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 field:
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 字段也接受其他 ClientOptions 官方 SDK 接受的参数。
Note: 特定请求头 api-key 当前无法以这种方式覆盖,将从以下位置传递值 azureOpenAIApiKey.
从 Azure OpenAI SDK 迁移
如果你使用的是已弃用的 Azure OpenAI SDK(配合) @langchain/azure-openai 包,你可以按照以下步骤更新代码以使用新的 Azure 集成:
- 安装新的
@langchain/openai包并删除之前的@langchain/azure-openaipackage:
npm install @langchain/openai
yarn add @langchain/openai
pnpm add @langchain/openai
npm uninstall @langchain/azure-openai
- 更新你的导入以使用新的
AzureChatOpenAI类从@langchain/openaipackage:
- 更新你的代码以使用新的
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 参考.