Как я искал идеального 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
Ответ Documate
Ответ Mistral NeMo
Ответ Mistral NeMo

Пример 2: Анализ взаимодействия между компонентами.

Ответ Documate
Ответ Documate
Ответ Mistral NeMo
Ответ Mistral NeMo

Как видно из этих примеров, Documate лучше показывает себя при работе с реальными проектами. Он возвращает ответы, основанные на полном понимании структуры проекта. В то время как популярная LLM ограничивается общими ответами или путается в попытке учесть весь контекст (в том числе ненужный).

Заключение

А что думаете вы? Сталкивались ли с подобными проблемами? Какие инструменты используете в своей работе? Пишите в комментариях.

55
3 комментария

А он умеет по текстовому описанию делать код, как gpt?

Ответить

Ни клод, ни гпт 4о не могут даже простейший алгоритм написать если он не тривиальный и не популярный. Банальная работа со списками - на входе один список на выходе другой, замучаешься объяснять как из первого получить второй, особенно если сам не знаешь все возможные ньюансы.

зы по теме - попробовал засунуть свой проект, попросил добавить фичу, просто еще 1 параметр в один из парсеров по сути, он явно ошибся, ушел в другой похожий файл. Уточнил(хотя в первом запросе это тоже было сказано но немного иначе) где именно надо, и получил в ответ
Поскольку файл tb.py не предоставлен в контексте, я не могу напрямую переписать функцию в этом файле. Или тупит или не поместился в контекст. Проект вообще ни разу не гигантский.

Ответить

А специализированные решения на пример GitHub Copilot(это мой выбор), GigaCode, Codium(знаю целые команды, которые его используют) и т.п.
А если требуется локальный запуск есть Tabby(https://github.com/TabbyML/tabby). К стати, тут можно выбирать модели которые потянет ваш комп и качество и скорость ответов, тоже от этого будет зависеть. Подробнее в документации решения.

Ответить