Безопасность содержимого ИИ Azure клиентская библиотека для JavaScript — версия 1.0.0-beta.1

Этот пакет содержит изоморфный SDK (работает как в Node.js, так и в браузерах) для анализа вредного контента, оценки политик спецификации управления агентами, обнаружения происхождения контента и управления текстовыми блокировками.

Ключевые ссылки:

Этот пакет пока не опубликован в npm. Страница пакета npm и размещённый API будут доступны после первого релиза.

Начало работы

Поддерживаемые в настоящее время среды

Чтобы получить дополнительные сведения, ознакомьтесь с нашей политикой поддержки.

Необходимые условия

Установите пакет @azure/ai-content-safety.

После первого бета-релиза установите клиентскую библиотеку Безопасность содержимого ИИ Azure для JavaScript с npmпомощью :

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

Создавайте и аутентифицируйте клиентов

Для создания клиента вам потребуется endpoint ваш ресурс Безопасность содержимого ИИ Azure и учетная запись. Вы можете найти конечную точку в портал Azure.

Вы можете аутентифицироваться с помощью Microsoft Entra ID, используя учетные данные из библиотеки @azure/identity или имея существующий токен Microsoft Entra.

Чтобы использовать поставщик defaultAzureCredential, показанный ниже, или другие поставщики учетных данных, предоставленные пакетом Azure SDK, установите пакет :

npm install @azure/identity

Вам также нужно будет зарегистрировать новое приложение Microsoft Entra и предоставить доступ к Безопасность содержимого ИИ Azure, назначив соответствующую роль вашему руководителю сервиса (примечание: такие роли "Owner" не предоставляют необходимые права).

Для получения дополнительной информации о том, как создать приложение Microsoft Entra, ознакомьтесь с этим руководством.

Используя среды Node.js и node-like, можно использовать класс DefaultAzureCredential для проверки подлинности клиента.

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

Для сред браузера используйте InteractiveBrowserCredential из пакета @azure/identity для проверки подлинности.

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

Пакет JavaScript

Чтобы использовать эту клиентную библиотеку в браузере, сначала необходимо использовать пакет. Дополнительные сведения о том, как это сделать, см. в нашей документации по .

Ключевые понятия

ContentSafetyClient

ContentSafetyClient анализирует текст и изображения, выявляет защищённые материалы и ввод подсказок, а также оценивает содержимое в соответствии с политикой спецификации управления агентами.

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

ContentProvenanceClientзапускает и отслеживает долгосрочные операции обнаружения сигналов C2PA и водяных знаков, выданных Microsoft.

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;

Сериализованное состояние опросника можно восстановить другим способом:

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 создаёт, обновляет, перечисляет и удаляет текстовые блок-списки и их элементы.

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;

Используйте byPage({ maxPageSize }) для запроса максимального размера страницы при размещении элементов блок-листа:

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

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. В альтернативном порядке, логирование можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

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

setLogLevel("info");

Дополнительные инструкции по включению журналов см. в документации по пакету @azure/loger.

Contributing

Если вы хотите внести свой вклад в эту библиотеку, ознакомьтесь с руководством по вкладу, чтобы узнать больше о том, как создавать и тестировать код.