Чего 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.