В целом, конечно задумка очень хорошая, и человечество рано или поздно придет к какому то крутому решению благодаря синергии наработанных исследований, как это обычно и бывает.
Что у меня вызывает вопросы, это то что они пришли опять к подходу когда "большая и умная, дорогая модель в облаке" генерирует куски кода, которые "локальные и маленькие, дешевые и более глупые" Миньоны выполняют, например на данных из PDF документов, и отдают результаты большой модели для генерации ответа ❓
Направление круто, но как же сильно это все еще пахнет ужасающим недетерминизмом.
1️⃣ Во-первых, со стороны пользователя - что с безопасностью? Какими средствами и в каких средах эти модели будут запускаться локально? В Ollama? Окей. Доверяем ли мы коду который генерирует LLM?
Абсолютно не доверяем. Я - не доверяю.Не смотря на все прелести в ускорении работы, ускорению мышления (людского) с помощью всяких прекрасных моделей вроде Claude - мне не верится что в ближайшее время такие "протоколы" будут жизнеспособны и адаптированы хоть сколько нибудь массово. По крайней мере с текущим базисом.
Сейчас более верится в разработку более конкретного продукта, с локально запущенными моделями, которые четко "понимают" свою ответственность и возможности (tool-calls?), "переваривают" запрос пользователя (потенциально понимая запрос лучше чем сам пользователь) и далее по необходимости с обращением в LLM, например для предсказания итогового ответа - ну... звучит интересно! Очень даже!
2️⃣ Во-вторых, со стороны разработчика такой системы - как это вообще отлаживать? Оправдана ли сложность такой недетерминированной системы? Тут я разглагольствовать не буду, ибо кажется очевидным.
Чем больше копать сюда, тем больше возникает совершенно прикладных проблем, которые, имхо, лучше решать знакомыми и проверенными способами.
3️⃣ В-третьих, попытка общаться даже маленькими кусками кода, имею в виду не tool-calls, а как в работе выше предлагают - это уже какая никакая, но минимальная инженерия. Инженерия которая требует аналитического мышления при первых же проблемках. К такок инженерии LLM совершенно не готовы.
Поймите меня правильно, даже Cursor с последним обновлением, когда в цикле пытается "анализировать" предыдущие результаты - выдает подчас полную хрень.
Он может предложить вам удалить миграции, просто в тупую - "А давай перегенерируем!" Или откровенно галлюцинировать методами / классами из импортированных библиотек, которых там нет и отродясь не было.
У Cursor сейчас появилась возможность предлагать пользователю вызвать команду в директории проекта (в терминале) и работать дальше с ответом этой команды.
Результат такой же.
Анализ Ошибок работает так же – часто и с простыми ошибками, аннотациями типов и прочим Cursor может справиться вполне хорошо, но как только мы сталкиваемся с дебагом проблемы хоть сколько нибудь более сложного порядка, где нужно проверить 2-3 зависимости - оно утыкается в стекляный потолок своих "когнитивных возможностей".
А это, на секундочку, очень классный 3.7 с "thinking" 🤪
Тем не менее, это все очень классные штуки! Они чертовски помогают ускорять работу! Но анализировать, хоть сколько нибудь __логически__ думать LLM не может.
***
Весь "thinking" который мы наблюдаем в современных LLM, это отчаянная попытка, заслуживающая уважения попытка, заставить LLM как то генерировать "промежуточные токены" при решении поставленной задачи.
Первые попытки (те которые мы сейчас наблюдаем) - промежуточного рассуждения на естественном, человеческом языке - разбиваются как мы видим дребезги на задачках требущих рассуждения уровня junior+
Сейчас это известно как проблема токенизации - Для LLM рассуждения на наших языках ограничены дискретностью токенов, которые они формируют.
Из чего естественно получается что квантование пространства смысла решаемой задачи происходит в этих самых токенах - туда где совпала температура, туда и "падаем".
В настоящем, человеческом анализе логика и рассуждения так не работают. Ассоциативные связи не настолько примитивны.