Azure AI 內容安全 用戶端函式庫 for JavaScript - 版本 1.0.0-beta.1

此套件包含一個同構的 SDK(可在 Node.js 與瀏覽器中運行),用於分析有害內容、評估代理控制規範政策、偵測內容來源及管理文字封鎖清單。

主要連結:

此套件尚未發布至 npm。 npm 套件頁面及託管 API 參考將在首次發佈後開放。

入門指南

目前支援的環境

如需詳細資訊,請參閱我們的支援原則。

Prerequisites

安裝 @azure/ai-content-safety 套件

在第一個測試版釋出後,請安裝 Azure AI 內容安全 的 JavaScript 用戶端函式庫,使用:npm

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

建立並驗證客戶端

要建立客戶端,你需要endpoint你的 Azure AI 內容安全 資源和憑證。 你可以在 Azure 入口網站 找到端點。

你可以用 @azure/identity 函式庫的憑證或現有的 Microsoft Entra 令牌來驗證 Microsoft Entra ID。

若要使用如下所示的 DefaultAzureCredential 提供者,或 Azure SDK 所提供的其他認證提供者,請安裝 @azure/identity 套件:

npm install @azure/identity

你還需要註冊一個新的 Microsoft Entra 應用程式,並透過指派適當的角色給你的服務主體來授權 Azure AI 內容安全 的存取權(注意:這些"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 套件組合

若要在瀏覽器中使用此用戶端連結庫,您必須先使用配套程式。 如需如何執行這項操作的詳細資訊,請參閱我們的 組合檔。

重要概念

內容安全客戶端

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啟動並監控長期偵測 Microsoft 核發的 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

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;

故障排除

記錄

啟用記錄可能有助於找出有關失敗的實用資訊。 若要查看 HTTP 要求和回應的記錄,請將 AZURE_LOG_LEVEL 環境變數設定為 info。 或者,您可以在運行時間啟用記錄,方法是在 setLogLevel中呼叫 @azure/logger:

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

setLogLevel("info");

如需如何啟用記錄的詳細指示,請參閱@azure/記錄器套件檔。

Contributing

如果您想要參與此連結庫,請閱讀 參與指南,以深入瞭解如何建置和測試程序代碼。