Урок по треку ИИ в работе разработчика 5 мин

Как устроены ИИ-ассистенты для кода

Автодополнение, чат и агент, контекст и окно, токены, индексация репозитория, почему ассистент ошибается уверенно.

ИИ-ассистент для кода это языковая модель плюс обвязка: плагин в IDE, который собирает контекст, отправляет запрос и показывает результат. Чтобы пользоваться им осознанно и толково отвечать на собесе, достаточно понимать несколько практических вещей. Теория трансформеров подробно разобрана в треке LLM, здесь только то, что влияет на ежедневную работу.

Три режима работы

  • Автодополнение. Модель дописывает строку или блок прямо в редакторе. Видит текущий файл и немного соседних. Быстро, дёшево, ошибки мелкие, но частые.
  • Чат. Вы задаёте вопрос, прикладываете файлы или выделенный код. Удобно для объяснений, черновиков функций, разбора ошибок.
  • Агент. Ассистент сам читает файлы, правит несколько мест, запускает команды и тесты, повторяет цикл до результата. Сильнее всего ускоряет и сильнее всего может навредить.

Чем больше автономии, тем важнее проверка. Подробнее про агентов в отдельном модуле.

Контекст решает всё

Модель не помнит ваш проект между запросами. Она знает только то, что попало в текущий запрос: системные инструкции инструмента, ваш текст, открытые и приложенные файлы, найденные куски репозитория, историю диалога.

Отсюда практические выводы:

  • Ассистент не знает про ваш внутренний хелпер, если его не показали. Он напишет свой, похожий.
  • Он не знает договорённости команды, пока они не записаны в файл правил или в запрос.
  • Длинный диалог со старыми неудачными попытками мешает: модель цепляется за них.

Окно и токены

Текст режется на токены: куски слов, символов, кода. У модели есть контекстное окно, максимум токенов на запрос вместе с ответом. Оно большое, но не бесконечное, и всё, что в него не влезло, для модели не существует.

Чтобы уложиться, инструменты делают индексацию репозитория: строят поиск по коду (часто через эмбеддинги и обычный текстовый поиск) и подкладывают в запрос самые похожие фрагменты. Поиск может промахнуться, и тогда модель работает без нужного файла.

Даже если всё влезло, качество внимания к середине длинного контекста бывает ниже, чем к началу и концу. Поэтому короткий точный контекст обычно лучше, чем «весь проект».

Токены стоят денег и времени: огромный контекст на каждый запрос замедляет ответ и расходует лимиты.

Почему ассистент ошибается уверенно

Модель генерирует правдоподобное продолжение, а не проверенный факт. Отсюда типовые ошибки:

  • Выдуманные API. Метод, который «логично было бы иметь» библиотеке, но его нет.
  • Устаревшие знания. У модели есть дата отсечки обучения. Новую версию фреймворка она может не знать и писать по старому API.
  • Смешение версий. Половина кода в стиле одной мажорной версии, половина в стиле другой.
  • Уверенный тон. Модель не сомневается вслух, даже когда ошибается.

Ответ на одинаковый запрос может отличаться от раза к разу: генерация вероятностная. Это нормально, но значит, что «в прошлый раз сработало» ничего не гарантирует.

Что модель делает хорошо и плохо

Хорошо: шаблонный код, преобразования данных, тесты по готовому примеру, перевод между языками, объяснение незнакомого кода, регулярки и SQL с последующей проверкой.

Плохо: новые библиотеки и внутренние API без документации, тонкая конкурентность, точная арифметика в уме, решения, требующие знания бизнес-контекста, который нигде не записан.

Облако или локально

Большинство ассистентов отправляет контекст на сервер провайдера. Есть и локальные модели, которые работают на машине разработчика или на сервере компании. Они слабее топовых облачных, но код не покидает периметр. Выбор между ними это вопрос политики безопасности, о нём модуль про безопасность и право.

Как это звучит на собесе

Хороший ответ показывает модель в голове: «Ассистент видит только то, что попало в контекст, поэтому я сам даю нужные файлы и правила. Он может выдумать API или писать по старой версии, поэтому всё проверяю запуском и тестами».

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.