Краткое руководство. Рабочий процесс оркестрации
Эта статья поможет вам приступить к работе с проектами для рабочего процесса оркестрации с помощью Language Studio и REST API. Чтобы испытать пример, выполните следующие действия.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Проект распознавания устной речи.
Вход в Language Studio
Перейдите в Language Studio и войдите в учетную запись Azure.
В появившемся окне Выбор языкового ресурса найдите свою подписку Azure и выберите свой языковой ресурс. Если у вас нет ресурса, можно его создать.
Сведения об экземпляре Обязательное значение Подписка Azure. Вашу подписку Azure. Группа ресурсов Azure Ваша группа ресурсов Azure. Имя ресурса Azure Имя ресурса Azure. Расположение Допустимое расположение для ресурса Azure. Например, "Западная часть США 2". Ценовая категория Поддерживаемая ценовая категория для ресурса Azure. Вы можете использовать уровень "Бесплатный" (F0), чтобы поработать со службой.
Создание проекта для рабочего процесса оркестрации
Создав ресурс языковых служб, связанный с вашей учетной записью, создайте проект для рабочего процесса оркестрации. Проект — это рабочая область для создания настраиваемых моделей машинного обучения на основе данных. Получить доступ к вашему проекту можете только вы и другие пользователи, у которых есть доступ к используемому ресурсу службы "Язык".
Для этого краткого руководства выполните действия, описанные в кратком руководстве по распознаванию устной речи, чтобы создать проект распознавания устной речи, который будет использоваться позже.
В Language Studio найдите раздел Распознавать вопросы и устную речь и выберите Рабочий процесс оркестрации.
Вы перейдете на страницу проекта для рабочего процесса оркестрации. Выберите команду Создать проект. Чтобы создать проект, необходимо предоставить указанные ниже сведения.
значение | Описание |
---|---|
Имя. | Имя проекта. |
Description | Необязательное описание проекта. |
Основной язык речевого фрагмента | Основной язык проекта. Данные обучения должны быть преимущественно на этом языке. |
Когда все будет готово, нажмите Далее и проверьте подробные сведения. Чтобы завершить процесс, выберите Создать проект. Теперь в проекте должен появиться экран Сборка схемы.
Создание схемы
Следующим шагом после завершения работы с кратким руководством по распознаванию устной речи и создания проекта оркестрации является добавление намерений.
Чтобы подключиться к ранее созданному проекту распознавания речи, выполните следующие действия:
- На странице схемы сборки в проекте оркестрации нажмите кнопку "Добавить", чтобы добавить намерение.
- В появившемся окне присвойте намерению имя.
- Выберите Yes, I want to connect it to an existing project (Да, я хочу подключить его к существующему проекту).
- В раскрывающемся списке подключенных служб выберите Распознавание устной речи.
- В раскрывающемся списке с именами проектов выберите свой проект распознавания устной речи.
- Нажмите кнопку "Добавить намерение", чтобы создать намерение.
Обучение модели
Чтобы обучить модель, необходимо запустить задание обучения. Выходные данные успешного задания обучения — это обученная модель.
Чтобы начать обучение модели в студии службы "Язык", сделайте следующее:
Выберите элемент Задания обучения в меню слева.
В верхнем меню выберите Запустить задание на обучение.
Щелкните Train a new model (Обучить новую модель) и введите имя модели в текстовое поле. Можно также перезаписать существующую модель. Для этого выберите соответствующий параметр и укажите модель, которую требуется перезаписать, в раскрывающемся меню. Перезапись обученной модели необратима, но это не повлияет на развернутые модели до тех пор, пока вы не развернете новую модель.
Если вы включили проект для ручного разделения данных при разметке речевых фрагментов, то увидите два варианта разделения данных:
- Автоматическое выделение тестового набора из обучающих данных: речевые фрагменты с метками будут случайным образом разделены между обучающим и тестовым наборами в указанной вами пропорции. Разделение по умолчанию — 80 % для обучения и 20 % для тестирования. Чтобы изменить эти значения, выберите набор, который хотите изменить, и введите новое значение.
Примечание.
Если вы выберете вариант Автоматическое выделение тестового набора из обучающих данных, выбранные процентные доли будут применяться только для разделения речевых фрагментов в обучающем наборе.
- Разделение обучающих и тестовых данных вручную: назначьте каждый речевой фрагмент обучающему или тестовому набору на этапе расстановки тегов проекта.
Примечание.
Вариант Разделение обучающих и тестовых данных вручную будет использоваться, только если вы добавите речевые фрагменты в тестовый набор на странице добавления тегов к данным. В противном случае он будет отключен.
Нажмите кнопку Обучить.
Примечание.
- Модели будут создаваться только с помощью успешно завершенных заданий обучения.
- Обучение может занять от нескольких минут до нескольких часов в зависимости от размера данных с тегами.
- В каждый момент времени может выполняться только одно задание на обучение. Нельзя запустить другое задание обучения в том же проекте до тех пор, пока не будет завершено выполнение задания.
Развертывание модели
Обычно после обучения модели изучаются сведения о ее оценке. В этом кратком руководстве вы просто развернете модель и предоставите себе к ней доступ в студии службы "Язык". Можно также вызвать API прогнозирования.
Чтобы развернуть модель в студии службы "Язык", выполните следующие действия.
В меню слева выберите Развертывание модели.
Выберите " Добавить развертывание", чтобы запустить новое задание развертывания.
Выберите Создать развертывание, чтобы создать развертывание и назначить обученную модель из раскрывающегося списка ниже. Можно также выбрать вариант Overwrite an existing deployment (Перезаписать существующее развертывание) и выбрать обученную модель, которую требуется назначить развертыванию, в раскрывающемся списке ниже.
Примечание.
Для перезаписи существующего развертывания не требуется вносить изменения в вызов API прогнозирования, но после этого вы будете получать результаты от новой назначенной модели.
При подключении одного или нескольких приложений LUIS или проектов распознавания устной речи необходимо указать имя развертывания.
Для пользовательских ответов на вопросы и несвязанных намерений настройки не требуются.
Проекты LUIS должны быть опубликованы в слоте, настроенном во время развертывания оркестрации, а базы знаний пользовательских ответов на вопросы также должны быть опубликованы в рабочих слотах.
Выберите "Развернуть", чтобы отправить задание развертывания
После успешного развертывания рядом с ним появится дата окончания срока действия. Окончание срока действия развертывания означает, что модель становится недоступной для использования в целях прогнозирования, что обычно происходит через двенадцать месяцев после окончания срока действия конфигурации обучения.
Тестовая модель
Развернутую модель можно начать использовать для прогнозирования с помощью API прогнозирования. Вы можете использовать Language Studio для отправки речевого фрагмента, получения прогнозов и визуализации результатов.
Тестирование модели в Language Studio
В меню слева выберите Testing deployments (Тестирование развертываний).
Выберите модель для тестирования. Можно тестировать только модели, назначенные развертываниям.
Выберите имя развернутой службы в соответствующем раскрывающемся списке.
В текстовом поле введите речевой фрагмент для проверки.
В верхнем меню выберите "Запустить тест".
После выполнения теста вы увидите ответ модели в результате. Результаты можно просмотреть в представлении карточек сущностей или в формате JSON.
Очистка ресурсов
Если проект вам больше не нужен, вы можете удалить его с помощью Студии Языка. Выберите "Проекты " в меню навигации слева, выберите проект, который нужно удалить, а затем выберите "Удалить " в верхнем меню.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
Создание языкового ресурса на портале Azure
Создание ресурса на портале Azure
Перейдите к портал Azure, чтобы создать новый ресурс языка искусственного интеллекта Azure.
Нажмите кнопку "Продолжить", чтобы создать ресурс
Создайте ресурс службы "Язык" с приведенными ниже сведениями.
Сведения об экземпляре Обязательное значение Область/регион Один из поддерживаемых регионов. Имя. Имя языкового ресурса. Ценовая категория Одна из поддерживаемых ценовых категорий.
Получение ключей и конечной точки ресурса
Перейдите на страницу обзора ресурса на портале Azure.
В меню слева выберите Ключи и конечная точка. Конечная точка и ключ вам понадобятся для запросов API.
Создание проекта для рабочего процесса оркестрации
Создав ресурс языковых служб, связанный с вашей учетной записью, создайте проект для рабочего процесса оркестрации. Проект — это рабочая область для создания настраиваемых моделей машинного обучения на основе данных. Получить доступ к вашему проекту можете только вы и другие пользователи, у которых есть доступ к используемому ресурсу службы "Язык".
В работы с этим кратким руководством пройдите краткое руководство по CLU, чтобы создать проект CLU, который будет использоваться в рабочем процессе оркестрации.
Отправьте запрос PATCH, используя следующий URL-адрес, заголовки и текст JSON, чтобы создать проект.
Запросить URL-адрес
При создании запроса API используйте следующий URL-адрес. Замените значения заполнителей ниже собственными значениями.
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст
Используйте следующий пример JSON в качестве текста.
{
"projectName": "{PROJECT-NAME}",
"language": "{LANGUAGE-CODE}",
"projectKind": "Orchestration",
"description": "Project description"
}
Ключ | Заполнитель | Значение | Пример |
---|---|---|---|
projectName |
{PROJECT-NAME} |
Имя проекта. Это значение учитывает регистр. | EmailApp |
language |
{LANGUAGE-CODE} |
Строка, указывающая код языка для речевых фрагментов, используемых в проекте. Если проект является многоязычным, выберите код языка большинства речевых фрагментов. | en-us |
Создание схемы
Следующим шагом после завершения работы с кратким руководством по CLU и создания проекта оркестрации является добавление намерений.
Отправьте запрос POST, используя указанный ниже URL-адрес, заголовки и текст JSON, чтобы импортировать проект.
Запросить URL-адрес
При создании запроса API используйте следующий URL-адрес. Замените значения заполнителей ниже собственными значениями.
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:import?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст
Примечание.
Каждое намерение должно быть только одного типа (CLU, LUIS и qna)
Используйте следующий пример JSON в качестве текста.
{
"projectFileVersion": "{API-VERSION}",
"stringIndexType": "Utf16CodeUnit",
"metadata": {
"projectKind": "Orchestration",
"settings": {
"confidenceThreshold": 0
},
"projectName": "{PROJECT-NAME}",
"description": "Project description",
"language": "{LANGUAGE-CODE}"
},
"assets": {
"projectKind": "Orchestration",
"intents": [
{
"category": "string",
"orchestration": {
"kind": "luis",
"luisOrchestration": {
"appId": "00000000-0000-0000-0000-000000000000",
"appVersion": "string",
"slotName": "string"
},
"cluOrchestration": {
"projectName": "string",
"deploymentName": "string"
},
"qnaOrchestration": {
"projectName": "string"
}
}
}
],
"utterances": [
{
"text": "Trying orchestration",
"language": "{LANGUAGE-CODE}",
"intent": "string"
}
]
}
}
Ключ | Заполнитель | Значение | Пример |
---|---|---|---|
api-version |
{API-VERSION} |
Версия вызываемого API. Используемая здесь версия должна совпадать с версией API в URL-адресе. | 2022-03-01-preview |
projectName |
{PROJECT-NAME} |
Имя проекта. Это значение учитывает регистр. | EmailApp |
language |
{LANGUAGE-CODE} |
Строка, указывающая код языка для речевых фрагментов, используемых в проекте. Если проект является многоязычным, выберите код языка большинства речевых фрагментов. | en-us |
Обучение модели
Чтобы обучить модель, необходимо запустить задание обучения. Выходные данные успешного задания обучения — это обученная модель.
Создайте запрос POST, используя указанный ниже URL-адрес, заголовки и текст JSON, чтобы запустить задание обучения.
Запросить URL-адрес
При создании запроса API используйте следующий URL-адрес. Замените значения заполнителей ниже собственными значениями.
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/:train?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст запроса
Используйте в запросе следующий объект. Когда обучение завершится, модели будет присвоено имя MyModel
.
{
"modelLabel": "{MODEL-NAME}",
"trainingMode": "standard",
"trainingConfigVersion": "{CONFIG-VERSION}",
"evaluationOptions": {
"kind": "percentage",
"testingSplitPercentage": 20,
"trainingSplitPercentage": 80
}
}
Ключ | Заполнитель | Значение | Пример |
---|---|---|---|
modelLabel |
{MODEL-NAME} |
Имя модели. | Model1 |
trainingMode |
standard |
Режим обучения. В оркестрации доступен только один режим обучения.standard |
standard |
trainingConfigVersion |
{CONFIG-VERSION} |
Версия модели конфигурации обучения. По умолчанию используется последняя версия модели. | 2022-05-01 |
kind |
percentage |
Методы разделения. Возможные значения: percentage или manual . Дополнительные сведения см. в статье об обучении модели. |
percentage |
trainingSplitPercentage |
80 |
Процент помеченных тегами данных, которые будут включены в набор для обучения. Рекомендуемое значение — 80 . |
80 |
testingSplitPercentage |
20 |
Процент помеченных тегами данных, которые будут включены в набор для тестирования. Рекомендуемое значение — 20 . |
20 |
Примечание.
trainingSplitPercentage
и testingSplitPercentage
требуются только в том случае, если для Kind
задано значение percentage
, а сумма процентных значений должна быть равна 100.
После отправки запроса API вы получите ответ 202
, указывающий на успешное выполнение. Извлеките значение operation-location
из заголовков ответа. Оно будет иметь следующий формат:
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Этот URL-адрес позволяет получить текущее состояние задания обучения.
Get Training Status
Обучение может занять от 10 до 30 минут. Следующий запрос можно использовать для регулярного опроса состояния задания обучения, пока оно не будет успешно завершено.
Используйте следующий запрос GET, чтобы получить состояние хода обучения модели. Замените значения заполнителей ниже собственными значениями.
Запросить URL-адрес
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/train/jobs/{JOB-ID}?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст ответа
После отправки запроса вы получите следующий ответ. Продолжайте опрос этой конечной точки до тех пор, пока значение параметра Состояние не изменится на "Выполнено".
{
"result": {
"modelLabel": "{MODEL-LABEL}",
"trainingConfigVersion": "{TRAINING-CONFIG-VERSION}",
"estimatedEndDateTime": "2022-04-18T15:47:58.8190649Z",
"trainingStatus": {
"percentComplete": 3,
"startDateTime": "2022-04-18T15:45:06.8190649Z",
"status": "running"
},
"evaluationStatus": {
"percentComplete": 0,
"status": "notStarted"
}
},
"jobId": "xxxxxx-xxxxx-xxxxxx-xxxxxx",
"createdDateTime": "2022-04-18T15:44:44Z",
"lastUpdatedDateTime": "2022-04-18T15:45:48Z",
"expirationDateTime": "2022-04-25T15:44:44Z",
"status": "running"
}
Ключ | Значение | Пример |
---|---|---|
modelLabel |
имя модели; | Model1 |
trainingConfigVersion |
Версия конфигурации обучения. По умолчанию используется последняя версия. | 2022-05-01 |
startDateTime |
Время начала обучения | 2022-04-14T10:23:04.2598544Z |
status |
Состояние задания обучения. | running |
estimatedEndDateTime |
Предполагаемое время завершения задания обучения. | 2022-04-14T10:29:38.2598544Z |
jobId |
Идентификатор задания обучения. | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx |
createdDateTime |
Дата и время создания задания обучения. | 2022-04-14T10:22:42Z |
lastUpdatedDateTime |
Дата и время последнего обновления задания обучения | 2022-04-14T10:23:45Z |
expirationDateTime |
Дата и время создания задания обучения | 2022-04-14T10:22:42Z |
Развертывание модели
Обычно после обучения модели изучаются сведения о ее оценке. В этом кратком руководстве вы просто развернете модель и вызовете API прогнозирования для запроса результатов.
Отправка задания развертывания
Создайте запрос PUT, используя указанный ниже URL-адрес, заголовки и текст JSON, чтобы приступить к развертыванию модели оркестрации рабочих процессов.
Запросить URL-адрес
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст запроса
{
"trainedModelLabel": "{MODEL-NAME}",
}
Ключ | Заполнитель | Значение | Пример |
---|---|---|---|
trainedModelLabel | {MODEL-NAME} |
Имя модели, которое будет назначено развертыванию. Имена можно назначить только успешно обученным моделям. Это значение учитывает регистр. | myModel |
После отправки запроса API вы получите ответ 202
, указывающий на успешное выполнение. Извлеките значение operation-location
из заголовков ответа. Оно будет иметь следующий формат:
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Этот URL-адрес можно использовать для получения состояния задания развертывания.
Получение состояния задания развертывания
Используйте указанный ниже запрос GET для запроса состояния задания развертывания. Замените значения заполнителей ниже собственными значениями.
Запросить URL-адрес
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}/deployments/{DEPLOYMENT-NAME}/jobs/{JOB-ID}?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст ответа
После отправки запроса вы получите следующий ответ. Продолжайте опрос этой конечной точки до тех пор, пока значение параметра Состояние не изменится на "Выполнено".
{
"jobId":"{JOB-ID}",
"createdDateTime":"{CREATED-TIME}",
"lastUpdatedDateTime":"{UPDATED-TIME}",
"expirationDateTime":"{EXPIRATION-TIME}",
"status":"running"
}
Модель запроса
Развернутую модель можно начать использовать для прогнозирования с помощью API прогнозирования.
По завершении развертывания можно запрашивать у проекта прогнозирование.
Создайте запрос POST, используя следующий URL-адрес, заголовки и текст JSON, чтобы приступить к тестированию модели рабочего процесса оркестрации.
Запросить URL-адрес
{ENDPOINT}/language/:analyze-conversations?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
Текст запроса
{
"kind": "Conversation",
"analysisInput": {
"conversationItem": {
"text": "Text1",
"participantId": "1",
"id": "1"
}
},
"parameters": {
"projectName": "{PROJECT-NAME}",
"deploymentName": "{DEPLOYMENT-NAME}",
"directTarget": "qnaProject",
"targetProjectParameters": {
"qnaProject": {
"targetProjectKind": "QuestionAnswering",
"callingOptions": {
"context": {
"previousUserQuery": "Meet Surface Pro 4",
"previousQnaId": 4
},
"top": 1,
"question": "App Service overview"
}
}
}
}
}
Текст ответа
После отправки запроса вы получите следующий ответ для прогнозирования.
{
"kind": "ConversationResult",
"result": {
"query": "App Service overview",
"prediction": {
"projectKind": "Orchestration",
"topIntent": "qnaTargetApp",
"intents": {
"qnaTargetApp": {
"targetProjectKind": "QuestionAnswering",
"confidenceScore": 1,
"result": {
"answers": [
{
"questions": [
"App Service overview"
],
"answer": "The compute resources you use are determined by the *App Service plan* that you run your apps on.",
"confidenceScore": 0.7384000000000001,
"id": 1,
"source": "https://learn.microsoft.com/azure/app-service/overview",
"metadata": {},
"dialog": {
"isContextOnly": false,
"prompts": []
}
}
]
}
}
}
}
}
}
Очистка ресурсов
Если проект вам больше не нужен, вы можете удалить его с помощью интерфейсов API.
Создайте запрос DELETE, используя следующий URL-адрес, заголовки и текст JSON, чтобы удалить проект по распознаванию устной речи.
Запросить URL-адрес
{ENDPOINT}/language/authoring/analyze-conversations/projects/{PROJECT-NAME}?api-version={API-VERSION}
Заголовки
Используйте следующий заголовок для проверки подлинности запроса.
Ключ | Значение |
---|---|
Ocp-Apim-Subscription-Key |
Ключ к ресурсу. Используется для проверки подлинности запросов API. |
После отправки запроса API вы получите ответ 202
, означающий успешное выполнение (развертывание удалено).