← назад к разделу

Чтобы осмысленно работать с ИИ — давать ему задачи, доверять или не доверять результату, понимать, где он ошибётся, — нужно понимать, что происходит под капотом. Не на уровне математики, а на уровне модели поведения. Большая языковая модель (LLM) устроена проще, чем кажется, и это объясняет почти все её сильные и слабые стороны.

Главное, что нужно усвоить: модель не думает и не знает — она предсказывает. Всё остальное — следствие.

Обязательно

Модель предсказывает следующий токен

В основе LLM одна операция: по уже написанному тексту предсказать, какой фрагмент идёт дальше. Этот фрагмент — токен (примерно часть слова). Модель смотрит на весь текст перед собой и выдаёт вероятности: какой токен наиболее правдоподобен следующим.

Устройство, которое так умеет, называется трансформер. Его главный приём — внимание: для каждого следующего токена модель сама взвешивает, какие куски уже написанного текста сейчас важнее. Отсюда способность держать связь между началом и концом длинного текста, а не только с предыдущим словом.

«Столица Франции — » → модель считает, что дальше с высокой вероятностью «Париж». Она подставляет его, затем повторяет процесс уже с новым текстом, токен за токеном. Так рождается ответ — не как готовая мысль, а как цепочка правдоподобных продолжений.

текст вероятности токен выбран текст вырос трансформер температура дописали новый шаг

Петля авторегрессии: смотрите, как выросший текст возвращается на вход и даёт следующий токен.

Самый вероятный токен при этом берут не всегда. Обычно следующий токен вытягивают случайно из полученного распределения, и насколько случайно — настраивается; этот параметр называют температурой. Поэтому один и тот же запрос дважды подряд даёт разные ответы: на нуле модель почти всегда берёт самое вероятное и отвечает одинаково, выше — охотнее уходит в менее ожидаемые продолжения. На правдивость это не влияет: ноль делает выдумку стабильной, а не верной.

Из этого сразу следует важное: модель выдаёт то, что похоже на правду по форме, а не то, что проверено на истинность. Обычно это совпадает — но не всегда, и в этом корень галлюцинаций.

Откуда она это «знает»

Модель обучили на огромном объёме текста — книги, код, статьи, форумы. В процессе она подстроила миллиарды внутренних параметров так, чтобы хорошо предсказывать продолжение на этих данных. В параметрах «сжались» статистические закономерности языка: грамматика, факты, стили, паттерны кода.

На этом обучение не заканчивается — и это важно. Модель, которая умеет только продолжать текст, на просьбу «напиши функцию» скорее допишет ещё три похожие просьбы, чем выполнит хоть одну. Поэтому дальше её отдельно учат выполнять инструкции и вести диалог: показывают примеры «запрос — хороший ответ» и подкрепляют те ответы, которые людям нравятся больше. Отсюда и привычка отвечать по делу, и ровный уверенный тон: тон тоже воспитан на этом этапе, он не следует из самого предсказания.

Поэтому модель:

  • Отлично воспроизводит то, что часто встречалось в обучении: типовой код, распространённые факты, стандартные формулировки.
  • Хуже с редким и новым: узкие библиотеки, свежие версии, специфика вашего проекта — этого в данных было мало или не было вовсе.
  • Не знает того, чего не было в обучении: события после даты обучения, ваш внутренний код, приватные документы — пока вы сами не дадите это в контекст.

Про дату обучения: два практических правила

У данных обучения есть граница во времени, и её называют датой среза. Из неё следуют два совета, которые экономят много недоумения.

Не спрашивайте модель о её собственной дате среза. Кажется естественным: «на каких данных ты обучена?» — и модель уверенно называет месяц. Верить этому нельзя: модель не имеет доступа к сведениям о себе, она предсказывает правдоподобный ответ на такой вопрос, и ошибается в нём регулярно — иногда на год. То же относится к вопросам «какая сейчас версия библиотеки X»: ответ будет уверенным и устаревшим. Правильный источник — страница поставщика модели, где дата написана явно.

Про версии — не спрашивайте, а давайте. Библиотеки выходят каждый месяц, и всё, что появилось после среза, для модели не существует; хуже — она уверенно ответит по старой версии, потому что та была в данных. Отсюда рабочая привычка: если важна точность по версии, кусок актуальной документации или сигнатуру метода кладут прямо в запрос. Кодовый агент решает это иначе и лучше: он смотрит ваши файлы зависимостей и ваш код, то есть работает с той версией, которая у вас на самом деле.

И следствие, о котором редко думают: модель «помнит» не только старые версии, но и старые привычки — устаревший способ что-то делать, от которого библиотека давно отказалась. Код будет рабочим и старомодным, и заметить это можно только сверкой с документацией.

Моделей много, и они разные

До этого места в статье «модель» — одна абстрактная вещь. На практике это семейства и размеры, и выбор влияет на результат сильнее, чем формулировка запроса.

Размер. Модель характеризуют числом параметров, и в одном семействе обычно есть несколько размеров: маленькие (единицы миллиардов параметров), средние (десятки), большие (сотни и больше). Больше параметров — больше «сжатого» знания и лучше рассуждение; меньше — быстрее и дешевле в разы. Разница на простой задаче (переформулировать, классифицировать, извлечь поля) почти незаметна, а на сложной (спроектировать изменение, разобрать чужой код) — принципиальна.

Назначение. Помимо размера, модели различаются тем, под что их доводили: одни заточены под код, другие под диалог, третьи под работу с изображениями и документами, четвёртые под длинные контексты. Есть и разделение по режиму: обычный ответ против режима размышления — про него в разделе «Глубже» ниже.

Открытые и закрытые. Закрытые доступны только по сети у поставщика; открытые можно скачать и запустить у себя — это важно, когда код нельзя отдавать наружу, и это отдельный разговор про железо и качество.

Что из этого нужно на первой неделе: понимать, что «ИИ ответил плохо» — часто означает «взяли маленькую модель на сложную задачу», и что обратное тоже верно: гонять большую модель на классификации — это платить за рассуждение, которое не нужно. Как выбирать под задачу и сколько это стоит — в разделе «Глубже» статьи про токены и стоимость.

Как читать название модели и где её запускать

Имена моделей выглядят шифром, но собираются из одних и тех же частей, и по имени можно понять, что перед вами, до чтения описания.

Часть имениЧто значитПримеры
поставщик и семействокто сделал и какая линейкаClaude, GPT, Gemini, Llama, Qwen, DeepSeek, Mistral, YandexGPT, GigaChat
ярус размерамаленькая, средняя или большая в семействеHaiku / Sonnet / Opus, mini / полная, Flash / Pro, Lite / Pro
число параметрову открытых моделей размер пишут прямо7B, 32B, 70B — миллиарды параметров; 8x7B — смесь экспертов: работает как средняя, весит как большая
версия и датапоколение и снимок4.5, 5; -2024-07-18 — снимок, который не меняется под вами
назначениепод что доведена-instruct или -chat выполняет инструкции (без суффикса у открытых моделей часто «сырая», которая только продолжает текст), -coder, -vision, -embedding не отвечает, а считает векторы для поиска
режиместь ли размышлениеo-серия, -thinking, R1 — модели с черновиком перед ответом
сжатиекак упакована для своего железаQ4_K_M, GGUF, AWQ — та же модель, ужатая в два-четыре раза ценой небольшой потери качества

Отсюда правило выбора на первое время. Для кодового агента и проектирования — большой или средний ярус с режимом размышления. Для классификации, извлечения полей и черновиков — маленький ярус: в десять раз дешевле и обычно не хуже на простой задаче, что проверяется набором примеров, а не впечатлением. Для поиска по документам нужна отдельная модель эмбеддингов, разговорная для этого не годится.

Запустить модель можно четырьмя способами, и различаются они не кодом, а тем, где живут данные:

  • API поставщика — ключ, адрес, оплата за токены; самые сильные модели доступны только так. Почти все говорят по протоколу OpenAI, поэтому клиент один, меняются адрес и имя модели.
  • Через посредника — один ключ на десятки моделей разных поставщиков (OpenRouter и подобные), удобно сравнивать; в России тот же приём — AI Studio у облаков с YandexGPT и открытыми моделями.
  • Локально на своей машине — Ollama, LM Studio или llama.cpp запускают открытую модель в сжатом виде: 7–8 миллиардов параметров идут на ноутбуке с 16 ГБ памяти, 70 уже требуют отдельной видеокарты. Качество ниже облачного, зато ничего не уходит наружу, и это лучший способ пощупать, как модель ведёт себя на ваших данных.
  • На своём сервере с GPU — vLLM или аналог поднимают открытую модель как сервис с тем же протоколом OpenAI; так делают, когда код и данные нельзя отдавать поставщику, и это отдельный проект про железо и эксплуатацию.

Что бы вы ни выбрали, имя модели в коде пишут со снимком даты или точной версией, а не «последняя»: иначе поведение фичи поедет без вашего коммита, о чём статья про LLM-фичи.

Почему она так хороша в языке и коде

Язык и код — это структуры с сильными закономерностями. В них многое предсказуемо: после открытой скобки обычно идёт закрытая, после сигнатуры функции — тело в определённом стиле, после «try» — «catch». Модель, натренированная предсказывать, ловит эти закономерности очень хорошо. Поэтому она бегло пишет синтаксически верный код и связный текст.

Но та же природа объясняет и предел: модель хороша в том, что выглядит правильно. Выглядит правильно и работает правильно — разные вещи. Код может компилироваться, быть в идеальном стиле и содержать логическую ошибку, потому что модель оптимизирована на правдоподобие, а не на корректность.

Масштабы: что значат «миллиарды параметров»

Слово «миллиарды» встречается в каждом тексте про модели и ничего не говорит, пока не привязано к смыслу. Четыре числа, которые полезно держать в голове.

Параметр — это одно число внутри модели, настраиваемое при обучении. Можно думать о нём как о ручке, которая задаёт, насколько один фрагмент влияет на другой. Модель с 70 миллиардами параметров — это 70 миллиардов таких чисел; в памяти при обычной точности это порядка 140 гигабайт, и отсюда сразу понятно, почему большие модели живут в центрах обработки данных, а не на ноутбуке. Модели, которые запускают локально, — это единицы миллиардов параметров и несколько гигабайт.

Объём обучающих данных измеряется в токенах, и порядок — триллионы. Для сравнения: весь текст русской Википедии — это порядка миллиарда токенов, то есть в тысячи раз меньше. Именно этот объём объясняет, почему модель «знает» типовое: типовое встречалось миллионы раз.

Цена обучения — миллионы долларов и месяцы работы тысяч ускорителей для большой модели. Это к вам не относится напрямую, но объясняет две вещи: почему моделей мало (их делают компании, а не команды) и почему модель не «дообучают» каждую неделю свежими данными — вместо этого свежее дают в контекст.

Цена одного вашего запроса — совсем другой порядок: доли копейки для короткого обращения. Разница между «обучить» и «спросить» — примерно в миллиард раз, и об этом стоит помнить, когда возникает мысль «а обучим модель на нашем коде»: обычно правильный ответ — дать контекст, а не обучать. Разбор этой развилки — в статье про контекстное окно.

Все числа здесь — порядки величины, а не точные значения: поставщики их меняют и часто не раскрывают. Важны не цифры, а соотношения: данных в тысячи раз больше, чем в любой энциклопедии; параметров столько, что модель не помещается в память обычной машины; спросить дешевле обучить в миллиард раз.

У неё нет понимания в человеческом смысле

Модель не имеет намерений, убеждений или модели мира как у человека. Она не «понимает» задачу — она продолжает текст так, как продолжали бы его люди в обучающих данных. Это не делает её бесполезной (наоборот), но задаёт правильные ожидания:

  • Она уверенно звучит и когда права, и когда ошибается — тон не сигнал истинности.
  • Она не проверяет себя по умолчанию — если не попросить и не дать инструменты. У моделей с режимом рассуждения это уже не совсем так: перед ответом они прогоняют про себя черновик размышления и там же ловят часть своих ошибок. Но и черновик остаётся предсказанием текста, а не сверкой с реальностью.
  • Она чувствительна к формулировке: как поставлен вопрос, так и продолжит.

Понимание этого — не повод не доверять ИИ, а повод строить работу правильно: давать чёткий вход, проверять выход, не принимать уверенный тон за гарантию.

Где модель не нужна

Из «предсказывает, а не считает» следует практическая развилка, о которой лучше знать до того, как потратите день. Есть задачи, для которых модель неподходящий инструмент по своему устройству, и уговорить её лучшей формулировкой нельзя.

Точный расчёт. Сложить сто чисел, сверить сумму заказа с суммой платежей, посчитать процент — модель выдаст правдоподобное число, и оно будет почти верным. «Почти» здесь и есть проблема: ошибка в последней цифре выглядит так же уверенно, как правильный ответ. Правильный ход — попросить модель написать код или запрос, который считает, и выполнить его. Современные агенты так и делают сами, и это ровно то, зачем им нужны инструменты.

Гарантированная полнота. «Найди все места, где мы обращаемся к этому полю» — модель найдёт много, но не даст гарантии, что все. Гарантию даёт поиск по тексту, а не предсказание. Поэтому поиск отдают поиску, а модели — объяснение найденного.

Уникальность и однозначность. Сгенерировать идентификатор, проверить, что значение не повторяется, выбрать единственно верный вариант из списка — это работа кода. У модели нет понятия «точно один».

Решения с юридической или денежной ценой без проверки. Не потому, что модель плохая, а потому, что стоимость её ошибки не покрывается удобством. Здесь она пишет черновик, а решение принимает человек, и это касается формулировок в договорах, расчётов к оплате, оценки рисков.

Мелочь, которую быстрее сделать самому. Переименовать переменную, дописать три строки, поправить отступ. Пока вы формулируете запрос и читаете ответ, правка уже была бы сделана — и это самая частая потеря времени у тех, кто только начал.

Общее правило простое: модель хороша там, где ответ нужно придумать, и плоха там, где его нужно вычислить или гарантировать. Задачи второго типа не отдают модели целиком — отдают вместе с инструментом, который даёт гарантию, а модель им управляет.

Дополнительно: при первом чтении можно пропустить

Глубже: температура: почему один запрос даёт разные ответырасширенное

Выше сказано, что следующий токен «вытягивают случайно из распределения». Отсюда главный сюрприз первой недели: один и тот же запрос дважды даёт разные ответы, и это не сбой.

Модель на каждом шаге считает не один токен, а вероятности для всех: «Париж» 92 %, «столица» 3 %, дальше хвост. Температура управляет тем, как из этого набора выбирают. При нуле берут самый вероятный, и ответ почти не меняется от запуска к запуску; при единице выбирают пропорционально вероятностям, и хвост иногда выпадает; выше единицы распределение сглаживается, и модель начинает «фантазировать» словами, которые сама считала маловероятными. Соседняя ручка, top-p, обрезает хвост: выбирать только среди токенов, чья суммарная вероятность набирает, скажем, 90 %.

Когда что ставить. Ноль или около него для всего, где нужен один правильный ответ: извлечение полей, классификация, код, разбор документа; агенты для кода работают именно так. Выше для задач, где нужна вариативность: варианты названий, идеи, черновики текста. Ручка не про «качество», а про разброс: при нуле модель так же уверенно ошибётся, только одинаково каждый раз.

И оговорка: даже при нуле ответы иногда различаются. Модель считает на графических картах в пакетах с чужими запросами, и округления в арифметике с плавающей точкой зависят от того, с кем в пакете оказался ваш запрос. Поэтому «повторяемый ответ» в строгом смысле у моделей не существует, и тесты LLM-фичи строят на оценке доли приемлемых ответов, а не на точном совпадении, о чём статья про основы LLM-приложений.

Глубже: режим размышлениярасширенное

Модель, описанная выше, отвечает сразу: первый токен ответа это уже первый токен ответа. У современных моделей есть второй режим, и на первой же неделе приходится выбирать между ними.

В режиме размышления модель перед ответом пишет черновик для себя: разбирает задачу, пробует ход, замечает ошибку, пробует другой, и только потом пишет ответ. Черновик вы обычно не видите или видите сокращённо, но платите за него как за выходные токены, и он бывает в разы длиннее самого ответа. Отсюда два свойства: заметно лучше на задачах с несколькими шагами и проверкой (отладка, планирование изменения в коде, задачи с расчётом, противоречивые требования) и заметно дороже и медленнее на всём остальном. У части моделей глубину размышления регулируют отдельной настройкой, от «чуть-чуть» до «сколько потребуется».

Как выбирать. Простое извлечение, классификация, переформулировка, ответ по документу: обычный режим, и он же для всего, где важна задержка (чат с пользователем, автодополнение). Разбор падающего теста, проектирование, задачи, где первый ответ обычно неверен и нужна самопроверка: режим размышления. Агенты для кода по умолчанию его используют и сами выбирают глубину по задаче. Приём «подумай шаг за шагом» в промпте, который помогал старым моделям, в режиме размышления лишний: модель и так это делает, а инструкция лишь удлиняет черновик.

И следствие для картины из этой статьи: утверждение «модель не проверяет себя» относится к обычному режиму. В режиме размышления проверка встроена, но это проверка теми же средствами, что и ответ: она ловит ошибки в логике, а не в фактах, которых модель не знает.

Коротко

  • Модель не думает и не знает, а предсказывает следующий токен по всему тексту перед собой; ответ рождается по токену за шаг.
  • Знание сжато из обучающих данных: типовое воспроизводится отлично, редкое и новое достраивается, приватное неизвестно, пока не дано в контекст.
  • Хорошо выглядящее и правильно работающее это разные вещи; уверенный тон не сигнал истинности.
  • Температура задаёт разброс выбора токена: ноль для задач с одним верным ответом, выше для вариантов; полной повторяемости нет даже при нуле.
  • Режим размышления это черновик перед ответом: лучше на многошаговых задачах, дороже как выходные токены; для простого и быстрого берут обычный режим.
  • Про дату среза модель врёт, как и про свежие версии: дату смотрят у поставщика, а актуальные сигнатуры дают в контекст или берут из своих файлов зависимостей.
  • Моделей много: размер (единицы, десятки, сотни миллиардов параметров) решает, справится ли она со сложной задачей, а «ИИ ответил плохо» часто означает «взяли маленькую модель».
  • Порядки: параметров столько, что большая модель не помещается в память машины, данных обучения триллионы токенов, обучение стоит миллионы, а один запрос — доли копейки.
  • Модель хороша там, где ответ придумывают, и плоха там, где его вычисляют или гарантируют: расчёты, полнота поиска, уникальность отдают коду, а модели — управление этим кодом.
  • Имя модели читается по частям: семейство, ярус размера или число параметров, версия со снимком даты, назначение (instruct, coder, embedding), режим размышления, сжатие; запускают через API поставщика, посредника, локально (Ollama) или на своём GPU (vLLM).

Что почитать дальше

Эта картина объясняет остальные свойства моделей. Разберите их по очереди: почему модель выдумывает факты (правдоподобие вместо истинности), что такое токены и как считается стоимость (во что обходится каждый шаг предсказания), почему важен контекст (как дать модели то, чего не было в обучении), как модель вызывает инструменты (расчёт и поиск отдают коду) и что такое агенты (предсказание, инструменты и цикл проверки вместе).