內容篩選

重要

內容篩選系統不會套用於 Azure OpenAI 服務中 Whisper 模型處理的提示和完成。 深入了解 Azure OpenAI 中的 Whisper 模型

Azure OpenAI 服務包含內容篩選系統,可搭配核心模型執行。 此系統的運作方式是透過旨在偵測並防止有害內容輸出的一組分類模型來執行提示和完成。 內容篩選系統會偵測並針對輸入提示和輸出完成中的特定類別的潛在有害內容採取動作。 API 組態和應用程式設計的變化可能會影響完成,因而篩選行為。

仇恨、性、暴力和自我傷害類別的內容篩選模型已專門訓練和測試下列語言:英文、德文、日文、西班牙文、法文、義大利文、葡萄牙文和中文。 不過,服務可以使用許多其他語言,但品質可能會有所不同。 在所有情況下,您應執行自己的測試,以確保它適用於您的應用程式。

除了內容篩選系統之外,Azure OpenAI 服務還會執行監視,以偵測可能違反適用產品條款之方式來建議使用服務的內容和/或行為。 如需了解和減輕與應用程式相關聯風險的詳細資訊,請參閱 Azure OpenAI 的透明度資訊。 如需如何處理數據以進行內容篩選和濫用監視的詳細資訊,請參閱 Azure OpenAI 服務的數據、隱私權和安全性。

下列各節提供內容篩選類別、篩選嚴重性層級及其可設定性,以及應用程式設計和實作中要考量的 API 案例的相關資訊。

內容篩選類別

Azure OpenAI 服務中整合的內容篩選系統包含:

  • 類神經多類別分類模型,旨在偵測和篩選有害內容;這些模型涵蓋四種嚴重性等級(安全、低、中、高)的四類(仇恨、性、暴力和自我傷害)。 偵測到嚴重性層級為「安全」的內容會在註釋中標記,但不受限於篩選且無法設定。
  • 其他選擇性分類模型,旨在偵測越獄風險和文字和程序代碼的已知內容;這些模型是二進位分類器,會標幟使用者或模型行為是否限定為越獄攻擊,或符合已知的文字或原始程式碼。 使用這些模型是選擇性的,但客戶著作權承諾涵蓋範圍可能需要使用受保護的材料程序代碼模型。

傷害類別

類別 描述
仇恨和公平 仇恨和公平相關的傷害是指攻擊或使用貶低或歧視性語言的任何內容,這些群體根據這些群體的某些不同屬性,包括種族、種族、國籍、性別認同群體和表達、性取向、宗教、移民身份、能力地位、個人外觀、身份、 和本文大小。 

公平性涉及確保 AI 系統公平對待所有人群,而不會對現有的社會不平等做出貢獻。 與仇恨言論類似,公平相關的傷害取決於不同對待身份群體。  
色情 性描述與解剖器官和生殖器、浪漫關係、以色情或深情術語描繪的行為、懷孕、身體性行為,包括那些被描繪成攻擊或強迫性暴力行為,反對自己意志、賣淫、色情和虐待的行為。  
暴力 暴力描述與旨在傷害、傷害、傷害或殺害某人或某物的身體行動相關的語言:描述武器、槍支和相關實體,例如製造、協會、立法等。
自殘 自我傷害描述了與故意傷害、傷害、傷害他人身體或自殺的身體行為相關的語言。
越獄風險 越獄攻擊是使用者提示,其設計目的是要引發產生 AI 模型,以展示其定型的行為,以避免或打破系統訊息中設定的規則。 這類攻擊可能會因複雜的角色發揮到安全目標的微妙顛覆而有所不同。
文字的受保護材質* 受保護的材料文字描述已知的文字內容(例如歌曲歌詞、文章、食譜和選取的Web內容),這些內容可由大型語言模型輸出。
程序代碼的受保護數據 受保護的材料程式代碼描述與公用存放庫的一組原始程式碼相符的原始程式碼,大型語言模型可以輸出,而不需要適當引文來源存放庫。

* 如果您是文字內容的擁有者,且想要提交文字內容以保護,請 提出要求

文字內容

警告

本檔中的 [嚴重性定義 ] 索引標籤包含可能對某些讀者造成干擾之有害內容的範例。

映像內容

警告

本檔中的 [嚴重性定義 ] 索引標籤包含可能對某些讀者造成干擾之有害內容的範例。

可設定性 (預覽)

預設內容篩選組態設定為對提示和完成的所有四類內容危害類別的中等嚴重性閾值進行篩選。 這表示在嚴重性層級中或高層級偵測到的內容會經過篩選,而在嚴重性層級低時偵測到的內容則不會依內容篩選來篩選。 可設定性功能於預覽中提供,並允許客戶分別調整提示和完成的設定,以篩選不同嚴重性層級的每個內容類別的內容,如下表所示:

篩選的嚴重性 可針對提示設定 可針對完成設定 Description
低、中、高 Yes Yes 最嚴格的篩選設定。 篩選在嚴重性層級低、中和高時偵測到的內容。
中、高 Yes Yes 預設設定。 在嚴重性層級低時偵測到的內容不會篩選,會篩選中高的內容。
Yes Yes 在嚴重性層級低和中偵測到的內容不會篩選。 僅篩選嚴重性層級為高的內容。
沒有篩選 如果核准* 如果核准* 無論偵測到的嚴重性層級如何,都不會篩選任何內容。 需要核准*

* 只有已核准修改內容篩選的客戶具有完整的內容篩選控制件,而且可以部分或完全關閉內容篩選。 內容篩選控制項不適用於 DALL-E (預覽) 或具有視覺的 GPT-4 Turbo 內容篩選 (預覽)。 使用此形式申請修改的內容篩選:Azure OpenAI 有限存取權檢閱:修改的內容篩選(microsoft.com)。

客戶須負責確保整合 Azure OpenAI 的應用程式符合 規範

內容篩選設定是在 Azure AI Studio 中的資源內建立,並且可與部署相關聯。 在這裡深入了解可設定性

案例詳細資料

當內容篩選系統偵測到有害內容時,如果提示被視為不適當,您會收到 API 呼叫上的錯誤,或 finish_reason 回應上的 表示 content_filter 已篩選部分完成。 建置您的應用程式或系統時,您會想要考慮這些案例,其中會篩選完成 API 傳回的內容,這可能會導致內容不完整。 您對此資訊的運作方式將會是應用程式專屬的。 以下各點會摘要該行為:

  • 依篩選類別和嚴重性層級分類的提示會傳回 HTTP 400 錯誤。
  • 篩選內容時,非串流完成呼叫不會傳回任何內容。 finish_reason 值會設定為 content_filter。 在少數案例下,若回應較長,可以傳回部分結果。 在這些情況下, finish_reason 將會更新 。
  • 針對串流完成呼叫,區段會在完成時傳回給使用者。 服務會繼續串流處理,直到到達停止權杖、長度,或偵測到分類為篩選類別和嚴重性層級的內容為止。

案例:您傳送要求多個輸出的非串流完成呼叫;在篩選的類別和嚴重性層級未分類任何內容

下表概述內容篩選可以顯示的各種方式:

HTTP 回應碼 回應行為
200 在所有產生如所設定通過篩選時,不會將內容仲裁詳細資料新增至回應。 每個產生的 finish_reason 將會是 stop 或 length。

要求承載範例:

{
    "prompt":"Text example", 
    "n": 3,
    "stream": false
}

範例回應 JSON:

{
    "id": "example-id",
    "object": "text_completion",
    "created": 1653666286,
    "model": "davinci",
    "choices": [
        {
            "text": "Response generated text",
            "index": 0,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

案例:您的 API 呼叫會要求多個回應 (N>1)和至少篩選其中一個回應

HTTP 回應碼 回應行為
200 篩選的產生會有 finish_reasoncontent_filter

要求承載範例:

{
    "prompt":"Text example",
    "n": 3,
    "stream": false
}

範例回應 JSON:

{
    "id": "example",
    "object": "text_completion",
    "created": 1653666831,
    "model": "ada",
    "choices": [
        {
            "text": "returned text 1",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null
        },
        {
            "text": "returned text 2",
            "index": 1,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

案例:不適當的輸入提示會傳送至完成 API(適用於串流或非串流)

HTTP 回應碼 回應行為
400 當提示觸發已設定的內容篩選時,API 呼叫會失敗。 修改提示,然後再試一次。

要求承載範例:

{
    "prompt":"Content that triggered the filtering model"
}

範例回應 JSON:

"error": {
    "message": "The response was filtered",
    "type": null,
    "param": "prompt",
    "code": "content_filter",
    "status": 400
}

案例:您進行串流完成呼叫;在篩選的類別和嚴重性層級未分類任何輸出內容

HTTP 回應碼 回應行為
200 在此案例下,呼叫會以完整產生來重新串流,而每個產生回應的 finish_reason 將會是 'length' 或 'stop'。

要求承載範例:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

範例回應 JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670914,
    "model": "ada",
    "choices": [
        {
            "text": "last part of generation",
            "index": 2,
            "finish_reason": "stop",
            "logprobs": null
        }
    ]
}

案例:您進行串流完成呼叫來要求多個完成,且至少篩選出一部分的輸出內容

HTTP 回應碼 回應行為
200 針對指定的產生索引,產生的最後一個區塊包含非 Null finish_reason 值。 值是在 content_filter 篩選產生時。

要求承載範例:

{
    "prompt":"Text example",
    "n": 3,
    "stream": true
}

範例回應 JSON:

 {
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1653670515,
    "model": "ada",
    "choices": [
        {
            "text": "Last part of generated text streamed back",
            "index": 2,
            "finish_reason": "content_filter",
            "logprobs": null
        }
    ]
}

案例:內容篩選系統不會在完成時執行

HTTP 回應碼 回應行為
200 如果內容篩選系統已關閉或無法及時完成作業,在沒有內容篩選的情況下,您的要求仍會完成。 您可以在 content_filter_result 物件中尋找錯誤訊息,以判斷未套用的篩選。

要求承載範例:

{
    "prompt":"Text example",
    "n": 1,
    "stream": false
}

範例回應 JSON:

{
    "id": "cmpl-example",
    "object": "text_completion",
    "created": 1652294703,
    "model": "ada",
    "choices": [
        {
            "text": "generated text",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null,
            "content_filter_result": {
                "error": {
                    "code": "content_filter_error",
                    "message": "The contents are not filtered"
                }
            }
        }
    ]
}

註釋

內容篩選條件

啟用註釋時,如下列代碼段所示,下列資訊會透過 API 傳回,以取得仇恨和公平、性、暴力和自我傷害類別:

  • 內容篩選類別(仇恨、性、暴力、self_harm)
  • 每個內容類別內的嚴重性層級 (安全、低、中或高)
  • 篩選狀態 (true 或 false)。

選擇性模型

選擇性模型可以在批註中啟用(在標示內容但未篩選時傳回資訊)或篩選模式(在標示和篩選內容時傳回資訊)。

當註釋啟用如下列代碼段所示時,API 會針對選擇性模型傳回下列資訊:越獄風險、受保護的材料文字和受保護的材料程序代碼:

  • 類別(越獄,protected_material_text,protected_material_code),
  • 偵測到 (true 或 false),
  • filtered (true 或 false) 。

針對受保護的材料程序代碼模型,API 會傳回下列其他資訊:

  • 找到代碼段的公用 GitHub 存放庫範例引文
  • 存放庫的授權。

在應用程式中顯示程式代碼時,強烈建議應用程式也顯示註釋中的範例引文。 客戶著作權承諾涵蓋範圍可能也需要遵守引用的授權。

批註目前適用於 GA API 版本 2024-02-01 ,以及從 2023-06-01-preview [完成] 和 [聊天完成] 開始的所有預覽版本 (GPT 模型)。 下列代碼段示範如何使用註釋:

# os.getenv() for the endpoint and key assumes that you are using environment variables.

import os
from openai import AzureOpenAI
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-03-01-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") 
    )

response = client.completions.create(
    model="gpt-35-turbo-instruct", # model = "deployment_name".
    prompt="{Example prompt where a severity level of low is detected}" 
    # Content that is detected at severity level medium or high is filtered, 
    # while content detected at severity level low isn't filtered by the content filters.
)

print(response.model_dump_json(indent=2))

輸出

{ 
  "choices": [ 
    { 
      "content_filter_results": { 
        "hate": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "protected_material_code": { 
          "citation": { 
            "URL": " https://github.com/username/repository-name/path/to/file-example.txt", 
            "license": "EXAMPLE-LICENSE" 
          }, 
          "detected": true,
          "filtered": false 
        }, 
        "protected_material_text": { 
          "detected": false, 
          "filtered": false 
        }, 
        "self_harm": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "sexual": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "violence": { 
          "filtered": false, 
          "severity": "safe" 
        } 
      }, 
      "finish_reason": "stop", 
      "index": 0, 
      "message": { 
        "content": "Example model response will be returned ", 
        "role": "assistant" 
      } 
    } 
  ], 
  "created": 1699386280, 
  "id": "chatcmpl-8IMI4HzcmcK6I77vpOJCPt0Vcf8zJ", 
  "model": "gpt-35-turbo-instruct", 
  "object": "text.completion",
  "usage": { 
    "completion_tokens": 40, 
    "prompt_tokens": 11, 
    "total_tokens": 417 
  },  
  "prompt_filter_results": [ 
    { 
      "content_filter_results": { 
        "hate": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "jailbreak": { 
          "detected": false, 
          "filtered": false 
        }, 
        "profanity": { 
          "detected": false, 
          "filtered": false 
        }, 
        "self_harm": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "sexual": { 
          "filtered": false, 
          "severity": "safe" 
        }, 
        "violence": { 
          "filtered": false, 
          "severity": "safe" 
        } 
      }, 
      "prompt_index": 0 
    } 
  ]
} 

如需 Azure OpenAI 的推斷 REST API 端點以及如何建立聊天和完成的詳細資料,請遵循 Azure OpenAI 服務 REST API 參考指導。 使用從 2023-06-01-preview開始的任何預覽 API 版本,以及 GA API 版本 2024-02-01時,會針對所有案例傳回批注。

範例案例:包含分類在篩選類別和嚴重性層級內容的輸入提示,會傳送至完成 API

{
    "error": {
        "message": "The response was filtered due to the prompt triggering Azure Content management policy. 
                   Please modify your prompt and retry. To learn more about our content filtering policies
                   please read our documentation: https://go.microsoft.com/fwlink/?linkid=21298766",
        "type": null,
        "param": "prompt",
        "code": "content_filter",
        "status": 400,
        "innererror": {
            "code": "ResponsibleAIPolicyViolation",
            "content_filter_result": {
                "hate": {
                    "filtered": true,
                    "severity": "high"
                },
                "self-harm": {
                    "filtered": true,
                    "severity": "high"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered":true,
                    "severity": "medium"
                }
            }
        }
    }
}

內容串流

本節說明 Azure OpenAI 內容串流體驗和選項。 核准后,您可以選擇從 API 產生內容,而不是等候已驗證的內容區塊以傳遞內容篩選。

預設

內容篩選系統預設會整合並啟用所有客戶。 在預設的串流案例中,完成內容會緩衝處理、內容篩選系統在緩衝的內容上執行,而且 -- 視內容篩選組態而定 –如果內容未違反內容篩選原則(Microsoft 預設或自定義使用者設定),或立即封鎖並傳回內容篩選錯誤,則會傳回使用者, 不傳回有害的完成內容。 此程式會重複執行,直到數據流結尾為止。 在內容傳回給使用者之前,會根據內容篩選原則進行完整審查。 在此情況下,內容不會依令牌傳回,但在個別緩衝區大小的「內容區塊」中。

異步修改的篩選

已核准修改內容篩選的客戶可以選擇異步修改的篩選作為其他選項,以提供新的串流體驗。 在此情況下,內容篩選會以異步方式執行,而完成內容會立即以順暢的令牌逐令牌串流體驗傳回。 不會緩衝處理任何內容,這允許零延遲。

客戶必須注意,雖然此功能可改善延遲,但這是對較小模型輸出區段的安全性和實時審查的取捨。 由於內容篩選會以異步方式執行,所以會延遲 con 帳篷模式 ration 訊息和原則違規訊號,這表示可能會立即向用戶顯示某些有害內容區段。

註釋:批註和 con 帳篷模式 訊息會在數據流期間持續傳回。 強烈建議您在應用程式中取用註釋,並實作額外的 AI 內容安全機制,例如將內容修訂或傳回其他安全性資訊給使用者。

內容篩選訊號:內容篩選錯誤訊號延遲。 如果發生原則違規,則會在有原則違規時立即傳回,而且數據流會停止。 內容篩選訊號保證在違反原則內容的 ~1,000 個字元視窗中。

需要核准已修改的內容篩選,才能存取異步修改的篩選。 您可以在這裡找到應用程式。 若要在 Azure OpenAI Studio 中啟用它,請遵循 內容篩選操作指南 來建立新的內容篩選組態,然後在 [串流] 區段中選取 [ 異步修改的篩選 ]。

內容篩選模式的比較

比較 串流 - 預設值 串流 - 異步修改的篩選
狀態 GA 公開預覽
資格 所有客戶 已核准修改內容篩選的客戶
如何啟用 默認為啟用,不需要採取任何動作 核准修改內容篩選的客戶可以直接在 Azure OpenAI Studio 中設定它(在部署層級套用的內容篩選設定的一部分)
形式和可用性 文本;所有 GPT 模型 文本;gpt-4-vision 以外的所有 GPT 模型
串流體驗 內容會緩衝處理並以區塊傳回 零延遲(沒有緩衝處理,篩選器會以異步方式執行)
內容篩選訊號 立即篩選訊號 延遲篩選訊號 (最多 1,000 個字元遞增)
內容篩選組態 支援預設和任何客戶定義的篩選設定(包括選擇性模型) 支援預設和任何客戶定義的篩選設定(包括選擇性模型)

註釋和範例回應

提示批註訊息

這與預設註釋相同。

data: { 
    "id": "", 
    "object": "", 
    "created": 0, 
    "model": "", 
    "prompt_filter_results": [ 
        { 
            "prompt_index": 0, 
            "content_filter_results": { ... } 
        } 
    ], 
    "choices": [], 
    "usage": null 
} 

完成令牌訊息

完成訊息會立即轉送。 不會先執行仲裁,而且一開始不會提供任何批注。

data: { 
    "id": "chatcmpl-7rAJvsS1QQCDuZYDDdQuMJVMV3x3N", 
    "object": "chat.completion.chunk", 
    "created": 1692905411, 
    "model": "gpt-35-turbo", 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": null, 
            "delta": { 
                "content": "Color" 
            } 
        } 
    ], 
    "usage": null 
} 

註釋訊息

文字欄位一律會是空字串,表示沒有新的標記。 批注只會與已傳送的令牌相關。 可能會有多個註釋訊息參考相同的令牌。

"start_offset""end_offset" 是文字中數據粒度低的位移(提示開始時為 0),用來標記批註與哪個文字相關。

"check_offset" 代表已完全仲裁多少文字。 這是未來批注值的獨佔下限 "end_offset" 。 這是不減少的。

data: { 
    "id": "", 
    "object": "", 
    "created": 0, 
    "model": "", 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": null, 
            "content_filter_results": { ... }, 
            "content_filter_raw": [ ... ], 
            "content_filter_offsets": { 
                "check_offset": 44, 
                "start_offset": 44, 
                "end_offset": 198 
            } 
        } 
    ], 
    "usage": null 
} 

範例回應資料流 (通過篩選)

以下是使用異步修改篩選的實際聊天完成回應。 請注意提示批註不會變更的方式、未加上批註的完成標記傳送,而新的批註訊息則不會傳送,而是與特定內容篩選位移產生關聯。

{"temperature": 0, "frequency_penalty": 0, "presence_penalty": 1.0, "top_p": 1.0, "max_tokens": 800, "messages": [{"role": "user", "content": "What is color?"}], "stream": true}

data: {"id":"","object":"","created":0,"model":"","prompt_annotations":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"choices":[],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":"Color"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" is"}}],"usage":null} 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" a"}}],"usage":null} 

... 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":44,"start_offset":44,"end_offset":198}}],"usage":null} 

... 

data: {"id":"chatcmpl-7rCNsVeZy0PGnX3H6jK8STps5nZUY","object":"chat.completion.chunk","created":1692913344,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":"stop","delta":{}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":506,"start_offset":44,"end_offset":571}}],"usage":null} 

data: [DONE] 

範例回應資料流 (篩選封鎖)

{"temperature": 0, "frequency_penalty": 0, "presence_penalty": 1.0, "top_p": 1.0, "max_tokens": 800, "messages": [{"role": "user", "content": "Tell me the lyrics to \"Hey Jude\"."}], "stream": true}

data: {"id":"","object":"","created":0,"model":"","prompt_filter_results":[{"prompt_index":0,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}}}],"choices":[],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"role":"assistant"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":"Hey"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" Jude"}}],"usage":null} 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35-turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":","}}],"usage":null} 

... 

data: {"id":"chatcmpl-8JCbt5d4luUIhYCI7YH4dQK7hnHx2","object":"chat.completion.chunk","created":1699587397,"model":"gpt-35- 

turbo","choices":[{"index":0,"finish_reason":null,"delta":{"content":" better"}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":null,"content_filter_results":{"hate":{"filtered":false,"severity":"safe"},"self_harm":{"filtered":false,"severity":"safe"},"sexual":{"filtered":false,"severity":"safe"},"violence":{"filtered":false,"severity":"safe"}},"content_filter_offsets":{"check_offset":65,"start_offset":65,"end_offset":1056}}],"usage":null} 

data: {"id":"","object":"","created":0,"model":"","choices":[{"index":0,"finish_reason":"content_filter","content_filter_results":{"protected_material_text":{"detected":true,"filtered":true}},"content_filter_offsets":{"check_offset":65,"start_offset":65,"end_offset":1056}}],"usage":null} 

data: [DONE] 

重要

當針對提示觸發內容篩選,並在 "status": 400 回應中收到 時,當服務評估提示時,可能會為此要求收費。 當 收到 時"status":200"finish_reason": "content_filter",也會發生費用。 在此情況下,提示沒有任何問題,但偵測到模型所產生的完成違反了導致篩選完成的內容篩選規則。

最佳作法

在應用程式設計過程中,請考慮下列最佳做法來提供應用程式的正面體驗,同時將潛在損害降至最低:

  • 決定您想要如何處理使用者傳送的提示包含分類在篩選類別和嚴重性層級的內容,或以其他方式誤用您的應用程式的情況。
  • 檢查 finish_reason 以查看是否有篩選完成。
  • 檢查 content_filter_result 中沒有錯誤物件 (表示內容篩選未執行)。
  • 如果您在批注模式中使用受保護的材料程式代碼模型,請在應用程式中顯示程式代碼時顯示引文 URL。

下一步