Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как использовать API обнаружения заземления. Эта функция автоматически обнаруживает и исправляет недостоверный текст на основе предоставленных исходных документов, обеспечивая выравнивание созданного содержимого с фактическими данными или поставленными целями. Ниже мы рассмотрим несколько распространенных сценариев, которые помогут вам понять, как и когда применять эти функции для достижения наилучших результатов.
Предварительные условия
- подписка Azure — создайте бесплатную учетную запись.
- После получения подписки Azure в портале Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион и поддерживаемую ценовую категорию. Затем выберите Создать.
- Развертывание ресурса занимает несколько минут. Когда оно завершится, перейдите к новому ресурсу. В области слева в разделе "Управление ресурсами" выберите ключи API и конечные точки. Скопируйте одно из значений ключа подписки и конечной точки во временное местоположение для последующего использования.
- (Необязательно) Если вы хотите использовать функцию аргументирования , создайте ресурс службы Azure OpenAI с развернутой моделью GPT.
- cURL или Python установлен.
Проверка подлинности
Для повышения безопасности необходимо использовать управляемое удостоверение (MI) для управления доступом к ресурсам, дополнительные сведения см. в статье "Безопасность".
Проверка заземления без рассуждений
В простом случае без функции логического вывода API обнаружения обоснованности классифицирует необоснованность отправленного содержимого как true
или false
.
В этом разделе описывается пример запроса с cURL. Вставьте приведенную ниже команду в текстовый редактор и внесите следующие изменения.
Замените
<endpoint>
на URL-адрес конечной точки, связанной с вашим ресурсом.Замените
<your_subscription_key>
одним из ключей своего ресурса.При необходимости замените поля
"query"
или"text"
в тексте собственным текстом, который вы хотите проанализировать.curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview' \ --header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \ --header 'Content-Type: application/json' \ --data-raw '{ "domain": "Generic", "task": "QnA", "qna": { "query": "How much does she currently get paid per hour at the bank?" }, "text": "12/hour", "groundingSources": [ "I'm 21 years old and I need to make a decision about the next two years of my life. Within a week. I currently work for a bank that requires strict sales goals to meet. IF they aren't met three times (three months) you're canned. They pay me 10/hour and it's not unheard of to get a raise in 6ish months. The issue is, **I'm not a salesperson**. That's not my personality. I'm amazing at customer service, I have the most positive customer service \"reports\" done about me in the short time I've worked here. A coworker asked \"do you ask for people to fill these out? you have a ton\". That being said, I have a job opportunity at Chase Bank as a part time teller. What makes this decision so hard is that at my current job, I get 40 hours and Chase could only offer me 20 hours/week. Drive time to my current job is also 21 miles **one way** while Chase is literally 1.8 miles from my house, allowing me to go home for lunch. I do have an apartment and an awesome roommate that I know wont be late on his portion of rent, so paying bills with 20hours a week isn't the issue. It's the spending money and being broke all the time.\n\nI previously worked at Wal-Mart and took home just about 400 dollars every other week. So I know i can survive on this income. I just don't know whether I should go for Chase as I could definitely see myself having a career there. I'm a math major likely going to become an actuary, so Chase could provide excellent opportunities for me **eventually**." ], "reasoning": false }'
Откройте командную строку и выполните команду cURL.
Чтобы протестировать задачу сводки вместо задачи ответа на вопросы (QnA), используйте следующий пример текста JSON:
{
"domain": "Medical",
"task": "Summarization",
"text": "Ms Johnson has been in the hospital after experiencing a stroke.",
"groundingSources": [
"Our patient, Ms. Johnson, presented with persistent fatigue, unexplained weight loss, and frequent night sweats. After a series of tests, she was diagnosed with Hodgkin’s lymphoma, a type of cancer that affects the lymphatic system. The diagnosis was confirmed through a lymph node biopsy revealing the presence of Reed-Sternberg cells, a characteristic of this disease. She was further staged using PET-CT scans. Her treatment plan includes chemotherapy and possibly radiation therapy, depending on her response to treatment. The medical team remains optimistic about her prognosis given the high cure rate of Hodgkin’s lymphoma."
],
"reasoning": false
}
Следующие поля должны быть включены в URL-адрес:
Имя | Обязательно | Описание | Тип |
---|---|---|---|
Версия API | Обязательно | Это используемая версия API. Текущая версия: api-version=2024-09-15-preview. Пример: <endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview |
Строка |
Параметры в тексте запроса определяются в этой таблице:
Имя | Описание | Тип |
---|---|---|
домен | (Необязательно) MEDICAL или GENERIC . Значение по умолчанию: GENERIC . |
Перечисление |
задача | (Необязательно) Тип задачи: QnA , Summarization . Значение по умолчанию: Summarization . |
Перечисление |
qna | (Необязательно) Хранит данные QnA при использовании типа QnA задачи. |
Строка |
- query |
(Необязательно) Это представляет собой вопрос в задаче «Вопрос-Ответ». Ограничение символов: 7500. | Строка |
text | (обязательно) Проверяемый текст результата работы LLM. Ограничение символов: 7500. | Строка |
groundingSources | (обязательно) Использует массив проверенных источников для проверки текста, сгенерированного ИИ. Сведения о требованиях к входным данным см. в разделе "Требования к входным данным". | Массив строк |
рассуждение | (Необязательно) Указывает, следует ли использовать функцию аргументирования. Значение по умолчанию — false . Если true , вам нужно иметь собственную версию Azure OpenAI GPT4o (0513, 0806) для предоставления объяснения. Будьте осторожны: использование рассуждений увеличивает время обработки. |
Логический |
Интерпретация ответа API
После отправки запроса вы получите ответ JSON, отражающий выполненный анализ заземления. Вот как выглядит типичный результат:
{
"ungroundedDetected": true,
"ungroundedPercentage": 1,
"ungroundedDetails": [
{
"text": "12/hour."
}
]
}
Объекты JSON в выходных данных определяются здесь:
имя | Описание | Тип |
---|---|---|
ungroundedDetected | Указывает, проявляется ли текст как оторванный от реальности. | Логический |
ungroundedPercentage | Указывает долю текста, определяемую как не обоснованная, выраженную в виде числа от 0 до 1, где 0 означает отсутствие необоснованного содержимого, а 1 — полностью необоснованное содержимое. Это не уровень достоверности. | Тип с плавающей запятой |
необоснованныеДетали | Предоставляет анализ данных о безосновательном содержимом с конкретными примерами и процентными значениями. | Массив |
-text |
Конкретный текст, который не имеет основания. | Строка |
Проверьте обоснованность с помощью рассуждений.
API обнаружения заземления предоставляет возможность включить обоснование в ответ API. При включенном режиме рассуждения ответ включает "reasoning"
поле, в котором подробно описаны конкретные экземпляры и объяснения для любой обнаруженной недоказанности.
Подключите собственное развертывание GPT
Совет
Мы поддерживаем только ресурсы Azure OpenAI GPT4o (0513, 0806 версии) и не поддерживаем другие типы GPT. Вы можете развернуть ресурсы Azure OpenAI GPT4o (0513, 0806 версии) в любом регионе. Однако, чтобы свести к минимуму потенциальную задержку и избежать каких-либо проблем с конфиденциальностью и рисками географических границ, рекомендуется установить их в том же регионе, что и ресурсы безопасности содержимого. Подробные сведения о конфиденциальности данных см. в рекомендациях по защите данных, конфиденциальности и безопасности Azure OpenAI Service и данные, конфиденциальности и безопасности для безопасности контента ИИ Azure.
Чтобы использовать ресурс Azure OpenAI GPT4o (версия 0513, 0806) для включения функции логического вывода, используйте Управляемое удостоверение, чтобы разрешить ресурсу Безопасности контента доступ к ресурсу Azure OpenAI.
Включите управляемую идентичность для обеспечения безопасности контента ИИ Azure.
Перейдите в портал Azure к экземпляру Azure AI Content Safety. Найдите раздел Идентификация в категории Параметры. Включите управляемое удостоверение, назначаемое системой. Это действие предоставляет вашей службе безопасности контента ИИ Azure идентификацию, которую можно распознать и использовать в Azure для доступа к другим ресурсам.
Назначить роль управляемому удостоверению.
Перейдите в свой экземпляр Azure OpenAI, выберите Добавить назначение роли, чтобы начать процесс назначения роли Azure OpenAI учетной записи безопасности содержимого Azure.
Выберите роль пользователя или участника.
Создание запроса API
В запросе к API определения связи с реальностью установите для параметра тела значение "reasoning"
, и укажите другие необходимые параметры.
{
"domain": "Medical",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": [
"The patient name is Jane."
],
"reasoning": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
"azureOpenAIDeploymentName": "<your_deployment_name>"
}
}
В этом разделе описывается пример запроса с cURL. Вставьте приведенную ниже команду в текстовый редактор и внесите следующие изменения.
Замените
<endpoint>
на URL-адрес конечной точки, связанный с вашим ресурсом безопасности содержимого ИИ Azure.Замените
<your_subscription_key>
одним из ключей своего ресурса.Замените
<your_OpenAI_endpoint>
на URL-адрес конечной точки, связанный с ресурсом Azure OpenAI.Замените
<your_deployment_name>
именем развертывания Azure OpenAI.При необходимости замените поля
"query"
или"text"
в тексте на свой собственный текст, который вы хотите проанализировать.curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview' \ --header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \ --header 'Content-Type: application/json' \ --data-raw '{ "domain": "Generic", "task": "QnA", "qna": { "query": "How much does she currently get paid per hour at the bank?" }, "text": "12/hour", "groundingSources": [ "I'm 21 years old and I need to make a decision about the next two years of my life. Within a week. I currently work for a bank that requires strict sales goals to meet. If they aren't met three times (three months) you're canned. They pay me 10/hour and it's not unheard of to get a raise in 6ish months. The issue is, **I'm not a salesperson**. That's not my personality. I'm amazing at customer service, I have the most positive customer service \"reports\" done about me in the short time I've worked here. A coworker asked \"do you ask for people to fill these out? you have a ton\". That being said, I have a job opportunity at Chase Bank as a part time teller. What makes this decision so hard is that at my current job, I get 40 hours and Chase could only offer me 20 hours/week. Drive time to my current job is also 21 miles **one way** while Chase is literally 1.8 miles from my house, allowing me to go home for lunch. I do have an apartment and an awesome roommate that I know wont be late on his portion of rent, so paying bills with 20hours a week isn't the issue. It's the spending money and being broke all the time.\n\nI previously worked at Wal-Mart and took home just about 400 dollars every other week. So I know i can survive on this income. I just don't know whether I should go for Chase as I could definitely see myself having a career there. I'm a math major likely going to become an actuary, so Chase could provide excellent opportunities for me **eventually**." ], "reasoning": true, "llmResource": { "resourceType": "AzureOpenAI", "azureOpenAIEndpoint": "<your_OpenAI_endpoint>", "azureOpenAIDeploymentName": "<your_deployment_name>" }'
Откройте командную строку и выполните команду cURL.
Параметры в тексте запроса определяются в этой таблице:
Имя | Описание | Тип |
---|---|---|
домен | (Необязательно) MEDICAL или GENERIC . Значение по умолчанию: GENERIC . |
Перечисление |
задача | (Необязательно) Тип задачи: QnA , Summarization . Значение по умолчанию: Summarization . |
Перечисление |
qna | (Необязательно) Хранит данные QnA, когда тип задачи QnA . |
Строка |
- query |
(Необязательно) Это представляет вопрос в задаче QnA. Ограничение символов: 7500. | Строка |
text | (обязательно) Проверяемый текст выходных данных LLM. Ограничение символов: 7500. | Строка |
основные источники | (Обязательно) Использует массив источников обоснования для проверки текста, созданного ИИ. См. Требования к входным данным для ограничения, | Массив строк |
рассуждение | (Необязательно) Если установлено на true , служба использует ресурсы Azure OpenAI для предоставления объяснения. Будьте осторожны: использование логики увеличивает время обработки и влечет за собой дополнительные расходы. |
Логический |
llmResource | (обязательно) Если вы хотите использовать свои собственные ресурсы Azure OpenAI GPT4o (версии 0513, 0806) для включения рассуждений, добавьте это поле и включите подполя для используемых ресурсов. | Строка |
- resourceType |
Указывает тип используемого ресурса. В настоящее время он разрешает только AzureOpenAI . Мы поддерживаем только ресурсы Azure OpenAI GPT4o (0513, 0806 версии) и не поддерживаем другие типы GPT. |
Перечисление |
- azureOpenAIEndpoint |
URL-адрес конечной точки для службы Azure OpenAI. | Строка |
- azureOpenAIDeploymentName |
Имя конкретного развертывания GPT, которое нужно использовать. | Строка |
Интерпретация ответа API
После отправки запроса вы получите ответ JSON, отражающий выполненный анализ заземления. Вот как выглядит типичный результат:
{
"ungroundedDetected": true,
"ungroundedPercentage": 1,
"ungroundedDetails": [
{
"text": "12/hour.",
"offset": {
"utf8": 0,
"utf16": 0,
"codePoint": 0
},
"length": {
"utf8": 8,
"utf16": 8,
"codePoint": 8
},
"reason": "None. The premise mentions a pay of \"10/hour\" but does not mention \"12/hour.\" It's neutral. "
}
]
}
Объекты JSON в выходных данных определяются здесь:
Имя | Описание | Тип |
---|---|---|
Обнаружено отсутствие заземления | Указывает, проявляет ли текст необоснованность. | Логический |
ungroundedPercentage | Указывает пропорцию текста, идентифицированного как необоснованный, выраженной в виде числа от 0 до 1, где 0 указывает, что необоснованное содержимое отсутствует, а 1 — что содержимое полностью необоснованное. Это не уровень достоверности. | Флоат |
необоснованныеДетали | Предоставляет информацию о безосновательном содержании с конкретными примерами и процентными показателями. | Массив |
-text |
Конкретный текст, который является необоснованным. | Строка |
-offset |
Объект, описывающий положение незакрепленного текста в различных кодировках. | Строка |
- offset > utf8 |
Положение смещения несоединенного текста в кодировке UTF-8. | Целое |
- offset > utf16 |
Положение смещения незаземленного текста в кодировке UTF-16. | Целое |
- offset > codePoint |
Смещение позиции незаземленного текста в терминах кодовых точек Юникода. | Целое |
-length |
Объект, описывающий длину незаземленного текста в различных кодировках. (utf8, utf16, codePoint), аналогично смещению. | Объект |
- length > utf8 |
Длина необработанного текста в кодировке UTF-8. | Целое |
- length > utf16 |
Длина незаземлённого текста в кодировке UTF-16. | Целое |
- length > codePoint |
Длина неосновного текста в количестве кодовых точек Юникода. | Целое |
-reason |
Предлагает объяснения обнаруженной необоснованности. | Строка |
Проверка основы с помощью функции корректировки
API обнаружения обоснованности включает функцию исправления, которая автоматически корректирует любую обнаруженную необоснованность в тексте на основе предоставленных источников обоснования. Если функция исправления включена, ответ включает "correction Text"
поле, представляющее исправленный текст, выровненный с источниками заземления.
Подключите собственное развертывание GPT
Совет
В настоящее время функция исправления поддерживает только ресурсы Azure OpenAI GPT4o (0513, 0806 версии). Чтобы свести к минимуму задержку и придерживаться рекомендаций по конфиденциальности данных, рекомендуется развернуть azure OpenAI GPT4o (0513, 0806 версии) в том же регионе, что и ресурсы безопасности содержимого. Для получения более подробной информации о конфиденциальности данных, пожалуйста, обратитесь к рекомендациям по данным, конфиденциальности и безопасности для Azure OpenAI Service и рекомендациям по данным, конфиденциальности и безопасности для Azure AI Content Safety.
Чтобы использовать ресурс Azure OpenAI GPT4o (0513, 0806 версии) для включения функции исправления, используйте управляемое удостоверение, чтобы разрешить ресурсу Безопасности контента доступ к ресурсу Azure OpenAI. Выполните действия, описанные в предыдущем разделе , чтобы настроить управляемое удостоверение.
Создание запроса API
В вашем запросе к API обнаружения заземленности установите для параметра "correction"
тело значение true
и укажите другие необходимые параметры:
{
"domain": "Medical",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": [
"The patient name is Jane."
],
"correction": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
"azureOpenAIDeploymentName": "<your_deployment_name>"
}
}
В этом разделе демонстрируется пример запроса с помощью cURL. Замените заполнители по мере необходимости:
- Замените
<endpoint>
на URL-адрес конечной точки вашего ресурса. - Замените
<your_subscription_key>
ключом своей подписки. - При необходимости замените поле "text" текстом, который требуется проанализировать.
curl --location --request POST '<endpoint>/contentsafety/text:detectGroundedness?api-version=2024-09-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"domain": "Generic",
"task": "Summarization",
"text": "The patient name is Kevin.",
"groundingSources": [
"The patient name is Jane."
],
"correction": true,
"llmResource": {
"resourceType": "AzureOpenAI",
"azureOpenAIEndpoint": "<your_OpenAI_endpoint>",
"azureOpenAIDeploymentName": "<your_deployment_name>"
}
}'
Параметры в тексте запроса определяются в этой таблице:
Имя | Описание | Тип |
---|---|---|
домен | (Необязательно) MEDICAL или GENERIC . Значение по умолчанию: GENERIC . |
Перечисление |
задача | (Необязательно) Тип задачи: QnA , Summarization . Значение по умолчанию: Summarization . |
Перечисление |
qna | (Необязательно) Хранит данные QnA, когда тип задачи QnA . |
Строка |
- query |
(Необязательно) Этот текст представляет вопрос в задаче QnA. Ограничение символов: 7500. | Строка |
text | (обязательно) Текст выходных данных LLM для проверки. Ограничение символов: 7500. | Строка |
groundingSources | (обязательно) Использует множество источников обоснования для проверки текста, созданного ИИ. Сведения о требованиях к входным данным см. в разделе "Требования к входным данным". | Массив строк |
исправление | (Необязательно) Установите значение true , чтобы служба использовала ресурсы Azure OpenAI для предоставления исправленного текста, обеспечивая согласованность с исходными источниками. Будьте осторожны: при использовании исправления время обработки увеличивается и взимается дополнительная плата. |
Логический |
llmResource | (обязательно) Если вы хотите использовать собственный ресурс Azure OpenAI GPT4o (0513, 0806 версии) для включения возможности рассуждения, добавьте это поле и включите подфилды для используемых ресурсов. | Строка |
- resourceType |
Указывает тип используемого ресурса. В настоящее время он разрешает только AzureOpenAI . Мы поддерживаем только ресурсы Azure OpenAI GPT4o (0513, 0806 версии) и не поддерживаем другие типы GPT. |
Перечисление |
- azureOpenAIEndpoint |
URL-адрес конечной точки для службы Azure OpenAI. | Строка |
- azureOpenAIDeploymentName |
Название конкретного развертывания GPT, которое следует использовать. | Строка |
Интерпретация ответа API
Ответ включает поле "correction Text"
, содержащее исправленный текст, обеспечивая согласованность с предоставленными источниками основания.
Функция исправления обнаруживает, что Kevin
незаземлён, так как конфликтует с источником заземления Jane
. API возвращает исправленный текст: "The patient name is Jane."
{
"ungroundedDetected": true,
"ungroundedPercentage": 1,
"ungroundedDetails": [
{
"text": "The patient name is Kevin"
}
],
"correction Text": "The patient name is Jane"
}
Объекты JSON в выходных данных определяются здесь:
Имя | Описание | Тип |
---|---|---|
обнаружено отсутствие заземления | Указывает, обнаружено ли необоснованное содержимое. | Логический |
ungroundedPercentage | Доля необоснованного содержимого в тексте. Это не уровень достоверности. | Флоат |
необоснованныеДетали | Сведения о необоснованном содержимом, включая конкретные текстовые сегменты. | Массив |
-text |
Конкретный текст, который необоснованный. | Строка |
-offset |
Объект, описывающий положение непривязанного текста в различных кодировках. | Строка |
- offset > utf8 |
Положение смещения незаземленного текста в кодировке UTF-8. | Целое |
- offset > utf16 |
Положение смещения незаземленного текста в кодировке UTF-16. | Целое |
-length |
Объект, описывающий длину неправильно оформленного текста в различных кодировках. (utf8, utf16, codePoint), аналогично смещению. | Объект |
- length > utf8 |
Длина незаземленного текста в кодировке UTF-8. | Целое |
- length > utf16 |
Длина непривязанного текста в кодировке UTF-16. | Целое |
- length > codePoint |
Длина незаякоренного текста в терминах кодовых точек Юникода. | Целое число |
-correction Text |
Исправленный текст, гарантирующий согласованность с основными источниками. | Строка |
Очистка ресурсов
Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.
Связанный контент
- Основные понятия обнаружения приземления
- Объедините обнаружение обоснованности с другими функциями безопасности LLM, такими как защитные экраны запросов.