AzureChatOpenAI 통합

AzureChatOpenAI 통합 (AzureChatOpenAI integration)

LangChain JavaScript를 사용하여 AzureChatOpenAI 채팅 모델과 통합합니다.

Azure OpenAI는 OpenAI의 강력한 언어 모델을 제공하는 Microsoft Azure 서비스입니다.

이 문서는 AzureChatOpenAI 채팅 모델을 시작하는 데 도움이 됩니다. AzureChatOpenAI의 모든 기능과 구성에 대한 자세한 문서는 API 참조를 참고하세요.

개요

통합 세부 정보

Class Package Serializable PY 지원 Downloads Version
AzureChatOpenAI @langchain/openai NPM - Downloads NPM - Version

모델 기능

아래 표 헤더의 링크는 특정 기능 사용법에 대한 가이드입니다.

Tool calling Structured output Image input Audio input Video input Token-level streaming Token usage Logprobs

설정

Azure OpenAI는 OpenAI, Meta 및 그 외의 사전 구축되고 엄선된 다양한 모델로 생성형 AI 경험을 빠르게 개발하는 데 도움을 주는 클라우드 서비스입니다.

LangChain.js는 OpenAI SDK의 새로운 Azure 통합을 사용하여 Azure OpenAI와의 통합을 지원합니다.

Azure OpenAI와 OpenAI API의 차이점에 대해 더 알아보려면 이 페이지를 참고하세요.

자격 증명

Azure 계정이 없다면 무료 계정을 만들고 시작할 수 있습니다.

또한 배포된 Azure OpenAI 인스턴스가 필요합니다. 이 가이드에 따라 Azure Portal에 버전을 배포할 수 있습니다.

인스턴스가 실행되면 인스턴스 이름과 키를 확인하세요. 키는 Azure Portal의 인스턴스 "Keys and Endpoint" 섹션에서 찾을 수 있습니다. 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 install @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-5.5",
    temperature: 0,
    maxTokens: undefined,
    maxRetries: 2,
    azureOpenAIApiKey: proces...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 Managed Identity 사용하기

Azure Managed Identity를 사용한다면 다음과 같이 자격 증명을 구성할 수 있습니다:

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: *** // 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: proces...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 패키지를 제거하세요:
npm install @langchain/openai
yarn add @langchain/openai
pnpm add @langchain/openai
npm uninstall @langchain/azure-openai
  1. @langchain/openai 패키지의 새 AzureChatOpenAI 클래스를 사용하도록 임포트를 업데이트하세요:

    import { AzureChatOpenAI } from "@langchain/openai";
    
  2. AzureChatOpenAI 클래스를 사용하고 필수 파라미터를 전달하도록 코드를 업데이트하세요:

    const model = new AzureChatOpenAI({
      azureOpenAIApiKey: ***
      azureOpenAIApiInstanceName: "<your_instance_name>",
      azureOpenAIApiDeploymentName: "<your_deployment_name>",
      azureOpenAIApiVersion: "<api_version>",
    });
    

    생성자가 이제 azureOpenAIEndpoint 파라미터 대신 azureOpenAIApiInstanceName 파라미터를 요구하고, API 버전을 지정하는 azureOpenAIApiVersion 파라미터를 추가한다는 점에 유의하세요.

    • Azure Managed Identity를 사용하고 있었다면 이제 credentials 대신 azureADTokenProvider 파라미터를 생성자에 사용해야 합니다. 자세한 내용은 Azure Managed Identity 섹션을 참고하세요.

    • 환경 변수를 사용하고 있었다면 이제 AZURE_OPENAI_API_ENDPOINT 대신 AZURE_OPENAI_API_INSTANCE_NAME 환경 변수를 설정하고, API 버전을 지정하는 AZURE_OPENAI_API_VERSION 환경 변수를 추가해야 합니다.

API 참조

AzureChatOpenAI의 모든 기능과 구성에 대한 자세한 문서는 API 참조를 참고하세요.

더 알아보기

출처: 문서