Skip to main content

AzureOpenAI

caution

您当前所在的页面记录的是 Azure OpenAI 文本补全模型 的使用情况。最新的且最受欢迎的 Azure OpenAI 模型是 聊天补全模型

除非您正在使用 gpt-3.5-turbo-instruct,否则您可能需要查看 这个页面

info

以前,LangChain.js 支持使用专用的 Azure OpenAI SDK 集成 Azure OpenAI。该 SDK 现已被弃用,取而代之的是 OpenAI SDK 中的新 Azure 集成,它允许在最新 OpenAI 模型和功能发布的当天就进行访问,并且可以在 OpenAI API 和 Azure OpenAI 之间无缝切换。

如果您正在使用已弃用的 SDK 的 Azure OpenAI,请参阅 迁移指南 以更新到新 API。

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

这将帮助您开始使用 LangChain 的 AzureOpenAI 补全模型 (LLMs)。有关 AzureOpenAI 功能和配置选项的详细文档,请参阅 API 参考

概述

集成详情

本地可序列化PY 支持包下载量包最新版本
AzureOpenAI@langchain/openaiNPM - 下载量NPM - 版本

准备

要访问 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 LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"

安装

LangChain AzureOpenAI 集成位于 @langchain/openai 包中:

:::提示 请参阅安装集成包的一般说明部分。 :::

yarn 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 集成:

  1. 安装新的 @langchain/openai 包,并卸载之前的 @langchain/azure-openai 包:

    npm install @langchain/openai
    npm uninstall @langchain/azure-openai
  2. 更新您的导入语句,使用新的 @langchain/openai 包中的 AzureOpenAIAzureChatOpenAI 类:

    import { AzureOpenAI } from "@langchain/openai";
  3. 更新您的代码以使用新的 AzureOpenAIAzureChatOpenAI 类,并传递所需的参数:

    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


Was this page helpful?


You can also leave detailed feedback on GitHub.