次の方法で共有


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 ライブラリに更新する方法の詳細については、移行ガイドの を参照してください。

主要なリンク:

はじめ

現在サポートされている環境

  • Node.js の LTS バージョンを する
  • Safari、Chrome、Edge、Firefox の最新バージョン。

前提 条件

Azure OpenAI リソースを使用する場合は、Azure サブスクリプション を持ち、Azure OpenAI アクセスを する必要があります。 詳細については、「クイック スタート: Azure OpenAI Serviceを使用してテキストの生成を開始する」を参照してください。

openai@azure/openai の両方をインストールする

npmを使用して、Azure OpenAI クライアント ライブラリと JavaScript 用 OpenAI ライブラリをインストールします。

npm install openai @azure/openai

AzureOpenAI を作成して認証する

Azure OpenAI サービスで認証する方法はいくつかあります。推奨される方法は、Azure Id ライブラリを介して、セキュリティで保護されたキーレス認証に Microsoft Entra ID を使用することです。 作業を開始するには:

  1. Azure Identity パッケージをインストールします。

    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 ガイド参照してください。

チャットの完了

チャット モデルは、メッセージの一覧を入力として受け取り、モデルによって生成されたメッセージを出力として返します。 チャット形式は、複数ターンの会話を簡単にできるように設計されていますが、会話なしで 1 ターンのタスクにも役立ちます。

OpenAI 機能 :チャットの完了を参照してください。

イメージの生成

OpenAI 機能 :イメージ生成を参照してください。

ファイル

OpenAI Files API リファレンスを参照してください。

テキスト埋め込み

OpenAI 機能の :埋め込みを参照してください。

このセクションでは、Azure OpenAI サービスの機能の使用例を示します。 その他の例については、samples フォルダーのを確認してください。

ビジネス データの分析

この 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 を使用するすべてのリポジトリで 1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの行動規範を採用しています。 詳細については、行動規範に関する FAQ を参照するか、その他の質問やコメントを opencode@microsoft.com にお問い合わせください。