你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 TypeScript 的 Azure OpenAI 库 - 2.0.0

Azure OpenAI 服务 提供对高级 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 服务生成文本。

安装 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 的助手 API 概述

音频听录/翻译和文本转语音生成

请参阅 OpenAI 功能:语音转文本

请参阅 OpenAI 的 Batch API 指南

聊天完成

聊天模型将消息列表作为输入,并返回模型生成的消息作为输出。 尽管聊天格式旨在简化多轮次对话,但对于无需任何对话的单轮次任务也很有用。

请参阅 OpenAI 功能:聊天完成

图像生成

请参阅 OpenAI 功能:映像生成

文件

请参阅 OpenAI 的文件 API 参考

文本嵌入

请参阅 OpenAI 功能:嵌入

例子

本部分提供使用 Azure OpenAI 服务功能的示例。 有关其他示例,请查看 示例文件夹

分析业务数据

此 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 机器人会自动确定是否需要提供 CLA 并适当修饰 PR(例如标签、注释)。 只需按照机器人提供的说明进行操作。 只需使用 CLA 在所有存储库中执行此操作一次。

该项目已采用 Microsoft开源行为准则。 有关详细信息,请参阅 行为准则常见问题解答 或与 opencode@microsoft.com 联系,了解任何其他问题或意见。