Инжиниринг запросов

Тема дорожной карты · Большие языковые модели (LLM)

Инжиниринг запросов — это процесс создания входных данных, которые направляют большие языковые модели (LLM) к конкретному и предсказуемому ответу. Этот процесс включает в себя определение роли и задачи, использование few-shot примеров, разделителей, схем вывода и оценки. Хороший запрос конкретен, разбит на шаги и проверяем. Он улучшается на основе набора примеров, а не на основе интуиции. В продакшене запросы версионируют, логируют и сравнивают с базовой версией при помощи A/B тестирования. Инжиниринг запросов — это инженерная практика, а не магия, и при смене модели запрос нужно перепроверять.

Как это работает

Инжиниринг запросов — это ремесло написания промптов, которые стабильно дают желаемый output. Основные техники включают чёткое определение роли и задачи, пошаговую декомпозицию, явный формат вывода (например, JSON или XML), few-shot примеры, цепь мысли и ограничения (длина, тон, формат). System-промпт задаёт постоянный контекст, а user/assistant-ходы определяют разговор. Разные семейства моделей по-разному реагируют на запросы, что требует тюнинга для оптимального использования.

Когда применять

Инжиниринг запросов полезен до этапа fine-tuning. Хорошо инженерный запрос часто даёт более точный результат, чем fine-tuned модель, и при этом не требует дополнительных затрат. Явно указывайте формат вывода, используйте few-shot примеры (3-5) для сложных задач, чтобы модель лучше понимала желаемый паттерн. Для multi-step рассуждений используйте "думай шаг за шагом". Тестируйте запросы на edge cases, чтобы убедиться в их надёжности. Поддерживайте библиотеку запросов и версионируйте их как код.

Типичные ошибки

Типичные ошибки в инжиниринге запросов включают расплывчатые запросы, которые не дают ясного представления о том, что должно быть результатом. Не тестируют запросы на разнообразных входных данных, что может привести к тому, что запрос работает только на любимом примере, но падает на реальных входных данных. Ошибка prompt injection, когда недоверенный входной данные перебивает инструкции, требует санитизации и использования чётких разделителей. Также распространена ошибка over-engineering, когда запрос становится слишком сложным и запутанным, что затрудняет его использование.

Связанные понятия

Полезные ресурсы