共用方式為


TypeScript 的 Azure OpenAI 連結庫 - 2.0.0

Azure OpenAI 服務 可讓您存取進階 AI 模型,以進行對話式、內容建立和數據基礎使用案例。 適用於 TypeScript 的 Azure OpenAI 連結庫隨附於適用於 JavaScript的官方 OpenAI 用戶端連結庫。 Azure OpenAI 連結庫為 Azure OpenAI 案例特定的要求和回應模型提供額外的強型別支援。

從第 1 版諮詢 @azure/openai 移轉⚠️

如需如何將應用程式程式代碼從 Azure OpenAI 用戶端連結庫 1.x 版更新至 openai 連結庫的詳細指示,請參閱 移轉指南

主要連結:

開始

目前支持的環境

先決條件

如果您想要使用 Azure OpenAI 資源,您必須擁有 Azure 訂用帳戶,並 Azure OpenAI 存取。 如需詳細資訊,請參閱 快速入門:開始使用 Azure OpenAI Service產生文字。

同時安裝 openai@azure/openai

使用 npm安裝 Azure OpenAI 用戶端連結庫和適用於 JavaScript 的 OpenAI 連結庫:

npm install openai @azure/openai

建立和驗證 AzureOpenAI

有數種方式可以向 Azure OpenAI 服務進行驗證,而建議的方法是使用 Microsoft Entra ID,透過 Azure 身分識別連結庫進行安全、無密鑰驗證。 若要開始使用:

  1. 安裝 Azure 身分識別套件

    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 服務功能的範例。 如需其他範例,請參閱 samples 資料夾

分析商務數據

此 TypeScript 範例會產生聊天回應,以輸入有關商務數據的聊天問題。 商務數據是透過 Azure 認知搜尋索引來提供。 若要深入瞭解如何將 Azure 認知搜尋索引設定為數據源,請參閱快速入門:使用您自己的數據與 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-Bot 會自動判斷您是否需要提供 CLA 並適當裝飾 PR(例如標籤、批註)。 只要遵循 Bot 所提供的指示即可。 您只需要使用我們的 CLA 在所有存放庫上執行此動作一次。

此專案已採用 Microsoft開放原始碼。 如需詳細資訊,請參閱 行為規範常見問題 或連絡 opencode@microsoft.com,以取得任何其他問題或意見。