このパッケージには、有害なコンテンツの分析、エージェント制御仕様ポリシーの評価、コンテンツの出所検出、テキストブロックリストの管理を行う同型SDKが含まれています(Node.js とブラウザの両方で動作します)。
主要なリンク:
このパッケージはまだnpmに公開されていません。 npmパッケージページとホストAPIリファレンスは、最初のリリース後に利用可能になります。
作業の開始
現在サポートされている環境
- Node.js の LTS バージョン
- Safari、Chrome、Edge、Firefox の最新バージョン。
詳細については、サポート ポリシーの を参照してください。
前提条件
@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 の
Azure SDK for JavaScript