Partilhar via


Biblioteca do Azure OpenAI para TypeScript - 2.0.0

O Azure OpenAI Service fornece acesso a modelos avançados de IA para casos de uso de conversação, criação de conteúdo e aterramento de dados. A biblioteca do Azure OpenAI para TypeScript é um complemento para a biblioteca de cliente OpenAI oficial para JavaScript. A biblioteca do Azure OpenAI fornece suporte adicional fortemente tipado para modelos de solicitação e resposta específicos para cenários do Azure OpenAI.

Migrando do @azure/openai versão 1 do⚠️

Confira o Guia de Migração de para obter instruções detalhadas sobre como atualizar o código do aplicativo da versão 1.x da biblioteca de cliente do Azure OpenAI para a biblioteca openai.

Ligações principais:

Primeiros passos

Ambientes atualmente suportados

Pré-requisitos

Se você quiser usar um recurso do Azure OpenAI, deverá ter um de assinatura do Azure e acesso ao Azure OpenAI. Para obter mais informações, consulte Guia de início rápido: introdução à geração de texto usando o Azure OpenAI Service.

Instale o openai e o @azure/openai

Instale a biblioteca de cliente OpenAI do Azure e a biblioteca OpenAI para JavaScript com npm:

npm install openai @azure/openai

Criar e autenticar um AzureOpenAI

Há várias maneiras de autenticar com o serviço Azure OpenAI e a maneira recomendada é usar a ID do Microsoft Entra para autenticação segura e sem chave por meio da biblioteca de Identidade do Azure. Para começar:

  1. Instale o pacote do Azure Identity:

    npm install @azure/identity
    
  2. Crie um provedor de token chamando o getBearerTokenProvider com o tipo de credencial desejado. Por exemplo, DefaultAzureCredential:

    import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
    
    const credential = new DefaultAzureCredential();
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
  3. Crie o cliente passando o provedor de token:

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

Conceda acesso ao seu recurso do Azure OpenAI às suas entidades confiáveis seguindo as instruções em Como configurar o Serviço OpenAI do Azure com autenticação do Microsoft Entra ID.

Conceitos-chave

Assistentes

Consulte visão geral da API de assistentes da OpenAI.

Transcrição/tradução de áudio e geração de texto para fala

Consulte Recursos do OpenAI: Fala para texto.

Lote

Consulte guia da API em lote da OpenAI.

Conclusão do chat

Os modelos de chat tomam uma lista de mensagens como entrada e retornam uma mensagem gerada pelo modelo como saída. Embora o formato de bate-papo seja projetado para facilitar conversas em vários turnos, ele também é útil para tarefas de turno único sem qualquer conversa.

Consulte OpenAI Capabilities: Chat completion.

Geração de imagens

Consulte OpenAI Capabilities: Image generation.

Ficheiros

Consulte de referência da API Files da OpenAI.

Incorporações de texto

Consulte Recursos do OpenAI: Incorporações.

Exemplos

Esta seção fornece exemplos de como usar os recursos do Serviço OpenAI do Azure. Para obter exemplos adicionais, faça checkout da pasta exemplos.

Analise dados corporativos

Este exemplo de TypeScript gera respostas de bate-papo para inserir perguntas de bate-papo sobre seus dados corporativos. Os dados corporativos são fornecidos por meio de um índice da Pesquisa Cognitiva do Azure. Para saber mais sobre como configurar um índice da Pesquisa Cognitiva do Azure como fonte de dados, consulte Guia de início rápido: bate-papo com modelos do Azure OpenAI usando seus própriosde dados.

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();

Conclusão do bate-papo filtrado por conteúdo

O Serviço OpenAI do Azure inclui um sistema de filtragem de conteúdo que funciona em conjunto com os modelos principais. Este sistema deteta e toma medidas em categorias específicas de conteúdo potencialmente nocivo tanto em prompts de entrada quanto em finalizações de saída. Este exemplo mostra como acessar esses resultados de filtragem de conteúdo.

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();

Próximos passos

Solução de problemas

Consulte a biblioteca de cliente oficial do OpenAI para JavaScript.

Contribuição

Consulte o OpenAI CONTRIBUTING.md para obter detalhes sobre como criar, testar e contribuir para esta biblioteca.

Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito de, e realmente concede, os direitos de usar sua contribuição. Para mais detalhes, visite cla.microsoft.com.

Quando você envia uma solicitação pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.

Este projeto adotou o Microsoft Open Source Code of Conduct. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com opencode@microsoft.com com perguntas ou comentários adicionais.