Гайд · TNWS AI

Как зарегистрировать новую версию русского промпта в MLflow Prompt Registry

4 мин—

Создаём две неизменяемые версии промпта с переменными {{question}} и проверяем их форматирование без вызова модели.

Задача и применимость

Поисковый запрос: «как версионировать русский шаблон промпта в MLflow Prompt Registry». Изменить текст инструкции AI-помощника, сохранив возможность восстановить предыдущую редакцию. Инструкция применима к Python-клиенту и Tracking Server актуальной ветки MLflow GenAI, проверенной по официальной документации 20 сентября 2026 года. Для конкретной установки сначала посмотрите mlflow.__version__: при отличии интерфейса от приведённого руководства закрепите совместимую версию и проверьте её документацию. Учебные данные вымышлены; ни один описанный пример не является запросом к реальному магазину.

Что происходит в системе

В MLflow Prompt Registry версия текста шаблона неизменяема: повторный register_prompt с тем же именем создаёт следующую редакцию. Это позволяет восстановить прежнюю формулировку при регрессии, но не гарантирует идентичности ответов разных моделей. Переменная в стандартном шаблоне записывается {{question}}, а метод Prompt.format заполняет её. Если случайно написать одинарные скобки или не передать имя переменной, результат будет не тем контрактом, на котором строится приложение; проверяйте отрендеренный текст отдельно от генерации.

Пошаговое выполнение

  1. Подготовьте базовый текст промпта с переменной в двойных фигурных скобках.
  2. Зарегистрируйте его через register_prompt под новым именем.
  3. Отдельным вызовом с тем же именем зарегистрируйте исправленную редакцию с осмысленным commit_message.
  4. Загрузите явную версию по prompts:/имя/номер и примените format с контрольным question.
  5. Сравните полученные номера и тексты, не вызывая нейросеть до утверждения новой версии.

Для локального опыта нужен Python 3.10+, установленный пакет mlflow и запущенный отдельно командой mlflow server локальный сервер. Адрес http://localhost:5000 из примеров справедлив при стандартном локальном запуске; в контейнере и удалённом окружении задайте настоящий доступный URI. Вызовы реальной модели выполняйте только с подходящими ключами и подтверждённой доступностью модели. Фрагмент ниже — готовый шаблон контроля конкретной операции:

import mlflow
mlflow.set_tracking_uri("http://localhost:5000")
first = mlflow.genai.register_prompt(
    name="ru-support-demo", template="Ответь на вопрос: {{question}}",
    commit_message="Базовый короткий шаблон")
second = mlflow.genai.register_prompt(
    name="ru-support-demo",
    template="Ответь только по справке. Если данных нет, скажи: Не знаю. Вопрос: {{question}}",
    commit_message="Добавлено правило отказа")
loaded = mlflow.genai.load_prompt(f"prompts:/ru-support-demo/{second.version}")
print(first.version, second.version)
print(loaded.format(question="Есть ли скидка?"))

Пример входа и ожидаемого результата

Вход: «Есть ли скидка?». Ожидаемая отформатированная инструкция содержит вопрос и фразу «Если данных нет, скажи: Не знаю». Номера версий зависят от уже существующего реестра; сравнивайте second.version > first.version, а не требуйте непременно 1 и 2 при повторном запуске.

Как интерпретировать измерение

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

Границы решения и особые случаи

Не вызывайте код регистрации при каждом пользовательском запросе: это постоянно создаёт новые версии и загрязняет историю. Его место — процедура выпуска; рабочее приложение загружает утверждённую версию или алиас. В демонстрации специально напечатана версия из ответа сервера, а не придуман жёсткий путь v2. Для команды с несколькими сервисами важно согласовать владельца имени ru-support-demo, чтобы независимые эксперименты не записывали новые редакции в один и тот же промпт. Не храните секреты в шаблоне.

Дополнительный контрольный случай

Для проверки реальной пользы обновления создайте пару вопросов с разными ожидаемыми действиями. На вопрос, который покрыт справкой, модель должна сослаться на конкретный фрагмент; на вопрос без данных — отказаться от утверждения. Отдельно проверяйте, не приводит ли более строгий отказ к потере правильных ответов. История Prompt Registry помогает восстановить текст, но сама не подсчитывает полноту ответов — для этого нужен самостоятельный сценарий оценки.

Критерии проверки результата

  1. Вторая регистрация получила больший номер, чем первая.
  2. Форматированный текст содержит вопрос и правило об отсутствии данных.
  3. Старую редакцию можно загрузить по её исходному номеру.

Если критерий не выполняется, сохраните номер версии пакета, безопасный входной пример и фактический результат. Затем меняйте по одной переменной: адрес сервера, параметры вызова, конфигурацию эксперимента либо редакцию шаблона. Такой подход помогает установить причину отличия без предположений о том, что модель «обязана» отвечать строго одной строкой. После успешного теста на заглушке повторите проверку на малом наборе разрешённых рабочих данных; обучающий пример сам по себе не является нагрузочным, приватностным или качественным аудитом.

Типичные ошибки и что не делать

  • Не регистрируйте промпт заново на каждый пользовательский запрос.
  • Не путайте версию шаблона с версией самой LLM.
  • Не считайте промпт гарантом фактического ответа.

Учитывайте, что трассировка и оценка могут сохранять содержимое входа и выхода. До подключения клиентов организуйте контроль доступа и обработку персональных данных. Не помещайте секреты API в промпты, параметры функций, журналы или опубликованные скриншоты. Если пример использует детерминированную функцию, его успешная проверка подтверждает корректность механики MLflow и теста, но не качество какой-либо нейросети.

FAQ

Как обозначить переменную?

Двойными фигурными скобками, например {{question}}.

Изменяет ли повторная регистрация старый текст?

Нет, создаётся новая версия.

Нужен ли вызов LLM для проверки format?

Нет.

Официальные источники

Частые вопросы

Как обозначить переменную?

Двойными фигурными скобками, например {{question}}.

Изменяет ли повторная регистрация старый текст?

Нет, создаётся новая версия.

Нужен ли вызов LLM для проверки format?

Нет.

Читайте также

Комментарии

Пока тихо. Скажите первое слово