跳至主要内容

AzureChatOpenAI

Azure OpenAI 是一个 Microsoft Azure 服务,它提供来自 OpenAI 的强大语言模型。

这将帮助您开始使用 AzureChatOpenAI 聊天模型。有关所有 AzureChatOpenAI 功能和配置的详细文档,请访问 API 参考.

概述

集成详细信息

本地可序列化PY 支持包下载包最新
AzureChatOpenAI@langchain/openaiNPM - DownloadsNPM - Version

模型功能

请参阅下方表头中的链接,了解有关如何使用特定功能的指南。

工具调用结构化输出JSON 模式图像输入音频输入视频输入令牌级流令牌使用情况Logprobs

设置

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 LANGCHAIN_TRACING_V2="true"
# export LANGCHAIN_API_KEY="your-api-key"

安装

LangChain AzureChatOpenAI 集成位于 @langchain/openai 包中

yarn add @langchain/openai

实例化

现在我们可以实例化我们的模型对象并生成聊天完成

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 迁移

如果您使用的是带有 @langchain/azure-openai 包的已弃用的 Azure OpenAI SDK,则可以按照以下步骤更新您的代码以使用新的 Azure 集成

  1. 安装新的 @langchain/openai 包并删除之前的 @langchain/azure-openai
yarn add @langchain/openai
npm uninstall @langchain/azure-openai
  1. 更新您的导入以使用来自 @langchain/openai 包的新 AzureChatOpenAI

    import { AzureChatOpenAI } from "@langchain/openai";
  2. 更新您的代码以使用新的 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


此页面对您有帮助吗?


您也可以留下详细的反馈 在 GitHub 上.