Содержание
- LLM в иерархии: искусственный интеллект, машинное обучение, нейросети
- Архитектура LLM: трансформер, внимание и смысл слова «большая»
- Как LLM видит текст: токены вместо букв и слов
- Как LLM выбирает следующее слово: распределение вероятностей
- Один текст, восемь LLM: счёт токенов расходится в 1,69 раза
- LLM в программировании и разработке: что она делает с кодом
- Где LLM ошибается и чем это лечат
- FAQ
Что такое LLM: как работает большая языковая модель
Черновик готовит редакция с помощью ИИ. За стандарт издания отвечает главный редактор — Валерий Курземнек.
Материал редакции Зерокодера. Числа ниже сняты собственным прогоном 11 сентября 2026 года: токенизация — библиотекой tiktoken 0.12.0, счёт токенов и цены — через API OpenRouter. Обновлено: сентябрь 2026.
LLM (large language model, большая языковая модель) — нейросеть на архитектуре «трансформер», обученная на огромном массиве текстов предсказывать следующий фрагмент слова. Такое предсказание, повторённое сотни раз подряд, и складывается в ответ: модель каждый раз собирает текст заново, вместо того чтобы искать готовую страницу в базе. Вот что такое LLM в одном определении.
Главное:
- Единица работы LLM — токен, кусок слова длиной в среднем 3–4 символа для русского языка; русское слово «программирование» модель видит как три токена
пр,ограмм,ирование. - Внутри модели лежат веса — числа, настроенные так, чтобы вероятность верного продолжения была выше остальных; готовых фактов там нет.
- На запросе «Столица Франции —» модель GPT-4.1-mini дала первому токену «П» вероятность 99,997 %, а токену «Москва» — 0,0 %.
- Один и тот же русский текст из 147 символов восемь моделей посчитали по-разному: от 35 токенов у Gemini 2.5 Flash до 59 у Claude Haiku 4.5, разброс в 1,69 раза.
- Скрипт
llm_probe.pyдля повтора всех этих замеров приведён в статье целиком.
LLM в иерархии: искусственный интеллект, машинное обучение, нейросети
Большая языковая модель — это частный случай нейросети, нейросеть — метод машинного обучения, а машинное обучение — раздел искусственного интеллекта. Вложенность строгая: всякая LLM является нейросетью, но обратное неверно — распознавание лиц, прогноз оттока клиентов и шумоподавление тоже нейросети, языковыми моделями они не являются.
Статья «Большая языковая модель» в русской Википедии (последняя правка 9 сентября 2026 года) даёт формальное определение: языковая модель на нейронной сети с множеством параметров, которая проходит предварительное обучение на обширных массивах неразмеченного текста методами самообучения, а затем подвергается тонкой настройке с обучением с подкреплением на основе отзывов людей (RLHF).
Это определение стоит читать как описание трёх стадий. Первая — предобучение: модель месяцами читает терабайты текста и учится угадывать пропущенный кусок. Вторая — дообучение на парах «инструкция — хороший ответ», после которого модель начинает отвечать на просьбы вместо продолжения оборванной фразы. Третья — RLHF, когда люди ранжируют ответы, и модель смещается к тем, которые люди оценили выше.
Отличие LLM от поисковика и базы данных проходит по тому, откуда берётся ответ. Поисковик находит существующий документ и отдаёт ссылку на него, база данных возвращает ровно ту строку, которую в неё записали. LLM порождает текст, которого до запроса не существовало, и проверить его можно только внешним источником.
В машинном обучении LLM занимает место обучения без учителя на первом этапе и с подкреплением на третьем. Отсюда её сильная и слабая стороны разом: обученная на всём подряд модель говорит про всё подряд, а проверять сказанное приходится вам. Разбор типичных сбоев лежит в материале что такое галлюцинации нейросети, а склад открытых моделей — в тексте про Hugging Face.
Архитектура LLM: трансформер, внимание и смысл слова «большая»
Архитектура LLM — трансформер, представленный в статье «Attention Is All You Need» (Vaswani и соавторы, NeurIPS 2017, arXiv:1706.03762). Главная деталь трансформера — механизм внимания: обрабатывая очередной токен, модель взвешивает все остальные токены контекста и решает, какие из них сейчас важны. Благодаря этому слово «ключ» в предложении про замок и в предложении про API получает разные векторы.
Внутри модель устроена слоями: текст превращается в числа (эмбеддинги), проходит десятки блоков внимания и полносвязных слоёв, а на выходе получается вектор размером со словарь токенизатора — по числу на каждый возможный следующий токен. Эти числа превращаются в вероятности, из которых и выбирается ответ.
Слово «большая» в названии относится к числу параметров — настраиваемых весов внутри сети. У модели Llama 3.3 70B параметров 70 миллиардов, размер прямо указан в имени; у GPT-3 их было 175 миллиардов (Brown и соавторы, arXiv:2005.14165). Размеры закрытых моделей вроде GPT-4.1, Claude и Gemini вендоры не публикуют, поэтому корректных чисел по ним нет ни у кого.
Параметры — это и есть память модели. Они занимают место на диске и в видеопамяти, поэтому запуск на своём железе упирается в размер: как это выглядит на практике, показано в инструкции как локально запустить DeepSeek R1.
Как LLM видит текст: токены вместо букв и слов
LLM не работает ни с буквами, ни со словами — только с токенами, кусками текста из заранее собранного словаря. Размер словаря мы замерили библиотекой tiktoken 0.12.0: кодировка cl100k_base (GPT-3.5 и GPT-4) содержит 100 277 токенов, кодировка o200k_base (GPT-4o и новее) — 200 019.
Русский текст режется мельче английского, потому что словари собирались в первую очередь на латинице. Наш замер 11 сентября 2026 года на одной и той же фразе:
| Текст | Символов | o200k_base |
cl100k_base |
|---|---|---|---|
| «Большая языковая модель предсказывает следующий токен по контексту.» | 67 | 17 токенов (3,94 символа на токен) | 28 токенов (2,39) |
| «A large language model predicts the next token from the context.» | 64 | 12 токенов (5,33) | 12 токенов (5,33) |
Смена кодировки с cl100k_base на o200k_base сократила счёт русской фразы с 28 токенов до 17 — в 1,65 раза, при неизменном английском счёте. Дословная разбивка той же фразы выглядит так: Больш, ая, язы, ков, ая, модель, пред, ска, зывает, следующий, ток, ен, по, конт, екст, у, ..
Отдельные слова в o200k_base распадаются так же: «программирование» — это пр + ограмм + ирование, «нейросеть» — ней + рос + еть, «Париж» — П + ари + ж, тогда как английское Paris занимает ровно один токен. Отсюда растут два практических следствия: русский текст быстрее упирается в контекстное окно и дороже стоит, а ещё модель плохо считает буквы в словах — она их попросту не видит.
Как LLM выбирает следующее слово: распределение вероятностей
Отвечая, LLM на каждом шаге получает вероятности всех токенов словаря и выбирает один. Это не метафора, вероятности можно снять через API. Прогон 11 сентября 2026 года, модель openai/gpt-4.1-mini, temperature = 0, промпт «Продолжи фразу ровно одним словом, без пояснений: «Столица Франции — »»:
| Кандидат на следующий токен | Вероятность |
|---|---|
П |
99,997 % |
Пар |
0,0017 % |
п |
0,0011 % |
Пари |
0,0001 % |
Москва |
0,0 % (ниже порога округления в 0,0001 %) |
Первое, что видно: на выходе стоит токен П — первый кусок слова «Париж», которое собирается за три шага. Второе: альтернативы существуют всегда, включая заведомо неверную «Москва», просто их вес ничтожен. На вопросе вкуса разброс шире, хотя лидер всё равно уверенный: на промпте «Лучший язык для первого проекта — » токен Python получил 98,4767 %, кириллические варианты остались в долях процента.
Параметр temperature управляет тем, насколько сильно при выборе учитывается разница вероятностей. При нуле модель почти всегда берёт верхний вариант, при значениях выше единицы охотнее спускается ниже по списку — так появляется вариативность ответов на один и тот же запрос.
Ниже датчик llm_probe.py, которым сняты все числа этого раздела. Он работает на любом ключе OpenRouter, а токенизацию считает локально:
# llm_probe.py - датчик редакции Зерокодера: как LLM видит текст и чем отвечает.
import json, math, os, sys, urllib.request
import tiktoken
RU = "Большая языковая модель предсказывает следующий токен по контексту."
EN = "A large language model predicts the next token from the context."
def tokens(text, enc_name):
enc = tiktoken.get_encoding(enc_name)
ids = enc.encode(text)
return ids, [enc.decode([i]) for i in ids]
def next_token_probs(prompt, model="openai/gpt-4.1-mini", key=os.environ.get("OPENROUTER_API_KEY", "")):
body = {"model": model, "messages": [{"role": "user", "content": prompt}],
"max_tokens": 1, "temperature": 0, "logprobs": True, "top_logprobs": 5}
req = urllib.request.Request("https://openrouter.ai/api/v1/chat/completions",
data=json.dumps(body).encode(),
headers={"Authorization": "Bearer " + key, "Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=90) as r:
d = json.loads(r.read())
top = d["choices"][0]["logprobs"]["content"][0]["top_logprobs"]
return [(t["token"], round(math.exp(t["logprob"]) * 100, 4)) for t in top], d["usage"]
if __name__ == "__main__":
for enc in ("o200k_base", "cl100k_base"):
for name, text in (("RU", RU), ("EN", EN)):
ids, parts = tokens(text, enc)
print(f"{enc} {name}: {len(text)} символов -> {len(ids)} токенов")
print(tokens("программирование", "o200k_base")[1])
print(next_token_probs("Продолжи фразу ровно одним словом, без пояснений: «Столица Франции — »")[0])
Логпробы отдают не все провайдеры: тот же запрос к meta-llama/llama-3.3-70b-instruct через DeepInfra вернул поле logprobs пустым, и вероятности оттуда снять не получилось.
Один текст, восемь LLM: счёт токенов расходится в 1,69 раза
Единого способа посчитать токены не существует — у каждого семейства моделей свой словарь. Мы отправили один и тот же русский текст из 147 символов (21 слово) восьми моделям через OpenRouter с параметром max_tokens=1 и записали, сколько промпт-токенов насчитал каждый провайдер. Рядом — контекстное окно и цена входа из каталога OpenRouter (439 моделей) на 11 сентября 2026 года.
| Модель | Токенов на нашем тексте | Контекстное окно | Вход, $ за 1 млн токенов |
|---|---|---|---|
| google/gemini-2.5-flash | 35 | 1 048 576 | 0,30 |
| mistralai/mistral-nemo | 41 | 131 072 | 0,019 |
| openai/gpt-4.1-mini | 44 | 1 047 576 | 0,40 |
| openai/gpt-4o-mini | 44 | 128 000 | 0,15 |
| deepseek/deepseek-chat-v3.1 | 45 | 163 840 | 0,25 |
| qwen/qwen-2.5-72b-instruct | 53 | 32 768 | 0,36 |
| meta-llama/llama-3.3-70b-instruct | 56 | 131 072 | 0,10 |
| anthropic/claude-haiku-4.5 | 59 | 200 000 | 1,00 |
Разброс между крайними значениями — 1,69 раза на одном и том же тексте. Оговорка к числам: prompt_tokens включает служебную обвязку чат-шаблона, у провайдеров она разная, так что таблица показывает счёт, который вам выставят; чистая длина токенизации будет чуть меньше.
Дальше эти числа превращаются в две практические величины. Деньги: при цене входа 0,40 доллара за миллион токенов страница русского текста на 3 000 символов укладывается примерно в 760 токенов и стоит три сотых цента. Объём: контекстное окно в 128 000 токенов вмещает около 504 000 символов русского текста при коэффициенте 3,94 символа на токен; английского текста в то же окно войдёт около 682 000 символов, на треть больше. Как расход токенов ведёт себя у живого агента, показано в разборе Aider CLI.
LLM в программировании и разработке: что она делает с кодом
В программировании LLM работает как модель, дообученная на исходниках, и закрывает четыре типовые задачи: автодополнение прямо в редакторе, генерация функции или теста по описанию, объяснение чужого кода, поиск причины ошибки по трейсу. Поверх них выросли агенты — программы, которые дают модели инструменты чтения файлов, запуска команд и правки проекта.
Разница между «моделью» и «агентом» практическая. Модель принимает текст и возвращает текст. Агент вокруг модели добавляет цикл: прочитать файлы, предложить правку, запустить тесты, прочитать вывод, исправиться. Отсюда и расход: контекст пересылается модели заново на каждом шаге цикла.
Ограничения в разработке следуют из механики. Модель не знает вашего репозитория, пока он не попал в контекст. Она уверенно выдумывает имена библиотечных функций, которых нет. Она теряет нить на длинных сессиях, когда старые сообщения вытесняются из окна. Поэтому рабочий режим — короткие задачи с явным контекстом и обязательный прогон тестов после каждой правки.
Выбор между закрытой моделью по API и моделью с открытыми весами сводится к трём вещам: деньги, приватность и потолок качества. Сравнение открытых вариантов собрано в обзоре зарубежных open source моделей.
Где LLM ошибается и чем это лечат
Главная ошибка LLM называется галлюцинацией: модель выдаёт правдоподобный текст с выдуманными фактами, ссылками или цитатами. Механика объясняет причину — в весах хранятся вероятности продолжений, и «похоже на правду» для модели эквивалентно «правда». Вероятность 99,997 % на токене «П» в примере со столицей Франции означает лишь то, что этот вариант чаще встречался в обучающем тексте.
Второе ограничение — отсечка знаний: модель знает мир до даты окончания обучения. Третье — зависимость от формулировки: тот же вопрос, заданный иначе, даёт другое распределение вероятностей и другой ответ. Четвёртое — приватность: всё отправленное в облачную модель уходит на чужие серверы.
Лечится это тремя приёмами. RAG (retrieval-augmented generation) кладёт в контекст найденные документы, и модель отвечает по этим документам вместо памяти весов. Дообучение на своих данных смещает стиль и терминологию под задачу. Локальный запуск закрывает вопрос приватности ценой качества и скорости.
| Что проверить перед выбором LLM | Почему это важно |
|---|---|
| Контекстное окно в токенах | Русский текст занимает примерно 3,94 символа на токен, объём документа делите на этот коэффициент |
| Цена входа и выхода | В нашей выборке из восьми моделей выход дороже входа от 1,1 раза (Qwen2.5 72B) до 8,3 раза (Gemini 2.5 Flash) |
| Открытые веса или API | Открытые веса дают локальный запуск и приватность |
| Поддержка логпробов и инструментов | Без них не построить ни замер уверенности, ни агента |
FAQ
Что такое LLM простыми словами?
LLM — большая языковая модель: нейросеть, которая по началу текста предсказывает его продолжение кусочек за кусочком. Каждый такой кусочек называется токеном. Модель ничего не ищет в интернете и не хранит готовых ответов, она собирает текст заново на каждом запросе, опираясь на веса, настроенные при обучении на терабайтах текста.
Чем LLM отличается от нейросети и искусственного интеллекта?
Искусственный интеллект — общее поле, машинное обучение — его раздел, нейросети — метод внутри машинного обучения, а LLM — вид нейросети, обученный на текстах и построенный на архитектуре «трансформер» из статьи «Attention Is All You Need» 2017 года. Нейросети для распознавания лиц или прогноза спроса языковыми моделями не являются.
Что такое токен и почему русский текст дороже?
Токен — кусок текста из словаря модели. По замеру редакции Зерокодера от 11 сентября 2026 года в кодировке o200k_base русская фраза из 67 символов заняла 17 токенов (3,94 символа на токен), английская из 64 символов — 12 токенов (5,33). Словари собирались преимущественно на латинице, поэтому кириллица режется мельче и обходится дороже.
Что LLM даёт в программировании и разработке?
Автодополнение в редакторе, генерацию функций и тестов по описанию, объяснение чужого кода, разбор ошибок по трейсу. Поверх моделей работают агенты, которые сами читают файлы и запускают команды. Модель не знает вашего репозитория, пока код не попал в контекстное окно, и может выдумать несуществующую функцию, поэтому тесты после правок обязательны.
Сколько токенов в моём тексте и как это проверить?
Точное число зависит от модели: один русский текст из 147 символов восемь моделей посчитали от 35 до 59 токенов, разброс 1,69 раза. Свой текст можно померить локально скриптом llm_probe.py из этой статьи — он использует библиотеку tiktoken и печатает разбивку на токены дословно, без обращения к платному API.
