共用方式為


使用 Windows Copilot Runtime 進行內容安全性審核

重要

Windows App SDK 的最新 實驗通道 版本中提供。

Windows App SDK 實驗通道包含開發初期階段的 API 和功能。 實驗通道中的所有 API 都須經過廣泛的修訂和破壞性變更,並可能隨時從後續版本中移除。 實驗性功能不支援在生產環境中使用,且使用它們的應用程式無法發佈至Microsoft市集。

Windows Copilot 運行時間 API,例如 Phi 矽石 API影像 API,實作文字內容審核,以分類和篩選出這些生成模型提示或傳回的潛在有害內容。 根據預設,API 會篩選出分類為潛在有害的內容,不過,開發人員可以設定不同的敏感度層級。

先決條件

文字內容審核

您可以調整生成模型的輸入提示與 AI 生成輸出的內容審核。 Windows Copilot 執行階段 API 的內容仲裁設計和實作方式,類似於 Azure AI 內容安全性所提供的版本

傷害類別

傷害類別與 Azure AI 內容安全性中使用的定義一致,且可在 Azure AI 內容安全性指導方針中找到。 傷害類別包括:仇恨和公平性、性內容、暴力或自我傷害,並可包含相同內容上的多個標籤。

分類潛在有害內容的這四個類別可讓敏感度篩選進行調整。

類別 描述 API 名稱
仇恨和公平相關的傷害是指任何攻擊或使用歧視性語言的內容,並且這些內容是基於這些群組的某些區分特徵來對個人或身份群組進行參考。 HateContentSeverity
性的 性關於描述有解剖器官、生殖器、浪漫關係及性行為的語言,以及以色情或深情的術語描繪的行為,包括那些被描繪成攻擊或強迫的性暴力行為,違背個人意志。 SexualContentSeverity
暴力 暴力描述與旨在傷害、傷害、傷害或殺害某人或某物的身體行動相關的語言:描述武器、槍支和相關實體。 ViolentContentSeverity
自我傷害 自我傷害是指與故意傷害、損壞自己身體或自殺的身體行為相關的語言。 SelfHarmContentSeverity

嚴重性層級

根據預設,所有對 Windows Copilot Runtime 生成 API 的呼叫都會使用內容審查,但可以調整嚴重性層級。

  • high:無法使用。 分類為嚴重性層級 3+ 的內容(潛在危害高風險)目前無法由產生 AI 模型傳回。

  • medium:預設嚴重性層級設定為 medium。 系統會傳回分類為嚴重性層級 0 - 3 的內容。

  • low:進一步降低傳回潛在有害內容的風險。 只會傳回分類為嚴重性層級 0 - 1 的內容。

若要深入瞭解嚴重性層級,請參閱 Azure AI 內容安全性危害類別

文字內容審核程式碼範例

若要設定嵌入在 Windows Copilot Runtime 的文字內容審查嚴重性篩選器,您必須將 ContentFilterOptions 結構作為參數傳遞給用於生成回應的 API,例如 Phi 矽 API

下列程式代碼範例示範如何將文字內容審核嚴重性篩選新增至 Microsoft Windows 生成式 AI LanguageModel

var languageModelOptions = new LanguageModelOptions {
    Temp =  0.9f,
    Top_p = 0.9f, 
    Top_k = 40
};

var promptMinSeverityLevelToBlock = new TextContentFilterSeverity {
    HateContentSeverity = SeverityLevel.Low,
    SexualContentSeverity = SeverityLevel.Low,
    ViolentContentSeverity = SeverityLevel.Medium,
    SelfHarmContentSeverity = SeverityLevel.Low
};

var responseMinSeverityLevelToBlock = new TextContentFilterSeverity {
    HateContentSeverity = SeverityLevel.Low,
    SexualContentSeverity = SeverityLevel.Low,
    ViolentContentSeverity = SeverityLevel.Low,
    SelfHarmContentSeverity = SeverityLevel.Medium
};

var contentFilterOptions = new ContentFilterOptions {
    PromptMinSeverityLevelToBlock = promptMinSeverityLevelToBlock,
    ResponseMinSeverityLevelToBlock = responseMinSeverityLevelToBlock
};

IProgress<string> progress;
var languageModelResponseWithProgress = model.GenerateResponseWithProgressAsync(languageModelOptions, prompt, contentFilterOptions);
languageModelRepsonseWithProgress.Progress = (_, generationProgress) =>
{
    progress.Report(generationProgress);
};
string response = (await languageModelResponseWithProgress).Response;