Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описаны основные действия, необходимые для создания, тестирования и развертывания проекта пользовательского ответа на вопросы (CQA) в Microsoft Foundry. Независимо от того, переходите ли вы из Language Studio или начинаете с нуля, это краткое руководство предназначено для вас. Он предоставляет четкие и практические инструкции для быстрого и успешного развертывания проекта CQA.
Примечание
- Если у вас уже есть ресурс Azure Language в средствах Foundry или многофункциональный ресурс (независимо от того, используется ли он самостоятельно или через Language Studio), вы можете продолжать использовать эти существующие языковые ресурсы на портале Foundry. Дополнительные сведения см. в разделе "Использование средств Foundry" на портале Foundry.
- Настоятельно рекомендуется использовать ресурс Foundry в Foundry; однако вы также можете следовать этим инструкциям, используя языковой ресурс.
Необходимые условия
Прежде чем приступить к работе, вам потребуются следующие ресурсы и разрешения:
- Активная подписка Azure. Если у вас его нет, создайте его бесплатно.
- Необходимые разрешения. Убедитесь, что пользователь, устанавливающий учетную запись и проект, назначается в качестве роли владельца учетной записи ИИ Azure на уровне подписки. Кроме того, роль Контрибьютор или Контрибьютор Cognitive Services на уровне подписки также соответствует этому требованию. Дополнительные сведения см. в разделе"Управление доступом на основе ролей" (RBAC).
- Ресурс Foundry или ресурс Language.
- Ресурс Поиск с использованием ИИ Azure (требуется для доступа к CQA). Дополнительные сведения о том, как подключить ресурс Поиск с использованием ИИ Azure, см. в разделе
Настройка подключений в Foundry. - Проект Foundry, созданный в Foundry. Дополнительные сведения см. в разделе"Создание проекта Foundry".
Начало работы
Перейдите в Литейную.
Если вы еще не вошли, на портале появится запрос на использование учетных данных Azure.
После входа вы можете создать или получить доступ к существующим проектам в Foundry.
Если вы еще не выбрали проект для этой задачи, выберите его.
Создайте задачу тонкой настройки CQA
В системе Foundry задача тонкой настройки служит рабочей областью для ваших решений CQA. Ранее задача тонкой настройки называлась проектом CQA. Вы можете столкнуться с обоими терминами, которые используются взаимозаменяемо в более старой документации по CQA.
После выбора проекта Foundry, который будет использоваться для этого краткого руководства, выберите точная настройка в меню навигации слева.
В главном окне выберите вкладку тонкой настройки службы ИИ и затем нажмите кнопку +Fine-tune.
В окне "Создание службы" выберите вкладку "Настраиваемые ответы на вопросы " и нажмите кнопку "Далее".
Выберите ресурс Connected Поиск с использованием ИИ Azure в окне задания на тонкую настройку Create CQA. Для получения дополнительной информации см. разделНастройка подключений ресурсов Azure.
Затем заполните поля "Имя " и "Язык ". Для этого проекта можно оставить поле Ответ по умолчанию, если ответ не возвращается без изменений (Ответ не найден).
Нажмите кнопку "Создать ".
Добавление источника базы знаний CQA
База знаний CQA — это структурированный набор пар вопросов и ответов, оптимизированных для общения ИИ. База знаний использует обработку естественного языка для интерпретации запросов пользователей и возврата контекстных ответов из определенного набора данных.
В меню "Начало работы" выберите пункт "Управление источниками".
В главном окне выберите раскрывающееся меню +Добавить источник .
В раскрывающемся меню можно выбрать пункт "Добавить чат", " Добавить URL-адреса" или "Добавить файлы".
Для этого проекта давайте добавим chitchat.
В окне "Добавление нового источника" выберите "Дружелюбный".
Наконец, нажмите кнопку "Добавить". Создание источника может занять несколько минут.
После создания источник отображается в окне "Управление источниками ".
Тестирование базы знаний
Выберите "Тестировать базу знаний " в меню "Начало работы ".
Введите следующую команду в поле "Введите вопрос" и нажмите кнопку "Выполнить".
Hello! How are you doing today?В интерфейсе проверки можно просмотреть уровень достоверности ответа и выбрать наиболее подходящий ответ.
Развертывание базы знаний
Развертывание базы знаний CQA означает публикацию курированного содержимого вопросов и ответов как действующую и доступную для поиска конечную точку. Этот процесс перемещает проект с этапа тестирования в рабочую среду, позволяя клиентским приложениям использовать его для различных проектов и решений, включая чат-боты.
После завершения проверки выберите раздел "Развернуть базу знаний " в меню "Начало работы ".
Сначала нажмите кнопку "Развернуть" в главном окне " Развертывание базы знаний ", а затем в всплывающем окне "Развернуть этот проект ". Развертывание занимает несколько минут.
После завершения развертывания развернутый проект отображается в окне "Развертывание базы знаний ".
Ну вот! База знаний по пользовательскому ответу на вопросы (CQA) предоставляет интерфейс естественного языка для ваших данных, позволяя пользователям взаимодействовать с информацией в беседе. Развернув это решение, вы можете создавать расширенные чат-боты и интерактивные агенты, которые понимают вопросы пользователей, предоставляют точные ответы и корректируют изменение информационных требований.
Необходимые условия
- Текущая версия cURL. В руководствах по началу работы используются несколько ключей командной строки, которые указаны в документации по cURL.
- подписка Azure — Создайте учетную запись бесплатно
- Для ответа на настраиваемые вопросы требуется ресурс Language с включенной функцией настраиваемого ответа на вопросы для генерации ключа 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> - Существующий проект для запроса. Если вы не настроили проект, следуйте инструкциям в кратком руководстве по Foundry. Или добавьте проект, использующий этот URL-адрес руководства пользователя Surface в качестве источника данных.
Настройка
Создание переменных среды
Приложение должно пройти проверку подлинности для отправки запросов API. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
LANGUAGE_KEYпеременную среды, заменитеyour-keyодним из ключей ресурса. - Чтобы задать переменную среды, замените
LANGUAGE_ENDPOINTконечной точкой для вашего ресурса.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Примечание
Если вам нужно получить доступ только к переменным среды в текущей работающей консоли, можно задать переменную set среды вместо setx.
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые потребуются для чтения переменных среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед выполнением примера.
Запрос проекта
Создание ответа из проекта
Чтобы запросить проект пользовательского ответа на вопросы с помощью REST API и cURL, вам потребуется следующая информация:
| Имя переменной | Значение |
|---|---|
Endpoint |
Это значение можно найти в разделе https://southcentralus.cognitiveservices.azure.com/ |
API-Key |
Это значение можно найти в разделе |
Project |
Имя настраиваемого проекта ответа на вопросы. |
Deployment |
Существует два возможных значения: testи production. |
Команда cURL выполняется из оболочки BASH. Измените эту команду с собственным именем ресурса, ключом ресурса и значениями JSON и размером 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 — Создайте учетную запись бесплатно
- Visual Studio IDE или текущая версия .NET Core.
- Для ответа на настраиваемые вопросы требуется ресурс Language с включенной функцией настраиваемого ответа на вопросы для генерации ключа 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> - Существующий проект для запроса. Если у вас нет проекта, следуйте инструкциям в кратком руководстве Microsoft Foundry. Или добавьте проект, использующий этот URL-адрес руководства пользователя Surface в качестве источника данных.
Настройка
Создание переменных среды
Приложение должно пройти проверку подлинности для отправки запросов API. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным. В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Чтобы задать переменную среды для ключа ресурса языка, откройте окно консоли и следуйте инструкциям в вашей операционной системе и среде разработки.
- Чтобы задать
LANGUAGE_KEYпеременную среды, заменитеyour-keyодним из ключей ресурса. - Чтобы задать переменную среды, замените
LANGUAGE_ENDPOINTконечной точкой для вашего ресурса.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
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. Эта команда создает простой проект C# Hello World с одним исходным файлом: 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 |
Это значение можно найти в разделе https://southcentralus.cognitiveservices.azure.com/ |
credential |
Это значение можно найти в разделе |
projectName |
Имя настраиваемого проекта ответа на вопросы. |
deploymentName |
Существует два возможных значения: testи production. |
Важно
Не забудьте удалить ключ из кода после завершения и никогда не публиковать его публично. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как 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 хранилище ключей предоставляет безопасное хранилище ключей.
После обновления 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:
- Получите ответ из проекта.
- Получите ответ из текста, который вы отправляете вместе с вашим вопросом.
- Получите оценку достоверности для ответа на ваш вопрос.
Package (PyPI) | Образцы | Исходный код библиотеки
Необходимые условия
- подписка Azure — Создайте учетную запись бесплатно
- Python 3.x
- Для ответа на настраиваемые вопросы требуется ресурс Language с включенной функцией настраиваемого ответа на вопросы для генерации ключа 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> - Существующий проект для запроса. Если у вас нет проекта, следуйте инструкциям в кратком руководстве Microsoft Foundry. Или добавьте проект, использующий этот URL-адрес руководства пользователя Surface в качестве источника данных.
Настройка
Установка клиентской библиотеки
После установки Python вы можете установить клиентскую библиотеку следующим образом:
pip install azure-ai-language-questionanswering
Запрос проекта
Создание ответа из проекта
В этом примере можно запросить проект с помощью «get_answers», чтобы получить ответ на ваш вопрос. Этот код можно скопировать в выделенный файл .py или в ячейку в Jupyter Notebook/Lab.
Необходимо обновить код и указать собственные значения для следующих переменных.
| Имя переменной | Значение |
|---|---|
endpoint |
Это значение можно найти в разделе https://southcentralus.cognitiveservices.azure.com/ |
credential |
Это значение можно найти в разделе |
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 хранилище ключей предоставляет безопасное хранилище ключей.
При запуске кода, если вы используете источник данных из предварительных требований, вы получите ответ, который выглядит следующим образом:
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
Запрос текста без проекта
Вы также можете использовать настраиваемую систему ответов на вопросы без создания проекта с get_answers_from_text. В этом случае вы предоставляете настраиваемую вопросно-ответную систему с вопросом и связанными текстовыми записями, которые хотите использовать для поиска ответа в момент отправки запроса.
В этом примере необходимо изменить только переменные для 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/Lab. В этом примере возвращается следующий результат
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, можно удалить отдельный ресурс или всю группу ресурсов. При удалении группы ресурсов все ресурсы, содержащиеся в ней, также удаляются.