다음을 통해 공유


TypeScript용 Azure OpenAI 라이브러리 - 2.0.0

Azure OpenAI Service 대화형, 콘텐츠 만들기 및 데이터 접지 사용 사례에 대한 고급 AI 모델에 대한 액세스를 제공합니다. TypeScript용 Azure OpenAI 라이브러리는 JavaScript용 공식 OpenAI 클라이언트 라이브러리의. Azure OpenAI 라이브러리는 Azure OpenAI 시나리오와 관련된 요청 및 응답 모델에 대한 강력한 형식의 추가 지원을 제공합니다.

@azure/openai 버전 1 권고 ️ 마이그레이션

Azure OpenAI 클라이언트 라이브러리 버전 1.x에서 openai 라이브러리로 애플리케이션 코드를 업데이트하는 방법에 대한 자세한 지침은 마이그레이션 가이드 확인하세요.

키 링크:

시작

현재 지원되는 환경

필수 구성 요소

Azure OpenAI 리소스를 사용하려면 azure 구독 Azure OpenAI 액세스있어야 합니다. 자세한 내용은 빠른 시작을 참조하세요. Azure OpenAI Service사용하여 텍스트 생성 시작.

openai@azure/openai 모두 설치

npm사용하여 JavaScript용 Azure OpenAI 클라이언트 라이브러리 및 OpenAI 라이브러리를 설치합니다.

npm install openai @azure/openai

AzureOpenAI 만들기 및 인증

Azure OpenAI 서비스를 사용하여 인증하는 방법에는 여러 가지가 있으며, 권장되는 방법은 Azure ID 라이브러리통해 안전하고 키가 없는 인증에 Microsoft Entra ID를 사용하는 것입니다. 시작하려면 다음을 수행합니다.

  1. Azure ID 패키지설치합니다.

    npm install @azure/identity
    
  2. 원하는 자격 증명 형식으로 getBearerTokenProvider 호출하여 토큰 공급자를 만듭니다. 예를 들어 DefaultAzureCredential.

    import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
  3. 토큰 공급자를 전달하여 클라이언트를 만듭니다.

    import { AzureOpenAI } from "openai";
    
    const deployment = "Your deployment name";
    const apiVersion = "2024-10-21";
    const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
    

Microsoft Entra ID 인증Azure OpenAI 서비스를 구성하는 방법의 지침에 따라 신뢰할 수 있는 엔터티에 Azure OpenAI 리소스에 대한 액세스 권한을 부여합니다.

주요 개념

보조

OpenAI의 Assistants API 개요참조하세요.

오디오 전사/번역 및 텍스트 음성 변환 생성

OpenAI 기능: 음성 텍스트 변환참조하세요.

일괄

OpenAI의 Batch API 가이드참조하세요.

채팅 완료

채팅 모델은 메시지 목록을 입력으로 사용하고 모델 생성 메시지를 출력으로 반환합니다. 채팅 형식은 멀티 턴 대화를 쉽게 만들도록 설계되었지만 대화가 없는 단일 턴 작업에도 유용합니다.

OpenAI 기능: 채팅 완료참조하세요.

이미지 생성

OpenAI 기능: 이미지 생성참조하세요.

파일

OpenAI의 파일 API 참조참조하세요.

텍스트 포함

OpenAI 기능: 포함참조하세요.

예제

이 섹션에서는 Azure OpenAI 서비스의 기능을 사용하는 예제를 제공합니다. 추가 예제를 보려면샘플 폴더를 체크 아웃합니다.

비즈니스 데이터 분석

이 TypeScript 예제에서는 비즈니스 데이터에 대한 입력 채팅 질문에 대한 채팅 응답을 생성합니다. 비즈니스 데이터는 Azure Cognitive Search 인덱스로 제공됩니다. Azure Cognitive Search 인덱을 데이터 원본으로 설정하는 방법에 대한 자세한 내용은 빠른 시작을 참조하세요. 사용자 고유의 데이터사용하여 Azure OpenAI 모델과 채팅하세요.

import { AzureOpenAI } from "openai";
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import "@azure/openai/types";

// Set AZURE_OPENAI_ENDPOINT to the endpoint of your
// Azure OpenAI resource. You can find this in the Azure portal.
import "dotenv/config";

// Your Azure Cognitive Search endpoint, and index name
const azureSearchEndpoint = process.env["AZURE_SEARCH_ENDPOINT"] || "<search endpoint>";
const azureSearchIndexName = process.env["AZURE_SEARCH_INDEX"] || "<search index>";

export async function main() {
  console.log("== Azure On Your Data Sample ==");

  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
  const deployment = "gpt-4-1106-preview";
  const apiVersion = "2024-10-21";
  const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
  const events = await client.chat.completions.create({
    stream: true,
    messages: [
      {
        role: "user",
        content:
          "What's the most common feedback we received from our customers about the product?",
      },
    ],
    max_tokens: 128,
    model: "",
    data_sources: [
      {
        type: "azure_search",
        parameters: {
          endpoint: azureSearchEndpoint,
          index_name: azureSearchIndexName,
          authentication: {
            type: "system_assigned_managed_identity",
          },
        },
      },
    ],
  });

  for await (const event of events) {
    for (const choice of event.choices) {
      console.log(choice.delta?.content);
    }
  }
}

main();

콘텐츠 필터링 채팅 완료

Azure OpenAI 서비스에는 핵심 모델과 함께 작동하는 콘텐츠 필터링 시스템이 포함되어 있습니다. 이 시스템은 입력 프롬프트와 출력 완성 모두에서 잠재적으로 유해한 콘텐츠의 특정 범주를 검색하고 조치를 취합니다. 이 예제에서는 이러한 콘텐츠 필터링 결과에 액세스하는 방법을 보여줍니다.

import { AzureOpenAI } from "openai";
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import "@azure/openai/types";

// Set AZURE_OPENAI_ENDPOINT to the endpoint of your
// OpenAI resource. You can find this in the Azure portal.
import "dotenv/config";

async function main() {
  console.log("== Streaming Chat Completions Sample ==");

  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
  const deployment = "gpt-35-turbo";
  const apiVersion = "2024-10-21";
  const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
  const events = await client.chat.completions.create({
    messages: [
      { role: "system", content: "You are a helpful assistant. You will talk like a pirate." },
      { role: "user", content: "Can you help me?" },
      { role: "assistant", content: "Arrrr! Of course, me hearty! What can I do for ye?" },
      { role: "user", content: "What's the best way to train a parrot?" },
    ],
    model: "",
    max_tokens: 128,
    stream: true,
  });

  for await (const event of events) {
    for (const choice of event.choices) {
      console.log(`Chunk: ${choice.delta?.content}`);
      const filterResults = choice.content_filter_results;
      if (!filterResults) {
        continue;
      }
      if (filterResults.error) {
        console.log(
          `\tContent filter ran into an error ${filterResults.error.code}: ${filterResults.error.message}`,
        );
      } else {
        const { hate, sexual, selfHarm, violence } = filterResults;
        console.log(
          `\tHate category is filtered: ${hate?.filtered}, with ${hate?.severity} severity`,
        );
        console.log(
          `\tSexual category is filtered: ${sexual?.filtered}, with ${sexual?.severity} severity`,
        );
        console.log(
          `\tSelf-harm category is filtered: ${selfHarm?.filtered}, with ${selfHarm?.severity} severity`,
        );
        console.log(
          `\tViolence category is filtered: ${violence?.filtered}, with ${violence?.severity} severity`,
        );
      }
    }
  }
}

main();

다음 단계

문제 해결

JavaScript대한 공식 OpenAI 클라이언트 라이브러리를 참조하세요.

기여

이 라이브러리의 빌드, 테스트 및 기여에 대한 자세한 내용은 OpenAI CONTRIBUTING.md 참조하세요.

이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 귀하의 기여를 사용할 권리를 부여할 권리가 있음을 선언하는 CLA(기여자 사용권 계약)에 동의해야 합니다. 자세한 내용은 cla.microsoft.com방문하세요.

끌어오기 요청을 제출하면 CLA 봇은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 주석). 봇에서 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 리포지토리에서 한 번만 이 작업을 수행해야 합니다.

이 프로젝트는 Microsoft 오픈 소스 행동 강령채택했습니다. 자세한 내용은 행동 강령 FAQ 참조하거나 추가 질문이나 의견을 opencode@microsoft.com 문의하세요.