Segurança de conteúdo de IA do Azure biblioteca cliente para JavaScript - versão 1.0.0-beta.1

Este pacote contém um SDK isomorfo (executa tanto em Node.js como em navegadores) para analisar conteúdos prejudiciais, avaliar políticas de Especificação de Controlo de Agentes, detetar a proveniência do conteúdo e gerir listas de bloqueio de texto.

Ligações principais:

Este pacote ainda não foi publicado no npm. A página do pacote npm e a referência da API alojada estarão disponíveis após a primeira versão.

Como Começar

Ambientes atualmente suportados

Consulte a nossa política de suporte para obter mais detalhes.

Pré-requisitos

  • Uma assinatura do Azure.

Instalar o pacote @azure/ai-content-safety

Após a primeira versão beta, instale a biblioteca cliente Segurança de conteúdo de IA do Azure para JavaScript comnpm:

npm install @azure/ai-content-safety@next

Criar e autenticar clientes

Para criar um cliente, vai precisar do endpoint seu recurso Segurança de conteúdo de IA do Azure e de uma credencial. Pode encontrar o endpoint no portal do Azure.

Pode autenticar-se com o Microsoft Entra ID usando uma credencial da biblioteca @azure/identity ou um token Microsoft Entra existente.

Para usar o provedor de DefaultAzureCredential mostrado abaixo ou outros provedores de credenciais fornecidos com o SDK do Azure, instale o pacote @azure/identity:

npm install @azure/identity

Também terá de registar uma nova aplicação Microsoft Entra e conceder acesso ao Segurança de conteúdo de IA do Azure, atribuindo um papel adequado ao seu principal de serviço (nota: funções como não "Owner" concedem as permissões necessárias).

Para mais informações sobre como criar uma aplicação Microsoft Entra, consulte este guia.

Usando ambientes Node.js e Node-like, você pode usar a classe DefaultAzureCredential para autenticar o cliente.

import { DefaultAzureCredential } from "@azure/identity";
import {
  ContentSafetyClient,
  ContentProvenanceClient,
  BlocklistClient,
} from "@azure/ai-content-safety";

const credential = new DefaultAzureCredential();
const contentSafetyClient = new ContentSafetyClient("<endpoint>", credential);
const contentProvenanceClient = new ContentProvenanceClient("<endpoint>", credential);
const blocklistClient = new BlocklistClient("<endpoint>", credential);

Para ambientes de navegador, use o InteractiveBrowserCredential do pacote @azure/identity para autenticar.

import { InteractiveBrowserCredential } from "@azure/identity";
import { ContentSafetyClient } from "@azure/ai-content-safety";

const credential = new InteractiveBrowserCredential({
  tenantId: "<YOUR_TENANT_ID>",
  clientId: "<YOUR_CLIENT_ID>",
});
const client = new ContentSafetyClient("<endpoint>", credential);

Pacote JavaScript

Para usar essa biblioteca de cliente no navegador, primeiro você precisa usar um bundler. Para obter detalhes sobre como fazer isso, consulte nossa documentação de agregação de .

Conceitos principais

ConteúdoSegurançaCliente

ContentSafetyClient analisa texto e imagens, deteta material protegido e faz injeção rápida, e avalia o conteúdo de acordo com uma política de Especificação de Controlo de Agentes.

import { ContentSafetyClient } from "@azure/ai-content-safety";
import { DefaultAzureCredential } from "@azure/identity";

const client = new ContentSafetyClient("<endpoint>", new DefaultAzureCredential());
async function moderateInput(): Promise<void> {
  const result = await client.unifiedModerate({
    policyId: "<policy-id>",
    source: "input",
    content: "Text to evaluate",
  });
  console.log(result.verdict);
}
void moderateInput;

ContentProvenanceClient

ContentProvenanceClientinicia e monitoriza operações de deteção de longa duração para sinais C2PA fornecidos pela Microsoft e marca de água.

import { ContentProvenanceClient } from "@azure/ai-content-safety";
import { DefaultAzureCredential } from "@azure/identity";

const client = new ContentProvenanceClient("<endpoint>", new DefaultAzureCredential());
async function detectProvenance(): Promise<void> {
  const poller = client.detect({ content: { uri: "<media-blob-uri>" } });
  const result = await poller.pollUntilDone();
  console.log(result.outcome);
}
void detectProvenance;

O estado do poller serializado pode ser restaurado noutro processo:

import { ContentProvenanceClient, restorePoller } from "@azure/ai-content-safety";
import { DefaultAzureCredential } from "@azure/identity";

const client = new ContentProvenanceClient("<endpoint>", new DefaultAzureCredential());
async function resumeDetection(serializedState: string): Promise<void> {
  const poller = restorePoller(client, serializedState, client.detect.bind(client));
  const result = await poller.pollUntilDone();
  console.log(result.outcome);
}
void resumeDetection;

BlocklistClient

BlocklistClient cria, atualiza, lista e elimina listas de bloqueio de texto e os seus itens.

import { BlocklistClient } from "@azure/ai-content-safety";
import { DefaultAzureCredential } from "@azure/identity";

const client = new BlocklistClient("<endpoint>", new DefaultAzureCredential());
async function updateBlocklist(): Promise<void> {
  const result = await client.createOrUpdateTextBlocklist("<blocklist-name>", {
    description: "Blocklist description",
  });
  console.log(result.blocklistName);
}
void updateBlocklist;

Use byPage({ maxPageSize }) para pedir um tamanho máximo de página ao listar itens da lista de bloqueios:

import { BlocklistClient } from "@azure/ai-content-safety";
import { DefaultAzureCredential } from "@azure/identity";

const client = new BlocklistClient("<endpoint>", new DefaultAzureCredential());
async function listBlocklistItemPages(): Promise<void> {
  const pages = client.listTextBlocklistItems("<blocklist-name>").byPage({ maxPageSize: 20 });
  for await (const page of pages) {
    for (const item of page) {
      console.log(item.blocklistItemId, item.text);
    }
  }
}
void listBlocklistItemPages;

Troubleshooting

Logging

Habilitar o registro em log pode ajudar a descobrir informações úteis sobre falhas. Para ver um log de solicitações e respostas HTTP, defina a variável de ambiente AZURE_LOG_LEVEL como info. Como alternativa, o registro em log pode ser habilitado em tempo de execução chamando setLogLevel no @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Para obter instruções mais detalhadas sobre como habilitar logs, você pode consultar os documentos do pacote @azure/logger.

Contributing

Se você quiser contribuir para esta biblioteca, leia o guia de contribuição para saber mais sobre como criar e testar o código.