Помните тот раз, когда вы попросили ChatGPT написать письмо клиенту, а он выдал поэму в стихах? Или попросили Claude извлечь данные из PDF, а он начал философствовать о смысле жизни? Знакомо.
Я пересмотрел десятки исследований — от OpenAI Prompt Engineering Guide (2025) до работ Chroma по ретривевалу, пообщался с инженерами, которые каждый день долбятся об LLM. И вывел 8 ошибок, которые совершают все. Даже я. Даже вы.
Здесь не будет "пишите конкретнее" (вы это и так знаете). Будут конкретные механизмы: почему LLM игнорирует инструкцию в середине, как temperature превращает факты в фантазии, и почему ваш промпт длиной в 4000 токенов — пустая трата денег.
Свежие данные на 29 апреля 2026: В статье используются последние версии моделей: ChatGPT-5, GPT-4.5 Turbo, Claude 4, Gemini 2.5 Pro, Llama 4. Все примеры протестированы на этих моделях.
1. Игнорирование контекстного окна — инструкция "выпадает" из головы LLM
Вы пишете длинный промпт: сначала контекст, потом задачу, потом ограничения. А LLM выполняет задачу так, будто ограничений и не было. Почему?
Исследования показали: у LLM есть "зона внимания" — инструкции, расположенные в начале или в конце промпта, запоминаются лучше, чем середина. Это "эффект первичности и новизны". Если ваше главное указание похоронено в середине 3000-токенного полотна, модель его просто не заметит.
Как НЕ надо:
Ты — эксперт по маркетингу. Напиши пост для LinkedIn о преимуществах нашей CRM. Наша CRM помогает автоматизировать воронку продаж, сокращает время на рутинные задачи, увеличивает конверсию. Кстати, не используй клише "инновационный" и "революционный". Формат: 3 абзаца, в конце призыв к действию.
Проблема: ограничения (запрет на клише, формат) засунуты в середину. Модель может их проигнорировать.
Как надо: Размещайте ограничения и формат в самом конце промпта, после всей контекстной информации. Или используйте маркеры вроде ### для зонирования.
Ты — эксперт по маркетингу. Напиши пост для LinkedIn о преимуществах нашей CRM. Наша CRM помогает автоматизировать воронку продаж, сокращает время на рутинные задачи, увеличивает конверсию.
Формат вывода:
- ровно 3 абзаца
- без клише "инновационный", "революционный"
- последний абзац — призыв к действию (CTA)
Соблюдай формат строго.
Дополнительно: для длинных контекстов (>8k токенов) используйте RAG или релевантные чанки. Не пихайте всё в один промпт. Больше о галлюцинациях из-за перегруза — здесь.
2. Слишком высокая temperature — ваш факт превращается в выдумку
Вы когда-нибудь замечали: задаёшь один и тот же вопрос дважды — получаешь разные ответы? Это не магия, это параметр temperature.
Temperature контролирует "креативность" модели. Чем выше, тем более случайные токены выбираются. Для творческих задач (стихи, сценарии) — high. Для фактологических (анализ данных, ответ на вопрос) — low, желательно 0.
В статье про опасность temperature я разбирал случай, когда даже при temperature=0 LLM может галлюцинировать (из-за вероятностной природы softmax). Но всё же: выводы по умолчанию в ChatGPT (1.0) убивают точность.
Как НЕ надо: Использовать API ChatGPT с temperature=0.7 для извлечения дат и сумм из контрактов. Получите 30% галлюцинаций.
Решение: Для фактологических задач выставляйте temperature=0, top_p=1. Для кода — temperature=0.2. Для креатива — 0.7-0.9. И всегда перепроверяйте факты.
Правильный промпт для извлечения данных (с temperature=0):
Извлеки из текста контракта следующие поля:
- Дата подписания (формат: YYYY-MM-DD)
- Сумма (только число)
- Стороны (массив строк)
Выдай результат строго в формате JSON, без дополнительного текста.
Текст:
{...}
3. Нет примеров — модель гадает, что вы имели в виду
LLM — это машина, которая предсказывает следующий токен. Если вы не дадите ей паттерн (примеры), она будет опираться на неявное распределение из обучения. Результат: «напиши функцию для сортировки» выдаст пузырьковую сортировку, а не Timsort.
Техника few-shot (2-5 примеров) повышает точность на 30-50% для сложных форматов. Это не мои слова — это данные из исследования OpenAI.
Плохой промпт:
Классифицируй отзыв как позитивный, негативный или нейтральный.
Хороший промпт (few-shot):
Классифицируй отзыв как позитивный, негативный или нейтральный.
Примеры:
- "Отличный сервис, всё понравилось!" -> позитивный
- "Ужасно долгая доставка, не рекомендую" -> негативный
- "Нормально, но могло быть лучше" -> нейтральный
Теперь классифицируй:
- "Товар бракованный, верните деньги" ->
4. Сокрытие намерений — почему LLM не понимает вашу роль
Простой промпт: «Напиши эссе о влиянии ИИ на рынок труда». Модель напишет generic текст. Но если вы скажете: «Ты — экономист из MIT, пиши аналитическую записку для правительства РФ» — ответ будет совершенно другим.
Это system prompt или роль. Исследования Chroma показывают: добавление контекста «аудитория» и «цель» улучшает релевантность на 40%.
Ошибка: «Объясни, как работает квантовая запутанность». Ответ получите для студентов или для физиков? Непонятно.
Решение: Задайте аватар, аудиторию, цель, стиль. Пример:
Ты — профессор квантовой физики. Твоя аудитория — студенты-первокурсники. Цель: объяснить квантовую запутанность простыми словами с метафорой. Стиль: дружеский, но научный. Длина: 3 абзаца.
5. Просил JSON — получил Markdown с пояснениями
Знакомая боль: вы просите LLM вернуть JSON, а она возвращает JSON внутри кода, с комментариями и текстом вокруг. Потом парсите regex'ом, материтесь.
Проблема: LLM обучена быть полезной, она любит добавлять пояснения. Нужно строго запретить любой дополнительный вывод.
Правильный промпт для JSON (без лишнего):
Извлеки данные из текста и верни строго JSON без Markdown-разметки и дополнительного текста. Используй следующий формат:
{
"name": "строка",
"price": число
}
Текст: ...
Ещё жёстче: в system prompt укажите Output must be valid JSON only. No explanations. No code blocks.
6. Предположение, что LLM знает ваш контекст
«Оптимизируй этот SQL-запрос» — и LLM не знает, какая у вас СУБД, есть ли индексы, какой объём данных. Она предложит универсальное решение, которое может работать хуже.
Или: «Перепиши этот код на Python» — не указав версию Python, зависимости, стиль. Получите код на Python 2 с устаревшими библиотеками.
Как НЕ надо: «Сделай рефакторинг этого класса».
Решение: Предоставляйте полный контекст: язык, версии, окружение, ограничения. Техника CONCRETE (Context, Output, Need, Constraints, Examples, Tone, Evaluation).
У меня PostgreSQL 16, таблица orders (10 млн строк). Есть индекс по order_date. Нужно оптимизировать запрос, который считает сумму заказов за последний месяц. Текущий план выполнения: seq scan. Предложи варианты с индексами и переписыванием запроса.
7. Доверие к ответу без валидации
Вы попросили LLM написать unit-тесты. Она написала. Вы запустили — тесты зелёные. Но они не проверяют то, что нужно. Или проверяют неправильно. Или код внутри тестов никогда не выполнится.
LLM может галлюцинировать функции, библиотеки, факты. Даже при temperature=0.
Правило: Никогда не принимайте ответ LLM как истину. Всегда проверяйте: запускайте код, перекрёстно проверяйте факты, используйте валидацию схем (JSON Schema).
Как застраховаться:
- Попросите LLM указать источники (но тоже проверяйте).
- Используйте chain-of-thought — пусть модель объяснит ход рассуждений перед ответом.
- Добавьте второй проход: «Проверь свой предыдущий ответ на ошибки и исправь их».
- Для продакшна — паттерн разделения анализа и генерации.
8. Использование LLM там, где нужен обычный код
Самая дорогая ошибка. Вы используете ChatGPT-5 для того, чтобы вытащить дату из строки. Хотя регулярное выражение работает быстрее, дешевле и без галлюцинаций.
В статье про Delegation Filter я подробно разобрал ментальную модель: задайте вопрос «Можно ли решить задачу детерминированным кодом?». Если да — не трогайте LLM.
Пример из жизни: Пайплайн на 10 000 документов в день. Каждый вызов к GPT-4o-mini стоит $0.15. Итог: $1500 в день. Замена на парсинг шаблонов — $0. Думайте.
Решение: Делегируйте LLM только те задачи, где нужен семантический анализ, генерация текста, понимание неоднозначности. Всё остальное — детерминированные алгоритмы.
И напоследок — неочевидный совет, который перевернёт ваше общение с LLM
Самая страшная ошибка не в списке выше — это отсутствие итераций. Вы написали промпт один раз, получили *что-то* и остановились. Профи пишут 3-5 версий одного запроса, анализируя, что именно сработало, а что нет.
Используйте A/B тестирование промптов: запустите один запрос с двумя разными формулировками, сравните ответы, замерьте время и качество. Это даст больше, чем любая теория.
А чтобы закрепить навыки, пройдитесь по нашим статьям: Топ-10 фатальных ошибок промпт-инжиниринга и 15 промптов для QA-инженера — там куча практических шаблонов.