Краткое руководство. Использование обнаружения заземления (предварительная версия)
В этом руководстве показано, как использовать API обнаружения заземления. Эта функция автоматически обнаруживает и исправляет незапланированный текст на основе предоставленных исходных документов, обеспечивая выравнивание созданного содержимого с фактическими или предполагаемыми ссылками. Ниже мы рассмотрим несколько распространенных сценариев, которые помогут вам понять, как и когда применять эти функции для достижения наилучших результатов.
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- После получения подписки Azure создайте ресурс безопасности содержимого в портал Azure, чтобы получить ключ и конечную точку. Введите уникальное имя ресурса, выберите подписку и выберите группу ресурсов, поддерживаемый регион и поддерживаемую ценовую категорию. Затем выберите Создать.
- Развертывание ресурса занимает несколько минут. Когда оно завершится, перейдите к новому ресурсу. В области слева в разделе "Управление ресурсами" выберите ключи API и конечные точки. Скопируйте одно из значений ключа подписки и конечной точки в временное расположение для последующего использования.
- (Необязательно) Если вы хотите использовать функцию аргументирования , создайте ресурс службы Azure OpenAI с развернутой моделью GPT.
- cURL или Python установлен.
Проверка заземления без рассуждений
В простом случае без функции рассудка 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 |
(Необязательно) Это представляет вопрос в задаче QnA. Ограничение символов: 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 — полностью незапланированное содержимое. | Тип с плавающей запятой |
ungroundedDetails | Предоставляет аналитические сведения о незапланированного содержимом с конкретными примерами и процентными значениями. | Массив |
-text |
Конкретный текст, который находится на переднем плане. | Строка |
Проверка заземления с помощью причин
API обнаружения заземления предоставляет возможность включить причину в ответ API. При включенной настройке ответ включает в себя "reasoning"
поле, в которое подробно описаны конкретные экземпляры и объяснения для любой обнаруженной нераспределенности.
Подключение собственного развертывания GPT
Совет
Мы поддерживаем только ресурсы **Azure OpenAI GPT4o (0513, 0806 версии) ** и не поддерживаем другие типы GPT. Вы можете развернуть ресурсы Azure OpenAI GPT4o (0513, 0806 версии) в любом регионе. Однако, чтобы свести к минимуму потенциальную задержку и избежать каких-либо проблем с конфиденциальностью и рисками географических границ, рекомендуется установить их в том же регионе, что и ресурсы безопасности содержимого. Подробные сведения о конфиденциальности данных см . в рекомендациях по защите данных, конфиденциальности и безопасности azure OpenAI Service и Data, конфиденциальности и безопасности для безопасности содержимого ИИ Azure.
Чтобы использовать ресурс Azure OpenAI GPT4o (0513, 0806 версии), чтобы включить функцию рассудка, используйте управляемое удостоверение, чтобы разрешить ресурсу Безопасности контента доступ к ресурсу Azure OpenAI:
Включите управляемое удостоверение для безопасности содержимого ИИ Azure.
Перейдите к экземпляру Безопасности содержимого ИИ Azure в портал Azure. Найдите раздел "Удостоверение" в категории "Параметры". Включите управляемое удостоверение, назначаемое системой. Это действие предоставляет экземпляр безопасности содержимого ИИ Azure удостоверение, которое можно распознать и использовать в Azure для доступа к другим ресурсам.
Назначение роли управляемому удостоверению.
Перейдите к экземпляру Azure OpenAI, выберите "Добавить назначение ролей", чтобы начать процесс назначения роли Azure OpenAI идентификатору безопасности содержимого Azure.
Выберите роль пользователя или участника.
Создание запроса API
В запросе к API обнаружения заземления задайте "reasoning"
для параметра true
body значение и укажите другие необходимые параметры:
{
"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. | Строка |
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
После отправки запроса вы получите ответ 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 в выходных данных определяются здесь:
Имя | Описание | Тип |
---|---|---|
ungroundedDetected | Указывает, отображается ли текст незамеченностью. | Логический |
ungroundedPercentage | Указывает пропорцию текста, определяемого как неплановый, выраженный как число от 0 до 1, где 0 указывает, что не отображается незапланированное содержимое, а 1 — полностью незапланированное содержимое. | Тип с плавающей запятой |
ungroundedDetails | Предоставляет аналитические сведения о незапланированного содержимом с конкретными примерами и процентными значениями. | Массив |
-text |
Конкретный текст, который находится на переднем плане. | Строка |
-offset |
Объект, описывающий положение незапланированного текста в различных кодировках. | Строка |
- offset > utf8 |
Положение смещения нераспределенного текста в кодировке UTF-8. | Целое |
- offset > utf16 |
Положение смещения нераспределенного текста в кодировке UTF-16. | Целое |
- offset > codePoint |
Позиция смещения нераспределенного текста с точки зрения точек кода Юникода. | Целое |
-length |
Объект, описывающий длину незапланированного текста в различных кодировках. (utf8, utf16, codePoint), аналогично смещение. | Object |
- 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 и Data, конфиденциальности и безопасности для безопасности содержимого ИИ Azure.
Чтобы использовать ресурс Azure OpenAI GPT4o (0513, 0806 версии) для включения функции исправления, используйте управляемое удостоверение, чтобы разрешить ресурсу Безопасности контента доступ к ресурсу Azure OpenAI. Выполните действия, описанные в предыдущем разделе , чтобы настроить управляемое удостоверение.
Создание запроса API
В запросе к API обнаружения заземления задайте "correction"
для параметра true
body значение и укажите другие необходимые параметры:
{
"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 в выходных данных определяются здесь:
Имя | Описание | Тип |
---|---|---|
ungroundedDetected | Указывает, обнаружен ли незапланированное содержимое. | Логический |
ungroundedPercentage | Доля незапланированного содержимого в тексте. | Тип с плавающей запятой |
ungroundedDetails | Сведения о незапланированного содержимом, включая определенные сегменты текста. | Массив |
-text |
Конкретный текст, который находится на переднем плане. | Строка |
-offset |
Объект, описывающий положение незапланированного текста в различных кодировках. | Строка |
- offset > utf8 |
Положение смещения нераспределенного текста в кодировке UTF-8. | Целое |
- offset > utf16 |
Положение смещения нераспределенного текста в кодировке UTF-16. | Целое |
-length |
Объект, описывающий длину незапланированного текста в различных кодировках. (utf8, utf16, codePoint), аналогично смещение. | Object |
- length > utf8 |
Длина незапланированного текста в кодировке UTF-8. | Целое |
- length > utf16 |
Длина незапланированного текста в кодировке UTF-16. | Целое |
- length > codePoint |
Длина незапланированного текста с точки зрения кодовых точек Юникода. | Целое |
-correction Text |
Исправленный текст, обеспечивающий согласованность с источниками заземления. | Строка |
Очистка ресурсов
Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.
Связанный контент
- Основные понятия обнаружения приземления
- Объедините обнаружение заземления с другими функциями безопасности LLM, такими как экраны запросов.