你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

Azure AI 内容安全 客户端库 for JavaScript - 版本 1.0.0-beta.1

该包包含一个同构的 SDK(可在 Node.js 和浏览器中运行),用于分析有害内容、评估代理控制规范策略、检测内容来源以及管理文本拦截列表。

关键链接:

该软件包尚未发布给 NPM。 npm 包页面和托管 API 参考将在首次发布后开放。

入门

目前支持的环境

有关更多详细信息,请参阅我们的支持政策。

先决条件

安装 @azure/ai-content-safety 包

在第一个测试版发布后,请通过以下方式npm安装 Azure AI 内容安全 客户端库用于 JavaScript:

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 和类似 Node 的环境,可以使用 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;

Blocklist客户端

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

伐木业

启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL 环境变量设置为 info。 或者,可以通过在 setLogLevel中调用 @azure/logger 在运行时启用日志记录:

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

setLogLevel("info");

有关如何启用日志的更详细说明,可以查看 @azure/记录器包文档。

Contributing

若要参与此库,请阅读 贡献指南 了解有关如何生成和测试代码的详细信息。