Как заставить LLM не врать про версии
Каждый, кто много работает с LLM, сталкивался с этим: ты обсуждаешь какое-то решение с LLM, получаешь ответ с конкретным кодом или фактами — а потом выясняется, что код устарел полгода назад, и модель настаивает на использовании решений годичной давности. Или хуже: ты пишешь код с правильным современным синтаксисом, а модель тебя «поправляет» на устаревший вариант. Самое печальное, когда современная модель настаивает на то, что её самой не существует — например, Claude Opus 4.6 может утверждать, что самая новая модель Anthropic — это Sonnet 3.5, а Gemini 3.0 Pro советовала использовать новейшую модель Gemini 1.5 Pro, у нее, мол, миллионный контекст.
Это не баг конкретной модели. Это фундаментальное свойство любого LLM: модель не различает, что она «знает» из тренировки и что является актуальной реальностью. Причем данные обучения заложены в весах модели и по определению более значимы, чем ваш короткий промпт.
К сожалению, масштаб проблемы не ограничивается смешными анахронизмами, когда модель не знает, что Трамп опять президент США. Использование старого API или незнание новых вызовов в библиотеках — это в лучшем случае изобретение велосипеда, когда модель пишет код, чтобы интерпретируемым скриптом заменить встроенную функцию, о которой она не знает. Но это может стоить денег — как-то модель тихонько заменила мне вызов gpt4.1-mini на gpt-4o (мол, не существует же никакой mini), и вместо долей цента за запрос у меня начали тратиться пара центов.
