Azure AI Content Safety クライアントライブラリ for JavaScript - バージョン 1.0.0-beta.1

このパッケージには、有害なコンテンツの分析、エージェント制御仕様ポリシーの評価、コンテンツの出所検出、テキストブロックリストの管理を行う同型SDKが含まれています(Node.js とブラウザの両方で動作します)。

主要なリンク:

このパッケージはまだnpmに公開されていません。 npmパッケージページとホストAPIリファレンスは、最初のリリース後に利用可能になります。

作業の開始

現在サポートされている環境

詳細については、サポート ポリシーの を参照してください。

前提条件

@azure/ai-content-safety パッケージをインストールする

最初のベータリリース後、JavaScript用のAzure AI Content Safetyクライアントライブラリをインストールしてください。以下の方法でnpm:

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

クライアントの作成と認証

クライアントを作成するには、Azure AI Content Safetyリソースのendpointと資格が必要です。 エンドポイントはAzure portalで見つけることができます。

Microsoft Entra IDで認証するには、@azure/identityライブラリの認証情報や既存のMicrosoft Entraトークンを使って認証できます。

以下に示す DefaultAzureCredential プロバイダー、または Azure SDK で提供されているその他の資格情報プロバイダーを使用するには、@azure/identity パッケージをインストールしてください。

npm install @azure/identity

また、新しいMicrosoft Entra申請を登録し、サービスプリンシパルに適切な役割を割り当ててAzure AI Content Safetyアクセスを許可する必要があります(注:"Owner"などの役割は必要な許可を与えません)。

Microsoft Entraアプリケーションの作成方法についての詳細は、このガイドをご覧ください。

Node.js とノードに似た環境を使用すると、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 バンドル

ブラウザーでこのクライアント ライブラリを使用するには、まず、バンドルを使用する必要があります。 これを行う方法の詳細については、バンドルドキュメントを参照してください。

重要な概念

ContentSafetyクライアント

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;

コンテンツProvenanceClient(コンテンツプロヴィナンスクライアント)

ContentProvenanceClientMicrosoft発行のC2PAおよびウォーターマーク信号の長期検出作業を開始し、監視します。

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 テキストブロックリストとその項目の作成、更新、リスト、削除を行います。

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/logger パッケージのドキュメントを参照してください。

Contributing

このライブラリに投稿する場合は、コードをビルドしてテストする方法の詳細については、投稿ガイド を参照してください。

  • Microsoft Azure SDK for JavaScript の