Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описаны основные действия, необходимые для создания, тестирования и развертывания проекта пользовательского ответа на вопросы (CQA) в Microsoft Foundry. Независимо от того, переходите ли вы из Language Studio или начинаете с нуля, это краткое руководство предназначено для вас. Он предоставляет четкие и практические инструкции для быстрого и успешного развертывания проекта CQA.
Примечание.
- Если у вас уже есть язык Azure в средствах Foundry или ресурс с несколькими службами ( независимо от того, используется ли он самостоятельно или через Language Studio), вы можете продолжать использовать эти существующие языковые ресурсы на портале Foundry. Дополнительные сведения см. в разделе "Использование средств Foundry" на портале Foundry.
- Настоятельно рекомендуется использовать ресурс Foundry в Foundry; однако эти инструкции также можно выполнить с помощью языкового ресурса.
Необходимые компоненты
Прежде чем приступить к работе, вам потребуются следующие ресурсы и разрешения:
- Активная подписка Azure. Если у вас его нет, создайте его бесплатно.
- Необходимые разрешения. Убедитесь, что пользователь, устанавливающий учетную запись и проект, назначен в качестве роли владельца учетной записи ИИ Azure на уровне подписки. Кроме того, роль Участника или Участника Cognitive Services в области подписки также соответствует этому требованию. Дополнительные сведения см. в разделе"Управление доступом на основе ролей" (RBAC).
- Ресурс Foundry или Ресурс языка.
- Ресурс поиска ИИ Azure (требуется для доступа к CQA). Дополнительные сведения о подключении ресурса поиска ИИ Azure см. в статье"Настройка подключений в Foundry"
- Проект Foundry, созданный в Foundry. Дополнительные сведения см. в разделе"Создание проекта Foundry".
Начало работы
Перейдите к Литейу.
Если вы еще не вошли, на портале появится запрос на использование учетных данных Azure.
После входа вы можете создать или получить доступ к существующим проектам в Foundry.
Если вы еще не находитесь в проекте для этой задачи, выберите его.
Создание задачи тонкой настройки CQA
В Foundry задача тонкой настройки служит рабочей областью для решений CQA. Ранее задача тонкой настройки называлась проектом CQA. Вы можете столкнуться с обоими терминами, которые используются взаимозаменяемо в более старой документации по CQA.
После того как вы выбрали проект Foundry для этого краткого руководства, выберите тонкая настройка в левом меню навигации.
В главном окне выберите вкладку тонкой настройки службы ИИ , а затем нажмите кнопку +Точно настроить.
В окне "Создание службы" выберите вкладку "Настраиваемые ответы на вопросы " и нажмите кнопку "Далее".
Выберите ресурс поиска подключенного искусственного интеллекта Azure в окне задачи "Создать CQA" для точной настройки . Дополнительные сведения см. в разделе"Настройка подключений к ресурсам Azure".
Затем заполните поля "Имя " и "Язык ". Для этого проекта можно оставить ответ по умолчанию, если не возвращается поле "Как есть" (не найдено ответа).
Выберите кнопку Создать.
Добавление источника базы знаний CQA
База знаний CQA — это структурированный набор пар вопросов и ответов, оптимизированных для общения ИИ. База знаний использует обработку естественного языка для интерпретации запросов пользователей и возврата контекстных ответов из определенного набора данных.
В меню "Начало работы" выберите пункт "Управление источниками".
В главном окне выберите раскрывающееся меню +Добавить источник .
В раскрывающемся меню можно выбрать пункт "Добавить чат", " Добавить URL-адреса" или "Добавить файлы".
Для этого проекта давайте добавим chitchat.
В окне "Добавление нового источника " выберите "Понятно".
Наконец, нажмите Добавить. Создание источника может занять несколько минут.
После создания источник отображается в окне "Управление источниками ".
Тестирование базы знаний
Выберите "Тестировать базу знаний " в меню "Начало работы ".
Введите следующую команду в поле "Введите вопрос" и нажмите кнопку "Выполнить".
Hello! How are you doing today?В интерфейсе проверки можно просмотреть уровень достоверности ответа и выбрать наиболее подходящий ответ.
Развертывание базы знаний
Развертывание базы знаний CQA означает публикацию курированного содержимого вопросов и ответов как динамическую конечную точку. Этот процесс перемещает проект с этапа тестирования в рабочую среду, позволяя клиентским приложениям использовать его для различных проектов и решений, включая чат-боты.
После завершения проверки выберите раздел "Развернуть базу знаний " в меню "Начало работы ".
Сначала нажмите кнопку "Развернуть" в главном окне " Развертывание базы знаний ", а затем в всплывающем окне "Развернуть этот проект ". Развертывание занимает несколько минут.
После завершения развертывания развернутый проект отображается в окне "Развертывание базы знаний ".
Вот и все! База знаний по пользовательскому ответу на вопросы (CQA) предоставляет интерфейс естественного языка для ваших данных, позволяя пользователям взаимодействовать с информацией в беседе. Развернув это решение, вы можете создавать расширенные чат-боты и интерактивные агенты, которые понимают вопросы пользователей, предоставляют точные ответы и корректируют изменение информационных требований.
Необходимые компоненты
- Текущая версия cURL. В этом кратком руководстве используются несколько параметров командной строки, которые указаны в документации cURL.
- Подписка Azure — создайте бесплатную учетную запись.
- Для ответа на настраиваемые вопросы требуется ресурс языка с функцией пользовательского ответа на вопросы, включенной для создания ключа API и конечной точки.
- Разверните языковой ресурс и нажмите Перейти к ресурсу. Для подключения к API требуется ключ и конечная точка из ресурса, создаваемого вами. Вставьте ключ и конечную точку в код далее в кратком руководстве.
- Создайте ресурс языка с помощью Azure CLI и укажите следующие свойства:
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Существующий проект для запроса. Если вы не настроили проект, следуйте инструкциям в кратком руководстве по Языковой студии. Или добавьте проект, использующий ЭТОТ URL-адрес руководства пользователя Surface в качестве источника данных.
Установка
Создание переменной среды
Приложение должно пройти проверку подлинности для отправки запросов API. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
LANGUAGE_KEYпеременную среды, заменитеyour-keyодним из ключей ресурса. - Чтобы задать переменную среды, замените
LANGUAGE_ENDPOINTконечнойyour-endpointточкой ресурса.
Внимание
Мы рекомендуем использовать проверку подлинности Идентификатора Microsoft Entra с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных с приложениями, работающими в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей работающей консоли, можно задать переменную set среды вместо setx.
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменных среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
Запрос проекта
Создание ответа из проекта
Чтобы запросить проект пользовательского ответа на вопросы с помощью REST API и cURL, вам потребуется следующая информация:
| Имя переменной | Значение |
|---|---|
Endpoint |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Кроме того, можно найти значение в Language Studio>, отвечая>Get прогнозирования URL-адрес. Пример конечной точки: https://southcentralus.cognitiveservices.azure.com/. |
API-Key |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Можно использовать Key1 или Key2. Предусмотрите наличие двух действительных ключей для безопасной смены ключей с нулевым временем простоя. Кроме того, можно найти значение в Language Studio>, отвечая>Get прогнозирования URL-адрес. Значение ключа является частью примера запроса. |
Project |
Имя настраиваемого проекта ответа на вопросы. |
Deployment |
Возможные значения: test и production.
productionзависит от развертывания вашего проекта из Language Studio>модулем вопрос-ответ>Развернуть проект. |
Команда cURL выполняется из оболочки BASH. Измените эту команду, указав собственные имя ресурса, ключ ресурса, значения и размер JSON-файла.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question": "How much battery life do I have left?"
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-knowledgebases?projectName={YOUR_PROJECT_NAME}&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'
При запуске кода, если вы используете источник данных из предварительных требований, вы получите ответ, который выглядит следующим образом:
{
"answers": [
{
"questions": [
"Check battery level"
],
"answer": "If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.",
"confidenceScore": 0.9185,
"id": 101,
"source": "https://support.microsoft.com/en-us/surface/how-to-use-your-surface-pen-8a403519-cd1f-15b2-c9df-faa5aa924e98",
"metadata": {},
"dialog": {
"isContextOnly": false,
"prompts": []
}
}
]
}
confidenceScore возвращает значение в диапазоне от 0 до 1. Учитывайте оценку достоверности в процентах, умножая ее на 100. Например, оценка уверенности 0,9185 указывает, что настраиваемая система ответа на вопросы уверена на 91,85%, что её ответ правильный, основываясь на сведениях о проекте.
Если вы хотите исключить ответы, для которых оценка достоверности будет ниже определенного порогового значения, можно добавить параметр confidenceScoreThreshold.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question": "How much battery life do I have left?",
"confidenceScoreThreshold": "0.95",
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'
Так как мы знаем из предыдущего выполнения кода, что наша оценка достоверности: .9185 установка порогового значения для .95 получения возвращаемого ответа по умолчанию.
{
"answers": [
{
"questions": [],
"answer": "No good match found in KB",
"confidenceScore": 0.0,
"id": -1,
"metadata": {}
}
]
}
Запрос текста без проекта
Вы также можете использовать настраиваемые ответы на вопросы без проекта с предварительно созданным настраиваемым ответом на вопросы REST API, который вызывается через query-text. В этом случае вы предоставляете службе ответов на вопросы вопрос и связанные текстовые записи для поиска ответа во время отправки запроса.
В этом примере необходимо изменить только переменные для API KEY и ENDPOINT.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question":"How long does it takes to charge a surface?",
"records":[
{"id":"doc1","text":"Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you\u0027re using your Surface for power-intensive activities like gaming or video streaming while you\u0027re charging it"},
{"id":"doc2","text":"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."}],
"language":"en",
"stringIndexType":"Utf16CodeUnit"
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-text?&api-version=2021-10-01'
В этом примере возвращается результат:
{
"answers": [
{
"answer": "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
"confidenceScore": 0.9118788838386536,
"id": "doc1",
"answerSpan": {
"text": "two to four hours",
"confidenceScore": 0.9850527,
"offset": 27,
"length": 18
},
"offset": 0,
"length": 243
},
{
"answer": "It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
"confidenceScore": 0.052793052047491074,
"id": "doc1",
"answerSpan": {
"text": "longer",
"confidenceScore": 0.6694634,
"offset": 11,
"length": 7
},
"offset": 109,
"length": 134
},
{
"answer": "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
"confidenceScore": 0.017600709572434425,
"id": "doc2",
"answerSpan": {
"text": "USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging",
"confidenceScore": 0.1544854,
"offset": 15,
"length": 165
},
"offset": 0,
"length": 280
}
]
}
Используйте это краткое руководство для пользовательской клиентской библиотеки ответов на вопросы для .NET:
- Получение ответа из проекта.
- получить ответ из текста, который вы отправляете вместе с вопросом;
- получить оценку достоверности для ответа на ваш вопрос.
Справочная документация | Пакет (NuGet) | Образцы | Исходный код библиотеки
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- IDE Visual Studio или текущая версия .NET Core.
- Для ответа на настраиваемые вопросы требуется ресурс языка с функцией пользовательского ответа на вопросы, включенной для создания ключа API и конечной точки.
- Разверните языковой ресурс и нажмите Перейти к ресурсу. Для подключения к API требуется ключ и конечная точка из ресурса, создаваемого вами. Вставьте ключ и конечную точку в код далее в кратком руководстве.
- Создайте ресурс языка с помощью Azure CLI и укажите следующие свойства:
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Существующий проект для запроса. Если у вас нет проекта, вы можете выполнить инструкции в кратком руководстве по Языковой студии. Или добавьте проект, использующий ЭТОТ URL-адрес руководства пользователя Surface в качестве источника данных.
Установка
Создание переменной среды
Приложение должно пройти проверку подлинности для отправки запросов API. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным,. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
LANGUAGE_KEYпеременную среды, заменитеyour-keyодним из ключей ресурса. - Чтобы задать переменную среды, замените
LANGUAGE_ENDPOINTконечнойyour-endpointточкой ресурса.
Внимание
Мы рекомендуем использовать проверку подлинности Идентификатора Microsoft Entra с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных с приложениями, работающими в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Примечание.
Если вам нужно получить доступ только к переменным среды в текущей работающей консоли, можно задать переменную set среды вместо setx.
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменных среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.
интерфейс командной строки (CLI)
В окне консоли (cmd, PowerShell или Bash) выполните команду dotnet new, чтобы создать консольное приложение с именем question-answering-quickstart. Эта команда создает простой проект "Hello World" на языке C# с одним файлом исходного кода: program.cs.
dotnet new console -n question-answering-quickstart
Измените каталог на созданную папку приложения. Чтобы создать приложение, выполните следующую команду:
dotnet build
Выходные данные сборки не должны содержать предупреждений или ошибок.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
В каталоге приложения установите клиентскую библиотеку пользовательской службы "Ответы на вопросы" для .NET с помощью следующей команды:
dotnet add package Azure.AI.Language.QuestionAnswering
Запрос проекта
Создание ответа из проекта
В следующем примере вы можете использовать GetAnswers, чтобы сделать запрос к проекту и получить ответ на ваш вопрос.
Необходимо обновить код и указать собственные значения для следующих переменных:
| Имя переменной | Значение |
|---|---|
endpoint |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Кроме того, можно найти значение в Language Studio>, отвечая>Get прогнозирования URL-адрес. Пример конечной точки: https://southcentralus.cognitiveservices.azure.com/. |
credential |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Можно использовать Key1 или Key2. Предусмотрите наличие двух действительных ключей для безопасной смены ключей с нулевым временем простоя. Кроме того, можно найти значение в Language Studio>, отвечая>Get прогнозирования URL-адрес. Значение ключа является частью примера запроса. |
projectName |
Имя настраиваемого проекта ответа на вопросы. |
deploymentName |
Возможные значения: test и production.
production зависит от того, как вы развернули ваш проект через Language Studio>в разделе вопросов и ответов>Развернуть проект. |
Внимание
Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в разделе "Безопасность средств Foundry".
В каталоге проекта откройте файл program.cs и замените содержимое следующим кодом:
using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
namespace question_answering
{
class Program
{
static void Main(string[] args)
{
// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
Uri endpoint = new Uri("LANGUAGE_ENDPOINT");
AzureKeyCredential credential = new AzureKeyCredential("LANGUAGE_KEY");
string projectName = "{YOUR-PROJECT-NAME}";
string deploymentName = "production";
string question = "How long should my Surface battery last?";
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
Response<AnswersResult> response = client.GetAnswers(question, project);
foreach (KnowledgeBaseAnswer answer in response.Value.Answers)
{
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
}
}
}
}
Хотя мы жестко закодируем переменные для нашего примера. Для рабочей среды рекомендуется использовать безопасный способ хранения и доступа к учетным данным. Например, Azure Key Vault предоставляет безопасное хранилище ключей.
После обновления Program.cs и подстановки правильных значений переменных. Запустите приложение с помощью команды dotnet run из каталога приложения.
dotnet run
Ответ выглядит следующим образом:
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Для получения сведений об оценках уверенности добавьте следующую команду вывода под существующими инструкциями вывода.
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line
При повторном выполнении dotnet run вы получите результат с оценкой достоверности:
Q:How much battery life do I have left?
A:If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
(0.9185)
Учитывайте оценку достоверности в процентах, умножая ее на 100. Например, оценка уверенности 0,9185 указывает, что настраиваемая система ответа на вопросы уверена на 91,85%, что её ответ правильный, основываясь на сведениях о проекте.
Если вы хотите исключить ответы, для которых оценка достоверности будет ниже определенного порогового значения, используйте AnswerOptions, чтобы добавить свойство ConfidenceScoreThreshold.
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
AnswersOptions options = new AnswersOptions(); //Add this line
options.ConfidenceThreshold = 0.95; //Add this line
Response<AnswersResult> response = client.GetAnswers(question, project, options); //Add the additional options parameter
Так как мы знаем из предыдущего выполнения кода, что наша оценка достоверности: .9185 установка порогового значения для .95 получения возвращаемого ответа по умолчанию.
Q:How much battery life do I have left?
A:No good match found in KB
(0)
Запрос текста без проекта
Вы также можете использовать настраиваемые ответы на вопросы без проекта GetAnswersFromText. В этом случае вы предоставляете настраиваемые ответы на вопросы как с вопросом, так и связанными текстовыми записями, которые вы хотите найти ответ во время отправки запроса.
В этом примере необходимо изменить только переменные для endpoint и credential.
using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
using System.Collections.Generic;
namespace questionansweringcsharp
{
class Program
{
static void Main(string[] args)
{
Uri endpoint = new Uri("https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/");
AzureKeyCredential credential = new AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY");
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
IEnumerable<TextDocument> records = new[]
{
new TextDocument("doc1", "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
"It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it"),
new TextDocument("doc2", "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
"The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."),
};
AnswersFromTextOptions options = new AnswersFromTextOptions("How long does it takes to charge a surface?", records);
Response<AnswersFromTextResult> response = client.GetAnswersFromText(options);
foreach (TextAnswer answer in response.Value.Answers)
{
if (answer.Confidence > .9)
{
string BestAnswer = response.Value.Answers[0].Answer;
Console.WriteLine($"Q:{options.Question}");
Console.WriteLine($"A:{BestAnswer}");
Console.WriteLine($"Confidence Score: ({response.Value.Answers[0].Confidence:P2})"); //:P2 converts the result to a percentage with 2 decimals of accuracy.
break;
}
else
{
Console.WriteLine($"Q:{options.Question}");
Console.WriteLine("No answers met the requested confidence score.");
break;
}
}
}
}
}
Чтобы запустить код, замените Program.cs на содержимое блока скрипта и измените переменные endpoint и credential, чтобы они соответствовали языковому ресурсу, который вы создали в рамках выполнения предварительных условий.
В этом случае будет выполнена итерация всех ответов с возвратом ответа с наивысшей оценкой достоверности, которая больше 0,9. См. дополнительные сведения о параметрах, доступных в GetAnswersFromText.
Используйте это краткое руководство для пользовательской клиентской библиотеки ответов на вопросы для Python:
- Получение ответа из проекта.
- получить ответ из текста, который вы отправляете вместе с вопросом;
- получить оценку достоверности для ответа на ваш вопрос.
Пакет (PyPI) | Образцы | Исходный код библиотеки
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Python 3.x
- Для ответа на настраиваемые вопросы требуется ресурс языка с функцией пользовательского ответа на вопросы, включенной для создания ключа API и конечной точки.
- Разверните языковой ресурс и нажмите Перейти к ресурсу. Для подключения к API требуется ключ и конечная точка из ресурса, создаваемого вами. Вставьте ключ и конечную точку в код далее в кратком руководстве.
- Создайте ресурс языка с помощью Azure CLI и укажите следующие свойства:
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Существующий проект для запроса. Если у вас нет проекта, вы можете выполнить инструкции в кратком руководстве по Языковой студии. Или добавьте проект, использующий ЭТОТ URL-адрес руководства пользователя Surface в качестве источника данных.
Установка
Установка клиентской библиотеки
После установки Python вы можете установить клиентскую библиотеку с помощью следующей команды:
pip install azure-ai-language-questionanswering
Запрос проекта
Создание ответа из проекта
В этом примере можно запросить проект, используя get_answers, чтобы получить ответ на ваш вопрос. Этот код можно скопировать в выделенный PY-файл или в ячейку в записной книжке Jupyter Notebook либо лаборатории.
Необходимо обновить код и указать собственные значения для следующих переменных.
| Имя переменной | Значение |
|---|---|
endpoint |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Кроме того, можно найти значение в Language Studio>, отвечая>Get прогнозирования URL-адрес. Пример конечной точки: https://southcentralus.cognitiveservices.azure.com/. |
credential |
Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Можно использовать Key1 или Key2. Предусмотрите наличие двух действительных ключей для безопасной смены ключей с нулевым временем простоя. Кроме того, можно найти значение в Language Studio>, отвечая>Get прогнозирования URL-адрес. Значение ключа является частью примера запроса. |
knowledge_base_project |
Имя проекта ответов на вопросы. |
deployment |
Возможные значения: test и production.
production. |
Внимание
Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье о безопасности средств Foundry.
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("{YOUR-LANGUAGE-RESOURCE-KEY}")
knowledge_base_project = "{YOUR-PROJECT-NAME}"
deployment = "production"
def main():
client = QuestionAnsweringClient(endpoint, credential)
with client:
question="How much battery life do I have left?"
output = client.get_answers(
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
if __name__ == '__main__':
main()
Хотя мы жестко закодируем переменные для нашего примера. Для рабочей среды рекомендуется использовать безопасный способ хранения и доступа к учетным данным. Например, Azure Key Vault предоставляет безопасное хранилище ключей.
При запуске кода, если вы используете источник данных из предварительных требований, вы получите ответ, который выглядит следующим образом:
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Для получения сведений о уверенных оценках добавьте следующие инструкции печати:
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line
Вы получаете результат с оценкой достоверности:
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Confidence Score: 0.9185
Учитывайте оценку достоверности в процентах, умножая ее на 100. Например, оценка уверенности 0,9185 указывает, что настраиваемая система ответа на вопросы уверена на 91,85%, что её ответ правильный, основываясь на сведениях о проекте.
Если вы хотите исключить ответы, где оценка достоверности падает ниже определенного порогового значения, можно изменить AnswerOptions, чтобы добавить confidence_threshold этот параметр.
output = client.get_answers(
confidence_threshold = 0.95, #add this line
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
Так как мы знаем из предыдущего выполнения кода, что наша оценка достоверности: .9185 установка порогового значения для .95 получения возвращаемого ответа по умолчанию.
Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0
Запрос текста без проекта
Вы также можете использовать систему настраиваемых ответов на вопросы без проекта, с получением ответов из текста. В этом случае вы предоставляете настраиваемые ответы на вопросы как с вопросом, так и связанными текстовыми записями, которые вы хотите найти ответ во время отправки запроса.
В этом примере необходимо изменить только переменные для endpoint и credential.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.ai.language.questionanswering import models as qna
endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY")
def main():
client = QuestionAnsweringClient(endpoint, credential)
with client:
question="How long does it takes to charge a surface?"
input = qna.AnswersFromTextOptions(
question=question,
text_documents=[
"Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
"It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.",
"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
"The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
]
)
output = client.get_answers_from_text(input)
best_answer = [a for a in output.answers if a.confidence > 0.9][0]
print(u"Q: {}".format(input.question))
print(u"A: {}".format(best_answer.answer))
print("Confidence Score: {}".format(output.answers[0].confidence))
if __name__ == '__main__':
main()
Этот код можно скопировать в выделенный PY-файл или в новую ячейку в записной книжке Jupyter Notebook либо лаборатории. В этом примере возвращается результат:
Q: How long does it takes to charge surface?
A: Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.
Confidence Score: 0.9254655838012695
В этом случае будет выполнена итерация всех ответов с возвратом ответа с наивысшей оценкой достоверности, которая больше 0,9. Чтобы получить больше информации о параметрах, доступных в get_answers_from_text, изучите параметры AnswersFromTextOptions.
Очистка ресурсов
Чтобы очистить и удалить ресурс ИИ Azure, можно удалить отдельный ресурс или всю группу ресурсов. При удалении группы ресурсов все ресурсы, содержащиеся в ней, также удаляются.