Чего LLM не умеет: счёт, арифметика, свежие факты (запускаемый пример)

Чтобы пользоваться LLM с умом, надо знать её слабые места. Этот урок — честный разбор того, что модель делает плохо, и почему именно.

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

Счёт букв и символов

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

# Почему LLM путается в подсчёте букв: она видит ТОКЕНЫ, а не символы.
# Сымитируем грубую токенизацию слова на подслова.
word = "клубника"
fake_tokens = ["клуб", "ника"]  # модель "видит" слово как 2 куска

print(f"Слово: {word}")
print(f"Как его видит модель (токены): {fake_tokens}")
print(f"Букв 'к' в слове на самом деле: {word.count('к')}")
print()
print("Модель не оперирует буквами напрямую — внутри это пара токенов,")
print("поэтому 'посчитай буквы' для неё неестественная задача.")
print()
# Арифметика: модель не вычисляет, а 'вспоминает' шаблоны из текста.
a, b = 3472, 8915
print(f"{a} + {b} = {a + b}  <- это посчитал Python точно.")
print("LLM же предсказывает цифры по статистике и на больших числах ошибается.")

Вывод:

Слово: клубника
Как его видит модель (токены): ['клуб', 'ника']
Букв 'к' в слове на самом деле: 2

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

3472 + 8915 = 12387  <- это посчитал Python точно.
LLM же предсказывает цифры по статистике и на больших числах ошибается.

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

Почему арифметика — слабое место

Модель — не калькулятор. Она не выполняет алгоритм сложения, а предсказывает цифры результата как «вероятное продолжение». Для «2 + 2 =» в данных полно примеров, и она ответит «4». Для «48273 + 91864 =» точных примеров почти нет, и модель выдаёт правдоподобно выглядящее, но часто неверное число. Это не лень и не баг — у статистического генератора текста просто нет точного вычислителя внутри.

Свежие факты и дата отсечения

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

Карта слабых мест

Чего не умеетПочемуЧто делать
Точно считать символывидит токены, а не буквыдать инструмент/код для подсчёта
Надёжная арифметикаугадывает цифры, не вычисляеткалькулятор, выполнение кода
Свежие фактыдата отсечения знанийпоиск, RAG
Точные цитаты, ссылкине хранит дословнопроверять источники
Строгая логика на больших задачахнет «исполнителя» внутридекомпозиция, внешние инструменты

Как обходят эти ограничения

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

Главный вывод

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

Итог

  • Подсчёт букв труден, потому что модель видит токены, а не символы.
  • Арифметику модель не вычисляет, а угадывает по шаблонам — на больших числах ошибается.
  • Свежих фактов после даты отсечения знаний модель не знает (без внешних инструментов).
  • Решение — давать модели инструменты: калькулятор, код, поиск, RAG.
Проверьте себя
1. Почему LLM плохо считает буквы в слове?
AОна ленится
BОна видит слово как токены (подслова), а не как отдельные символы
CУ неё нет доступа к алфавиту
DЭто запрещено причинной маской
2. Почему модель ошибается в арифметике на больших числах?
AОна вычисляет, но округляет
BОна не вычисляет, а предсказывает цифры по шаблонам; для редких больших чисел примеров мало
CУ неё маленький словарь
DИз-за высокой температуры
3. Как правильнее всего получить от LLM свежие факты и точные вычисления?
AПоднять температуру
BДать модели инструменты: поиск/RAG для фактов и калькулятор/код для вычислений
CУвеличить контекстное окно до максимума
DПросить отвечать увереннее
Поддержать проект