Гайд · TNWS AI
Как зарегистрировать новую версию русского промпта в MLflow Prompt Registry
Создаём две неизменяемые версии промпта с переменными {{question}} и проверяем их форматирование без вызова модели.
Задача и применимость
Поисковый запрос: «как версионировать русский шаблон промпта в MLflow Prompt Registry». Изменить текст инструкции AI-помощника, сохранив возможность восстановить предыдущую редакцию. Инструкция применима к Python-клиенту и Tracking Server актуальной ветки MLflow GenAI, проверенной по официальной документации 20 сентября 2026 года. Для конкретной установки сначала посмотрите mlflow.__version__: при отличии интерфейса от приведённого руководства закрепите совместимую версию и проверьте её документацию. Учебные данные вымышлены; ни один описанный пример не является запросом к реальному магазину.
Что происходит в системе
В MLflow Prompt Registry версия текста шаблона неизменяема: повторный register_prompt с тем же именем создаёт следующую редакцию. Это позволяет восстановить прежнюю формулировку при регрессии, но не гарантирует идентичности ответов разных моделей. Переменная в стандартном шаблоне записывается {{question}}, а метод Prompt.format заполняет её. Если случайно написать одинарные скобки или не передать имя переменной, результат будет не тем контрактом, на котором строится приложение; проверяйте отрендеренный текст отдельно от генерации.
Пошаговое выполнение
- Подготовьте базовый текст промпта с переменной в двойных фигурных скобках.
- Зарегистрируйте его через register_prompt под новым именем.
- Отдельным вызовом с тем же именем зарегистрируйте исправленную редакцию с осмысленным commit_message.
- Загрузите явную версию по prompts:/имя/номер и примените format с контрольным question.
- Сравните полученные номера и тексты, не вызывая нейросеть до утверждения новой версии.
Для локального опыта нужен 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 помогает восстановить текст, но сама не подсчитывает полноту ответов — для этого нужен самостоятельный сценарий оценки.
Критерии проверки результата
- Вторая регистрация получила больший номер, чем первая.
- Форматированный текст содержит вопрос и правило об отсутствии данных.
- Старую редакцию можно загрузить по её исходному номеру.
Если критерий не выполняется, сохраните номер версии пакета, безопасный входной пример и фактический результат. Затем меняйте по одной переменной: адрес сервера, параметры вызова, конфигурацию эксперимента либо редакцию шаблона. Такой подход помогает установить причину отличия без предположений о том, что модель «обязана» отвечать строго одной строкой. После успешного теста на заглушке повторите проверку на малом наборе разрешённых рабочих данных; обучающий пример сам по себе не является нагрузочным, приватностным или качественным аудитом.
Типичные ошибки и что не делать
- Не регистрируйте промпт заново на каждый пользовательский запрос.
- Не путайте версию шаблона с версией самой LLM.
- Не считайте промпт гарантом фактического ответа.
Учитывайте, что трассировка и оценка могут сохранять содержимое входа и выхода. До подключения клиентов организуйте контроль доступа и обработку персональных данных. Не помещайте секреты API в промпты, параметры функций, журналы или опубликованные скриншоты. Если пример использует детерминированную функцию, его успешная проверка подтверждает корректность механики MLflow и теста, но не качество какой-либо нейросети.
FAQ
Как обозначить переменную?
Двойными фигурными скобками, например {{question}}.
Изменяет ли повторная регистрация старый текст?
Нет, создаётся новая версия.
Нужен ли вызов LLM для проверки format?
Нет.
Официальные источники
Частые вопросы
Как обозначить переменную?
Двойными фигурными скобками, например {{question}}.
Изменяет ли повторная регистрация старый текст?
Нет, создаётся новая версия.
Нужен ли вызов LLM для проверки format?
Нет.
Читайте также
Как найти ошибочные и медленные запросы AI-приложения в MLflow Traces
Фильтруем статус ERROR и длительность через search_traces, сверяя результат с искусственными успешным и аварийным вызовами.
Как проверить формат ответа нейросети собственным scorer в MLflow
Создаём @scorer для проверяемого префикса и проводим оценку без LLM-судьи и без внешнего API.
Как разделить поиск и сборку ответа RAG на спаны MLflow Tracing
Размечаем вручную поиск фрагмента и формирование ответа; проверяем вложенные спаны без вызова платной модели.
Комментарии
Пока тихо. Скажите первое слово