Обсудить
бизнес-задачи

Промпт-инжиниринг. Опыт оптимизации поведения LLM

блог о bi, №1 в рунете
В процессе разработки инструмента для автоматической генерации документации для базы данных мы столкнулись с рядом проблем при использовании LLM:
  • Избыток лишней информации;
  • Присутствие технической информации, не интересной пользователю;
  • Отсутствие соответствия общей структуре и стилю.
Эти проблемы отрицательно влияли на полезность формируемой документации. Для повышения ее качества мы погрузились в промпт-инжиниринг – технику создания точных запросов для LLM и один из основных методов управления результатом генерации текста. Благодаря применению методов промпт-инжиниринга удалось существенно сократить количество ошибок, повысить точность формулировок и обеспечить соблюдение единой структуры документации.
Промпт (prompt, от англ. «подсказка») – это текстовый запрос, который подается на вход LLM и определяет характер ее результата. Для получения точного и релевантного результата промпт должен четко и ясно определять задачу для модели.
Ниже приведен пример неудачного промпта:
Промпт
Создай описание объекта по этому SQL:
CREATE TABLE date (
date_id int,
date_name nvarchar(128),
month_id int,
month_name nvarchar(128),
year int
)
Такой промпт недостаточно конкретен: не указан формат результата, какого стиля придерживаться, какие детали учитывать.
Корректно составленный промпт приведен ниже:
Промпт
На основе приведённого SQL-скрипта создай техническое описание таблицы в стиле официальной документации: перечисли поля с типами данных и назначением, укажи первичные ключи, ограничения:
CREATE TABLE date (
date_id int,
date_name nvarchar(128),
month_id int,
month_name nvarchar(128),
year int
)
Такой промпт задает четкие ожидания к результату и помогает модели генерировать структурированный текст. Данный пример демонстрирует важность правильно сформированного запроса. Далее будут рассмотрены подходы промпт-инжиниринга, которыми мы воспользовались на практике и как они помогли повысить качество генерируемой документации.

Основные правила построения промптов

Чётко заданная структура позволяет добиться формализованного результата, соответствующего требованиям документации. Дополнительно рекомендуется приводить примеры — они помогают языковой модели точнее понимать формат и содержание требуемого вывода. Наиболее эффективно использовать такой формат результата, который можно легко трансформировать в другие, например, HTML, Markdown или JSON.
Ниже приведён пример промпта, с помощью которого мы задавали структуру описания и управляли форматированием результатов:
Промпт
"Пример:\n"
"<description>Эта таблица содержит информацию о датах, включая различные атрибуты, такие как год, месяц, квартал и тип дня.</description>\n"
"<column><columnName>d</columnName> Дата.</column>\n"
"<column><columnName>did</columnName> Уникальный идентификатор даты</column>.\n"
"<column><columnName>td</columnName> Текстовое представление даты.</column>\n"
"<column><columnName>y</columnName> Год.</column>\n"
Также в промпте можно задать роль, которую модель должна выполнять при генерации текста. Это позволяет задать контекст, в рамках которого она будет интерпретировать задачу, и получить более точный и информативный результат. В нашем случае, при генерации документации по SQL-скриптам, мы указывали, что модель выступает в роли ассистента по документированию базы данных. Это помогало модели фокусироваться на ключевых элементах структуры, использовать профессиональную лексику и соблюдать стиль, соответствующий технической документации.
Для управления степенью разнообразия и предсказуемости ответов языковой модели можно настраивать параметры генерации, такие как температура, top-k и top-p.
Температура влияет на креативность модели: при низких значениях (например, 0.2–0.5) она отдаёт предпочтение наиболее вероятным вариантам, обеспечивая стабильность и предсказуемость, а при высоких (ближе к 1) — позволяет больше случайности и креативности.
Параметры top-k и top-p управляют тем, из какого набора возможных токенов модель выбирает следующий:
Top-k
Ограничивает выбор строго k наиболее вероятными токенами. Например, если k=50, модель будет выбирать следующий токен только из 50 самых вероятных вариантов, игнорируя всё остальное. Это снижает риск появления редких или неуместных слов, но может сделать текст менее гибким.
Top-p
Работает иначе: модель рассматривает не фиксированное число токенов, а те, чья суммарная вероятность достигает заданного порога — например, 90% при top-p = 0.9. Таким образом, число вариантов может меняться динамически, в зависимости от распределения вероятностей, что даёт более гибкое и адаптивное поведение.
В задачах генерации документации это особенно важно: модель должна сохранять терминологическую точность, структурированность и соответствие формату, но при этом избегать дословного повтора или механических фрагментов текста.

Наши результаты

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