Рекомендации по использованию DevOps с LUIS

Важно!

Поддержка LUIS будет прекращена 1 октября 2025 г., а начиная с 1 апреля 2023 г. вы не сможете создавать новые ресурсы LUIS. Мы рекомендуем перенести приложения LUIS в распознавание устной речи , чтобы воспользоваться преимуществами постоянной поддержки продуктов и многоязычных возможностей.

Следуя этим рекомендациям, инженеры-программисты, разрабатывающие приложение Language Understanding (LUIS), могут применять методы DevOps в отношении системы управления версиями, автоматизированных сборок, тестирования и правления выпусками.

Управление исходным кодом и стратегии создания ветвей для LUIS

Одним из ключевых факторов успешного процесса DevOps является система управления версиями. Система управления версиями позволяет разработчикам совместно работать над кодом и отслеживать изменения. Благодаря ветвям разработчики могут переключаться между версиями базового кода и работать независимо от других членов группы. Когда разработчик создает запрос на вытягивание (PR), чтобы предложить применить изменения из одной ветви в другой, а также при слиянии изменений, может запускаться автоматическая сборка с целью создания и непрерывного тестирования кода.

Благодаря основным понятиям и рекомендациям, изложенным в этом документе, вы сможете разрабатывать приложения LUIS, отслеживая изменения в системе управления версиями и следуя проверенным рекомендациям по проектированию ПО.

  • Система управления версиями

    • Исходный код для приложения LUIS имеет пригодный для человека формат.
    • Модель может создаваться на основе исходного кода циклическим образом.
    • Для управления исходным кодом можно использовать репозиторий.
    • В исходном коде никогда не хранятся учетные данные и секреты, например ключи.
  • Создание ветви и объединение

    • Разработчики могут работать с независимыми ветвями.
    • Разработчики могут параллельно работать в нескольких ветвях.
    • В приложении LUIS можно интегрировать изменения из одной ветви в другую с помощью перемещения или слияния.
    • Разработчики могут выполнить слияние по запросу на включение для родительской ветви.
  • Управление версиями

    • Каждый компонент крупного приложения должен иметь собственную управляемую систему версий, чтобы разработчики могли обнаруживать критические изменения и обновления по их номерам.
  • Проверки кода

    • Изменения в запросе на вытягивание представляются в виде понятного для человека исходного кода, который можно просмотреть перед принятием запроса.

Система управления версиями

Для поддержки определения схемы приложения LUIS в системе управления версиями используйте представление приложения в формате LUDown (.lu). Формат .lu является предпочтительным по сравнению с форматом .json, так как он пригоден для чтения, что упрощает внесение и проверку изменений в PR.

Сохранение приложения LUIS в формате LUDown

Чтобы сохранить приложение LUIS в формате .lu и поместить его в систему управления версиями, выполните следующие действия.

  • Экспортируйте версию приложения как .lu с портала LUIS и добавьте ее в репозиторий системы управления версиями.

  • ИЛИ с текстовом редакторе создайте файл .lu для приложения LUIS и добавить его в репозиторий системы управления версиями.

Совет

Если вы работаете с экспортированным файлом JSON приложения LUIS, его можно преобразовать в формат LUDown. Параметр --sort позволяет обеспечить сортировку намерений и речевых фрагментов в алфавитном порядке.
Обратите внимание, что функция экспорта .LU на портале LUIS сразу сортирует выходные данные.

Создание приложения LUIS из исходного кода

Создания приложения LUIS из исходного кода означает создание новой версии приложения LUIS путем импорта исходного кода .lu, обучения версии и ее публикации. Это можно сделать на портале LUIS или в командной строке:

Файлы, хранимые в системе управления версиями

Следующие типы файлов для приложения LUIS должны храниться в системе управления версиями:

Учетные данные и ключи не синхронизируются

Не добавляйте ключи или аналогичные конфиденциальные значения в файлы, которые синхронизируете с репозиторием, где они могут быть видны посторонним. Ключи и другие значения, которые не следует синхронизировать:

  • Ключи разработки и прогнозирования LUIS
  • Конечные точки разработки и прогнозирования LUIS
  • Ключи ресурсов Azure
  • Маркеры доступа, например маркер для субъекта-службы Azure, используемый для автоматизации проверки подлинности

Стратегии безопасного управления секретами

Ниже описаны стратегии безопасного управления секретами.

  • Если вы используете систему управления версиями Git, вы можете хранить секреты времени выполнения в локальном файле и запретить его синхронизацию, добавив шаблон для поиска имени файла в файл .gitignore.
  • В рабочем процессе автоматизации можно безопасно хранить секреты в конфигурации параметров, доступной в соответствующей технологии автоматизации. Например, если вы используете GitHub Actions, вы можете безопасно хранить секреты в секретах GitHub.

Создание ветвей и объединение

Распределенные системы управления версиями, такие как Git, обеспечивают гибкость при публикации, совместном доступе, просмотре и циклическом изменении кода с помощью ветвей разработки, используемых совместно с другими пользователями. Выберите стратегию ветвления Git, подходящую для вашей команды.

Какую стратегию ветвления вы ни приняли, основным принципом является возможность для всех членов группы работать над решением в профильной ветви независимо от работы в других ветвях.

Принципы независимой работы в ветвях в проекте LUIS

  • У главной ветви есть собственное приложение LUIS. Это приложение представляет текущее состояние вашего решения для проекта, и его текущая активная версия всегда должна быть связана с исходным кодом .lu в главной ветви. Все обновления исходного кода .lu для этого приложения следует проверять и тестировать, чтобы приложение можно было в любое время развернуть в средах сборки, например в рабочей среде. При слиянии обновлений .lu в главную ветвь из профильной ветви следует создать новую версию приложения LUIS и увеличить номер версии.

  • Каждая профильная ветвь должна использовать собственный экземпляр приложения LUIS. Программисты работают с приложением в профильной ветви, не рискуя помешать работе коллег в других ветвях. Приложение "ветви разработки" — это рабочая копия, которая должна удаляться при удалении профильной ветви.

Профильная ветвь Git

Разработчики могут работать с независимыми ветвями.

Чтобы иметь возможность работать над обновлениями приложения LUIS независимо от других ветвей, разработчики должны выполнить указанные ниже действия.

  1. Создайте профильную ветвь на основе основной (в зависимости от стратегии ветвления — обычно это основная ветвь или ветвь разработки).

  2. Создайте новое приложение LUIS на портале LUIS (приложение ветви разработки) только для работы в профильной ветви.

    • Если в вашей ветви уже существует исходный код решения .lu, так как он был сохранен после работы в другой ветви ранее в проекте, создайте приложение ветви разработки LUIS путем импорта файл .lu.

    • Если вы начинаете работу над новым проектом, у вас не будет исходного кода .lu для основного приложения LUIS в репозитории. Вы создадите файл .lu, экспортировав приложение ветви разработки с портала, когда завершите работу в профильной ветви, и отправите его в рамках запроса на вытягивание.

  3. Работайте с активной версией приложения ветви разработки и реализуйте в нем необходимые изменения. Рекомендуется использовать только одну версию приложения ветви разработки для всех профильных ветвей. Если в приложении ветви разработки создать несколько версий, нужно следить за тем, какая именно версия содержит изменения, которые требуется синхронизировать при создании запроса на вытягивание.

  4. Тестируйте обновления. Дополнительные сведения о тестировании приложения ветви разработки см. в статье Тестирование для DevOps LUIS.

  5. Экспортируйте активную версию приложения ветви разработки в виде .lu из списка версий.

  6. Синхронизируйте обновления и предложите их для оценки коллегами. Если вы используете GitHub, потребуется создать запрос на вытягивание.

  7. После утверждения изменений объедините обновления в главную ветвь. На этом этапе создается новая версияосновного приложения LUIS на основе обновленных файлов .lu в главной ветви. Рекомендации по выбору имени версии см. в разделе Управление версиями.

  8. При удалении профильной ветви рекомендуется удалить приложение ветви разработки LUIS, созданное этой профильной ветви.

Разработчики могут параллельно работать в нескольких ветвях.

Если следовать схеме, описанной в разделе Разработчики могут работать в независимых ветвях, то в каждой профильной ветви будет использоваться уникальное приложение LUIS. Один разработчик может работать одновременно с несколькими ветвями, переключаясь на правильное приложение LUIS для текущей ветви разработки.

Чтобы снизить риск переключения на неправильное приложение, рекомендуем использовать одно имя для профильной ветви и для приложения ветви разработки LUIS, созданного для этой ветви.

Как отмечалось выше, для простоты рекомендуется работать в одной версии в каждом приложении ветви разработки. Если вы используете несколько версий, будьте осторожны при переключении между приложениями ветви разработки.

Несколько разработчиков могут одновременно работать в одной ветви

Вы можете сделать так, чтобы несколько разработчиков могли одновременно работать с одной и той же профильной ветвью.

  • Все разработчики извлекают одну профильную ветвь, а также отправляют и извлекают изменения, отправленные ими самими и другими разработчиками, в нормальном режиме работы.

  • Если следовать схеме, описанной в разделе Разработчики могут работать в независимых ветвях, то в этой ветви будет использоваться уникальное приложение LUIS. Приложение ветви разработки LUIS будет создано первым участником группы разработчиков, который начинает работать в профильной ветви.

  • Добавляйте членов команды в качестве участников в приложение LUIS ветви разработки.

  • После завершения работы с профильной ветвью экспортируйте активную версию приложения ветви разработки LUIS в виде .lu из списка версии, сохраните обновленный файл .lu в репозитории, а затем синхронизируйте его и выполните запрос на вытягивание изменений.

Включение изменений из одной ветви в другую с перемещением или слиянием

Другие разработчики вашей группы, работающие в другой ветви, могут внести обновления в исходный код .lu и объединить их с главной ветвью уже после создания профильной ветви. Вы можете внести их изменения в рабочую версию, прежде чем продолжать собственные изменения в своей профильной ветви. Это можно сделать путем перемещения или слияния изменения с главной ветвью так же, как и с любым другим ресурсом кода. Поскольку приложение LUIS в формате LUDown имеет понятный для человека формат, оно поддерживает слияние с помощью стандартных средств слияния.

Если вы перемещаете изменения в приложении LUIS в профильную ветвь, следуйте советам ниже.

  • Перед перемещением или слиянием убедитесь с помощью портала LUIS, что локальная копия исходного кода .lu приложения содержит последние примененные изменения. Для этого сначала необходимо повторно экспортировать приложение с портала. Так вы сможете гарантировать, что не будут потеряны изменения, внесенные на портале, но еще не экспортированные.

  • Во время слияния используйте стандартные средства для устранения конфликтов слияния.

  • Не забудьте после переноса или слияния изменений повторно импортировать приложение обратно на портал, чтобы продолжать работу с его обновленной версией по мере применения собственных изменений.

Запросы на вытягивание для слияния

После утверждения запроса на вытягивание вы можете объединить изменения в основной ветви. Особых рекомендаций в отношении исходного кода LUDown для приложения LUIS нет: это понятный для человека формат, который поддерживает возможность слияние с использованием стандартных средств слияния. Все конфликты слияния могут разрешаться так же, как и с другими исходными файлами.

После слияния с помощью запроса на вытягивание рекомендуется выполнить очистку:

  • Удалите ветвь в репозитории

  • Удалите приложение ветви разработки LUIS, созданное для работы с профильной ветвью.

Как и в случае с ресурсами кода приложения, для приложений LUIS необходимо составлять модульные тесты. Для тестирования следует использовать рабочие процессы непрерывной интеграции:

  • Обновления в запросе на вытягивание перед его слиянием
  • Приложение главной ветви LUIS после утверждения запроса на вытягивание и слияния изменений в главную ветвь.

Дополнительные сведения о тестировании в рамках процесса DevOps для LUIS см. в соответствующей статье. Дополнительные сведения о реализации рабочих процессов см. в статье о рабочих процессах автоматизации для DevOps LUIS.

проверка кода;

Приложение LUIS в формате LUDown имеет пригодный для чтения формат, который позволяет легко проверять изменения в запросе на вытягивание. Файлы модульных тестов также составляются в формате LUDown, и их также можно легко просмотреть в запросе.

Управление версиями

Приложение состоит из нескольких компонентов, которые могут включать в себя такие компоненты, как бот, работающий в azure AI Служба Bot, QnA Maker, служба "Речь" azure AI и многое другое. Чтобы создать набор гибко связанных приложений, используйте систему управления версиями, позволяющую независимо управлять версиями каждого компонента, благодаря чему разработчики могут выявлять критические изменения и обновления просто по номеру версии. Управлять версиями приложения LUIS независимо от других компонентов легче, если это приложение хранится в собственном репозитории.

К приложению LUIS для основной ветви должна применяться схема управления версиями. При слиянии обновлений в коде .lu приложения LUIS в главную ветвь вы импортируете обновленный исходный код в новую версию приложения Luis для основной ветви.

Рекомендуется использовать для основной версии приложения LUIS числовую схему управления версиями. Например:

major.minor[.build[.revision]]

При каждом обновлении увеличивается последняя цифра номера версии.

Основную или дополнительную версию можно использовать для обозначения объема изменений в функциях приложения LUIS.

  • Основной номер версии: значительное изменение, например поддержка нового намерения или сущности.
  • Дополнительный номер версии: обратно совместимое незначительное изменение, например после существенного нового обучения.
  • Сборка: никаких изменений в функциональности; просто другая сборка.

Определив номер версии для последней редакции основного приложения LUIS, необходимо создать и протестировать новую версию приложения и опубликовать ее в конечной точке, где ее можно использовать в различных средах сборки, например для контроля качества или работы. Настоятельно рекомендуется автоматизировать все эти действия в рабочем процессе непрерывной интеграции (CI).

Пример

Управление версиями приложения LUIS в профильной ветви

При работе с приложением LUIS в ветви разработки, созданным для профильной ветви, приложение экспортируется по завершении работы, а обновленный код 'lu включается в запрос на вытягивание (PR). Ветвь в репозитории и приложение ветви разработки LUIS необходимо удалить после слияния PR с главной ветвью. Поскольку это приложение предназначено исключительно для профильной ветви, никакой конкретной схемы управления версиями для него нет.

Управление версиями необходимо применить на этапе слияния изменений в PR с главной ветвью, чтобы обеспечить независимость версий.

Дальнейшие действия