你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
该包包含一个同构的 SDK(可在 Node.js 和浏览器中运行),用于分析有害内容、评估代理控制规范策略、检测内容来源以及管理文本拦截列表。
关键链接:
该软件包尚未发布给 NPM。 npm 包页面和托管 API 参考将在首次发布后开放。
入门
目前支持的环境
- Node.js的 LTS 版本
- 最新版本的 Safari、Chrome、Edge 和 Firefox。
有关更多详细信息,请参阅我们的支持政策。
先决条件
安装 @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
若要参与此库,请阅读 贡献指南 了解有关如何生成和测试代码的详细信息。