Как я искал идеального AI-помощника для работы с кодом
Привет, Пикабу! Меня зовут Глеб, разработчик ПО с пятилетним опытом. В последнее время активно использую ИИ-инструменты в работе. Сегодня хочу поделиться своим опытом и, возможно, немного поворчать.
Начну с того, что ИИ-помощники вроде Chat GPT и Claude AI серьёзно изменили мой рабочий процесс. Они здорово выручают, когда нужно быстро набросать простую функцию или разобраться с неизвестным API. Но, чем больше я их использовал, тем чаще сталкивался с ограничениями, которые начали раздражать.
Представьте, вы работаете над большим проектом с сотнями файлов кода и сложной архитектурой. Нужно разобраться, почему метод `processUserData()` в классе `UserManager` вдруг начал возвращать `null` вместо объекта пользователя. Вы обращаетесь к Chat GPT, описываете проблему и... получаете в ответ: "Извините, но без доступа к полному коду вашего проекта я не могу точно определить причину проблемы."
Ага, спасибо большое. Очень полезно.
Или другая ситуация: вы пытаетесь оптимизировать сложный алгоритм, который распределен по нескольким классам. Вы кидаете код в Claude AI, а оно вам: "Я вижу только часть реализации. Для полного анализа мне нужно больше контекста."
И вот вы сидите и думаете: "Ну да, нужен контекст. А как его подать? Все файлы копипастить?"
После нескольких месяцев такой борьбы я начал искать альтернативы. Перепробовал кучу разных подходов: пытался предобрабатывать код, использовал специальные промпты, даже экспериментировал с API различных языковых моделей. Но везде натыкался на одну и ту же проблему: этим инструментам катастрофически не хватает понимания общего контекста проекта.
Ограничения существующих решений
Не поймите меня неправильно, Chat GPT и Claude AI - отличные помощники для многих задач. Но когда дело доходит до работы с реальными проектами, их ограничения становятся очевидными.
1. Узкое контекстное окно.
Эти модели могут обработать только небольшой объем текста за раз. Для больших проектов это просто не работает и я быстро упираюсь в лимит.
2. Отсутствие понимания структуры.
Без доступа ко всей кодовой базе Chat GPT и Claude AI не могут учесть взаимосвязи между различными частями проекта.
3. Неточные ответы.
Когда речь заходит о специфических вопросах по проекту, часто видишь: "Извините, но мне нужно больше информации". Или получаешь неверный ответ из-за слишком большого количества ненужной информации в контексте.
Я пытался обойти эти ограничения разными способами. Например, копировал весь код проекта в запрос, либо руками по частям, либо с помощью инструмента codebase_contex, который собирает весь код проекта в одном текстовом файле. Но и тут возникали проблемы:
терялась структура проекта;
большие проекты не влезали в контекстное окно.
В поисках идеального решения
После всех этих экспериментов я понял, что нужен инструмент, который может:
1. Анализировать весь проект целиком, а не отдельные куски кода.
2. Понимать структуру и взаимосвязи в проекте.
3. Давать точные ответы на конкретные вопросы о коде.
Поэтому я решил создать свой инструмент, который решил бы все мои задачи - встречайте, Documate! Он не просто анализирует отдельные файлы, а понимает весь проект в целом.
Сравнение нейросетей
Давайте сравним, как различные AI-помощники справляются с задачами, связанными с анализом кода в контексте большого проекта.
Chat GPT и подобные модели
Плюсы: Отлично справляются с общими вопросами о программировании, могут помочь с простыми задачами и объяснением концепций.
Минусы: Без контекста кодовой базы часто отвечают, что не знают правильный ответ или не могут предоставить точную информацию. Это особенно заметно при работе со специфичными для проекта вопросами.Популярная LLM + весь код репозитория
Плюсы: Частично решают проблему нехватки знаний о коде путем копирования всей кодовой базы в запрос.
Минусы: Весь код репозитория может не влезть в контекстное окно языковой модели. Также теряются важные детали о структуре проекта и взаимосвязи между компонентами.Documate
Плюсы: Создан для работы с полными кодовыми базами. Понимает структуру проекта, взаимосвязи между компонентами и дает точные ответы на конкретные вопросы о коде.
Минусы: Реализован в виде бота в Телеграм, что может быть неудобно для ряда сценариев.
Давайте сравним на паре примеров Documate и Mistral NeMo, которая видела весь контекст проекта.
Пример 1: Вопрос о специфическом методе в проекте.
Ответ Documate
Ответ Mistral NeMo
Пример 2: Анализ взаимодействия между компонентами.
Ответ Documate
Ответ Mistral NeMo
Как видно из этих примеров, Documate лучше показывает себя при работе с реальными проектами. Он возвращает ответы, основанные на полном понимании структуры проекта. В то время как популярная LLM ограничивается общими ответами или путается в попытке учесть весь контекст (в том числе ненужный).
Заключение
А что думаете вы? Сталкивались ли с подобными проблемами? Какие инструменты используете в своей работе? Пишите в комментариях.