사용자 지정 범주(빠른) API 사용(미리 보기)
이 문서의 내용
사용자 지정 범주(빠름) API를 사용하면 새로운 유해한 콘텐츠 인시던트에 신속하게 대응할 수 있습니다. 특정 항목에 대한 몇 가지 예를 사용하여 인시던트를 정의하면 서비스가 유사한 콘텐츠를 검색하기 시작합니다.
다음 단계에 따라 텍스트 콘텐츠의 몇 가지 예를 사용하여 인시던트를 정의한 다음 새 텍스트 콘텐츠를 분석하여 인시던트와 일치하는지 확인합니다.
Important
이 새로운 기능은 일부 Azure 지역에서만 사용할 수 있습니다. 지역 가용성 을 참조하세요.
주의
이 가이드의 샘플 데이터에는 불쾌한 콘텐츠가 포함되어 있을 수 있습니다. 사용자의 재량에 따라 결정하는 것이 좋습니다.
필수 조건
Azure 구독 - 체험 구독 만들기
Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성 하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기 를 선택합니다.
리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동 을 선택합니다. 왼쪽 창의 리소스 관리 에서 구독 키 및 엔드포인트 를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.
또한 이미지를 업로드하려면 Blob Storage 컨테이너를 만듭니다 . 또는 이미지를 Base64 문자열로 인코딩하여 API 호출에서 직접 사용할 수도 있습니다.
다음 중 하나가 설치되었습니다.
텍스트 사용자 지정 범주(빠름) API 테스트
이 섹션의 샘플 코드를 사용하여 텍스트 인시던트를 만들고, 인시던트에 샘플을 추가하고, 인시던트를 배포한 다음, 텍스트 인시던트를 검색합니다.
인시던트 개체 만들기
아래 명령에서 <your_api_key>
, <your_endpoint>
및 기타 필수 매개 변수를 사용자 고유의 값으로 바꿉니다.
다음 명령은 이름과 정의를 사용하여 인시던트를 만듭니다.
curl --location --request PATCH 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{ \"incidentName\": \"<test-incident>\", \"incidentDefinition\": \"<string>\"}'
먼저, 필수 Python 라이브러리를 설치해야 합니다.
pip install requests
그런 다음, 고유한 Azure 리소스 세부 정보를 사용하여 필요한 변수를 정의합니다.
import requests
API_KEY = '<your_api_key>'
ENDPOINT = '<your_endpoint>'
headers = {
'Ocp-Apim-Subscription-Key': API_KEY,
'Content-Type': 'application/json'
}
다음 명령은 이름과 정의를 사용하여 인시던트를 만듭니다.
import requests
import json
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>?api-version=2024-02-15-preview"
payload = json.dumps({
"incidentName": "<text-incident-name>",
"incidentDefinition": "string"
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
인시던트에 샘플 추가
인시던트에 텍스트 예를 추가하려면 다음 명령을 사용합니다.
curl --location 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>:addIncidentSamples?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data-raw '{
\"IncidentSamples\": [
{ \"text\": \"<text-example-1>\"},
{ \"text\": \"<text-example-2>\"},
...
]
}'
import requests
import json
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>:addIncidentSamples?api-version=2024-02-15-preview"
payload = json.dumps({
"IncidentSamples": [
{
"text": "<text-example-1>"
},
{
"text": "<text-example-1>"
},
...
]
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
인시던트 배포
다음 명령을 사용하여 인시던트를 배포하고 새 콘텐츠 분석에 사용할 수 있도록 합니다.
curl --location 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>:deploy?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json'
import requests
import json
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>:deploy?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
텍스트 인시던트 검색
방금 배포한 인시던트에 대한 샘플 텍스트 콘텐츠를 분석하려면 다음 명령을 실행합니다.
curl --location 'https://<endpoint>/contentsafety/text:detectIncidents?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{
\"text\": \"<test-text>\",
\"incidentNames\": [
\"<text-incident-name>\"
]
}'
import requests
import json
url = "https://<endpoint>/contentsafety/text:detectIncidents?api-version=2024-02-15-preview"
payload = json.dumps({
"text": "<test-text>",
"incidentNames": [
"<text-incident-name>"
]
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
이미지 사용자 지정 범주(빠름) API 테스트
이 섹션의 샘플 코드를 사용하여 이미지 인시던트를 만들고, 인시던트에 샘플을 추가하고, 인시던트를 배포한 다음, 이미지 인시던트를 검색합니다.
인시던트 만들기
아래 명령에서 <your_api_key>
, <your_endpoint>
및 기타 필수 매개 변수를 사용자 고유의 값으로 바꿉니다.
다음 명령은 이미지 인시던트를 만듭니다.
curl --location --request PATCH 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{
\"incidentName\": \"<image-incident-name>\"
}'
필수 Python 라이브러리를 설치했는지 확인합니다.
pip install requests
고유한 Azure 리소스 세부 정보로 필요한 변수를 정의합니다.
import requests
API_KEY = '<your_api_key>'
ENDPOINT = '<your_endpoint>'
headers = {
'Ocp-Apim-Subscription-Key': API_KEY,
'Content-Type': 'application/json'
}
다음 명령은 이미지 인시던트를 만듭니다.
import requests
import json
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>?api-version=2024-02-15-preview"
payload = json.dumps({
"incidentName": "<image-incident-name>"
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("PATCH", url, headers=headers, data=payload)
print(response.text)
인시던트에 샘플 추가
다음 명령을 사용하여 인시던트에 예 이미지를 추가합니다. 이미지 샘플은 Azure Blob Storage 컨테이너의 이미지를 가리키는 URL이거나 Base64 문자열일 수 있습니다.
curl --location 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>:addIncidentSamples?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{
\"IncidentSamples\": [
{
\"image\": {
\"content\": \"<base64-data>\",
\"bloburl\": \"<your-blob-storage-url>.png\"
}
}
]
}'
import requests
import json
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>:addIncidentSamples?api-version=2024-02-15-preview"
payload = json.dumps({
"IncidentSamples": [
{
"image": {
"content": "<base64-data>",
"bloburl": "<your-blob-storage-url>/image.png"
}
}
]
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
인시던트 배포
다음 명령을 사용하여 인시던트를 배포하고 새 콘텐츠 분석에 사용할 수 있도록 합니다.
curl --location 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>:deploy?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json'
import requests
import json
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>:deploy?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
이미지 인시던트 검색
다음 명령을 사용하여 샘플 이미지를 업로드하고 배포한 인시던트에 대해 테스트합니다. Azure Blob Storage 컨테이너의 이미지를 가리키는 URL을 사용하거나 이미지 데이터를 Base64 문자열로 추가할 수 있습니다.
curl --location 'https://<endpoint>/contentsafety/image:detectIncidents?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{
\"image\": {
\"url\": \"<your-blob-storage-url>/image.png\",
"content": "<base64-data>"
},
\"incidentNames\": [
\"<image-incident-name>\"
]
}
}'
import requests
import json
url = "https://<endpoint>/contentsafety/image:detectIncidents?api-version=2024-02-15-preview"
payload = json.dumps({
"image": {
"url": "<your-blob-storage-url>/image.png",
"content": "<base64-data>"
},
"incidentNames": [
"<image-incident-name>"
]
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
기타 인시던트 작업
다음 작업은 인시던트 및 인시던트 샘플을 관리하는 데 유용합니다.
텍스트 인시던트 API
모든 인시던트 나열
curl --location GET 'https://<endpoint>/contentsafety/text/incidents?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/text/incidents?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 세부 정보 확인
curl --location GET 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 삭제
curl --location --request DELETE 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
인시던트에 따른 모든 샘플 나열
이 명령은 특정 인시던트 개체와 관련된 모든 샘플의 고유 ID를 검색합니다.
curl --location GET 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>/incidentsamples?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>/incidentsamples?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 샘플 세부 정보 가져오기
인시던트 샘플 ID를 사용하여 샘플에 대한 세부 정보를 조회합니다.
curl --location GET 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>/incidentsamples/<your-incident-sample-id>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>/incidentsamples/<your-incident-sample-id>?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 샘플 삭제
해당 샘플을 검색하고 삭제하려면 인시던트 샘플 ID를 사용합니다.
curl --location 'https://<endpoint>/contentsafety/text/incidents/<text-incident-name>:removeIncidentSamples?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{
\"IncidentSampleIds\": [
\"<your-incident-sample-id>\"
]
}'
import requests
import json
url = "https://<endpoint>/contentsafety/text/incidents/<text-incident-name>:removeIncidentSamples?api-version=2024-02-15-preview"
payload = json.dumps({
"IncidentSampleIds": [
"<your-incident-sample-id>"
]
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
이미지 인시던트 API
인시던트 목록 가져오기
curl --location GET 'https://<endpoint>/contentsafety/image/incidents?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/image/incidents?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 세부 정보 확인
curl --location GET 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 삭제
curl --location --request DELETE 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
인시던트에 따른 모든 샘플 나열
이 명령은 특정 인시던트 개체와 관련된 모든 샘플의 고유 ID를 검색합니다.
curl --location GET 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>/incidentsamples?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>/incidentsamples?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 샘플 세부 정보 가져오기
인시던트 샘플 ID를 사용하여 샘플에 대한 세부 정보를 조회합니다.
curl --location GET 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>/incidentsamples/<your-incident-sample-id>?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>'
import requests
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>/incidentsamples/<your-incident-sample-id>?api-version=2024-02-15-preview"
payload = {}
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
인시던트 샘플 삭제
해당 샘플을 검색하고 삭제하려면 인시던트 샘플 ID를 사용합니다.
curl --location 'https://<endpoint>/contentsafety/image/incidents/<image-incident-name>:removeIncidentSamples?api-version=2024-02-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your-content-safety-key>' \
--header 'Content-Type: application/json' \
--data '{
\"IncidentSampleIds\": [
\"<your-incident-sample-id>\"
]
}'
import requests
import json
url = "https://<endpoint>/contentsafety/image/incidents/<image-incident-name>:removeIncidentSamples?api-version=2024-02-15-preview"
payload = json.dumps({
"IncidentSampleIds": [
"<your-incident-sample-id>"
]
})
headers = {
'Ocp-Apim-Subscription-Key': '<your-content-safety-key>',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
관련 콘텐츠