ГЛАВА 1. КАК РЕАЛЬНО РАБОТАЕТ LLM И ПОЧЕМУ ЭТО ВАЖНО ПРОМТ‑ИНЖЕНЕРУ
Если вы хотите стать профессиональным промт‑инженером, вам недостаточно уметь “хитро” формулировать запросы. Это работает только до определённого уровня. Дальше вы упираетесь в поведение модели, которое на первый взгляд кажется магией: то отвечает идеально, то несёт уверенную чушь, то вдруг перестаёт слушаться инструкций.
Проблема не в вас. Проблема в том, что большинству пользователей вообще не объясняют, как устроена LLM. Не на уровне формул и научных статей, а на уровне того, что действительно влияет на ежедневную работу с промтами.
В этой главе мы спокойно разберёмся с фундаментальными вещами: что такое LLM, что такое токены, контекстное окно, температура, top‑p, откуда появляются так называемые “галлюцинации” и чем одна модель отличается от другой. Всё это нужно не для теории ради теории, а для практики: чтобы вы могли проектировать промты, исходя из реального устройства модели, а не из надежды “может, повезёт в этот раз”.
Начнём с самого главного вопроса: что же такое LLM в человеческом понимании.
LLM – это не разум, не личность и не всемогущий эксперт. Это статистическая модель языка, обученная на огромном количестве текстов. Её задача на техническом уровне проста: по предыдущему кусочку текста с максимальной вероятностью предсказать следующий фрагмент. Не больше и не меньше. Всё, что вы видите – рассуждения, аргументы, структура текста, советы – это результат очень сложного, но всё равно статистического продолжения текста.
Представьте игру: вы начали писать предложение и остановились на середине. Ваш собеседник должен догадаться, как его продолжить так, чтобы оно звучало правдоподобно. Если он видел миллиарды текстов, он начнёт угадывать очень точно. Но всё равно это угадывание, а не “понимание мира”.
Отсюда вытекают важные последствия для промт‑инженера. Модель не “знает” факты в человеческом смысле. Она просто видела много примеров того, как люди пишут о фактах. Она не “знает” алгоритмы – она видела много описаний алгоритмов и их примеров. Она не “понимает”, что такое правда и ложь. Она просто продолжает текст в духе того, что чаще встречалось рядом. Поэтому иногда модель будет уверенно выдумывать то, чего никогда не было, – как если бы человек, который любит болтать, начал фантазировать, чтобы не выглядеть незнающим.
Чтобы управлять этим поведением, нужно понимать ещё одну ключевую вещь: LLM работает на уровне токенов. Токен – это не обязательно слово, а кусочек текста. Иногда это целое слово, иногда часть слова, иногда пробел или знак препинания. Модель на вход получает последовательность токенов, а на выходе генерирует новый токен за токеном.
Почему это важно вам, а не только разработчикам? Потому что у каждой модели есть ограничение: так называемое контекстное окно. Это максимальное количество токенов, которое модель может одновременно “держать в голове”. Если вы передаёте слишком длинный диалог, большую статью, несколько документов – в какой‑то момент старые части контекста просто перестают учитываться. Модель больше не видит их, как будто вы их никогда не писали.
Отсюда возникают типичные жалобы пользователей: “я дал модели всю историю, а она пишет, как будто забыла про начало”, “я прикрепил большой текст, а она ссылается только на конец”. Всё логично: вы перегрузили контекстное окно. Для промт‑инженера это не баг, а рабочее ограничение, с которым надо уметь жить. Вы должны заранее понимать: если задача требует работы с большим объёмом текста, её нужно разбить на части, а не пытаться затолкать всё сразу.
Ещё два параметра, которые вы обязаны ощущать на практике, – это температура и top‑p. Они отвечают за степень “хаотичности” и креативности генерации.
Температура – это коэффициент, который влияет на то, насколько модель будет склонна выбирать менее вероятные продолжения текста. При низкой температуре (например, 0–0,2) модель будет очень “консервативной”: она выбирает наиболее предсказуемые варианты. Это хорошо для задач, где нужна стабильность, однообразие и максимальная точность. При высокой температуре (0,7–1,0) модель становится более творческой и непредсказуемой. Она больше готова “рисковать” с выбором слов, структуры, идей. Это полезно для генерации креативных концепций, сторителлинга, необычных формулировок.
Top‑p – это другой способ управлять разнообразием ответов. Вместо того чтобы просто “разогревать” всю вероятность, модель берёт только верхнюю часть распределения: например, выбирает токены, которые в сумме дают 90% вероятности, и игнорирует всё остальное. Комбинация температуры и top‑p даёт вам тонкую настройку того, как именно будет писать модель: строгим, скучным, но точным языком или живым, интересным, но иногда чрезмерно свободным.
Важно: промт‑инженер не просто знает слова “температура” и “top‑p”, а понимает, когда и зачем их менять. Например, если вы пишете промт для генерации юридического текста, лучше держать температуру около нуля – вам нужна предсказуемость и структурная стабильность. Если вы создаёте десятки вариантов креативных рекламных слоганов, наоборот, увеличиваете температуру, иначе модель будет повторять одно и то же.
Теперь вернёмся к “галлюцинациям”. В контексте LLM под этим подразумевают ситуации, когда модель выдаёт неправду, но делает это уверенно, логично и красиво. Причины у этого явления вполне понятные.
Во‑первых, модель не имеет прямого доступа к реальному времени, базам данных или фактической проверке, если её специально не подключили к таким источникам через инструменты. Она опирается только на то, что видела в процессе обучения, и на ваш текущий промт. Если информация в обучающих данных устарела или неполна, модель будет “достраивать” недостающее.
Во‑вторых, модель оптимизирована на правдоподобие текста, а не на истину. Если вы задаёте вопрос, на который она не знает точного ответа, но видела подобные формулировки, она всё равно попытается продолжить текст так, чтобы он выглядел по‑человечески убедительным.
В‑третьих, промт может неявно провоцировать выдумки. Когда вы просите: “придумай исследования, которые подтверждают…”, “назови конкретные источники…”, “дай ссылки на статьи…”, вы буквально заставляете модель играть в игру “как будто”. Она не умеет сказать: “я не нашла таких данных в базе”, если вы этого явно не требуете.
Как промт‑инженер вы должны относиться к галлюцинациям не как к случайным “глюкам”, а как к предсказуемой части поведения модели. Управлять этим можно несколькими способами.
Первое: чётко задавать режим. Например, прямо указать: если вы не уверены в фактах, пишите, что не уверены, и не придумывайте источники. Добавлять явные инструкции: “если точных данных нет, предложите гипотезы и пометьте их как гипотезы”.
Второе: ограничивать задачи модели. Не просить её там, где нужен доступ к актуальным данным, без дополнительного инструмента. Или хотя бы просить не ссылки, а направления поиска, ключевые слова, типы источников.
Третье: использовать дополнительные шаги проверки. Например, сначала попросить модель выделить, какие части ответа основаны на общих знаниях, а какие – на предположениях. Или попросить её “покритиковать” собственный ответ, как если бы она искала в нём возможные ошибки.
Наконец, вам нужно понимать, что разные LLM ведут себя по‑разному. GPT‑4/4o, Claude, Llama, Gemini – это не просто разные бренды, а разные архитектуры, обученные на разных данных, с разными приоритетами.
GPT‑4/4o, как правило, сильны в универсальности: хорошо держат структуру, умеют рассуждать, комбинировать разные навыки. Claude часто показывает себя очень сильным в длинных текстах, литературном стиле, анализе больших контекстов. Модели семейства Llama – открытые и гибко настраиваемые, но их качество сильно зависит от конкретной версии и дообучения. Gemini делает акцент на интеграции с экосистемой Google и мультимодальности.
Для вас это означает простую вещь: один и тот же промт может вести себя по‑разному на разных моделях. Где‑то он будет работать идеально, где‑то давать слишком обобщённые или наоборот слишком “болтливые” ответы. Профессионал не обвиняет модель, а адаптирует промты под её поведение.
Теперь перейдём к практике. Теория без практики в промт‑инжиниринге превращается в бесполезное знание.
Ваше первое практическое задание – почувствовать, как на самом деле влияет температура. Возьмите один и тот же промт. Наилучший тип – задача, где есть место как структуре, так и креативу. Например, можно использовать такой запрос:
“Вы – копирайтер, который пишет тексты для лендингов финтех‑продукта для молодёжи. Составьте текст главного экрана: заголовок, подзаголовок и короткое описание преимущества сервиса.”
С этим же текстом выполните четыре прогона: с температурой 0, 0.3, 0.7 и 1.0. Все остальные параметры оставьте неизменными. Ваша задача – не просто посмотреть на ответы, а проанализировать, как меняется их характер.
При температуре 0 вы, скорее всего, увидите очень предсказуемые, иногда даже скучные формулировки. Заголовки будут типовыми, без рискованных идей. При 0.3 текст останется структурным, но появится чуть больше разнообразия. При 0.7 появятся более смелые формулировки, неожиданные обороты. При 1.0 модель может начать выдавать что‑то чрезмерно креативное, иногда граничащее с бессмыслицей или слишком “маркетинговой водой”.
Запишите себе наблюдения: как меняется креативность, чёткость структуры, повторяемость одних и тех же фраз. Это упражнение, сделанное один раз сознательно, намного полезнее десятка абстрактных объяснений про температуру. После него вы уже не будете бездумно оставлять параметр “как есть”, а начнёте подбирать его под задачу.
Второе практическое задание касается контекстного окна. Вам нужно на собственном опыте увидеть, как ограничение контекста ломает задачу, и попробовать обойти это ограничение.
Возьмите большой текст. Это может быть длинная статья, глава из книги, инструкция к продукту – что угодно, что занимает хотя бы несколько тысяч слов. Попросите модель:
“Проанализируйте этот текст и сделайте подробное структурированное резюме, выделив главные разделы, тезисы и выводы. Отвечайте на русском языке, в формате иерархического списка.”
Сначала попробуйте просто целиком вставить текст (если длина позволяет). Затем добавляйте ещё материалы – ещё одну статью, ещё одну главу. В какой‑то момент вы столкнётесь с тем, что модель либо начнёт игнорировать начало, либо ответы станут поверхностнее: она будет “слипать” содержимое, вместо реального анализа.
После этого сделайте то, что делает промт‑инженер: разбейте текст на части. Сформулируйте стратегию “chunking” – деления на блоки. Например, вы можете:
Сначала разделить текст на логические куски и для каждого куска попросить модель сделать локальное резюме. Потом попросить модель взять все эти резюме и, на их основе, сделать итоговое обобщение всего материала.
Таким образом вы превращаете одну задачу, которая не помещается в контекстное окно, в цепочку промтов, каждый из которых укладывается в лимит. По сути, вы ручным образом строите многошаговую схему мышления.
Здесь важно, чтобы вы не ограничивались мыслью “ну да, можно дробить”. Вам нужно реально проделать это руками и увидеть разницу: что даёт прямое скармливание большого текста, а что – подход с разбиением и последующей агрегацией. Тогда контекстное окно перестаёт быть абстрактным ограничением и становится конкретным фактором, который вы учитываете при проектировании любых сложных задач.
Освоив эти два упражнения, вы сделаете первый шаг от “пользователя, который пишет запросы” к специалисту, который строит взаимодействие с моделью осознанно. В следующих главах мы будем накладывать более сложные техники на этот фундамент, но без понимания того, как модель генерирует текст, какие у неё пределы памяти и как управлять её креативностью, двигаться дальше бессмысленно.