Semantic Context: LSP усиливает понимание кода LLM
В новой статье Habr ML показано, как интеграция Language Server Protocol в автодополнение позволяет LLM учитывать типы, импорты и связи кода, повышая точность предложений.
В серии статей о улучшении автодополнения кода авторы Habr ML подошли к следующему шагу – добавлению семантического контекста. В предыдущей заметке они описали простой подход: взять код вокруг курсора, превратить его в поисковый запрос, найти похожие фрагменты через BM25 и добавить их в контекст модели. Этот метод уже дал ощутимый прирост, но оставался «текстовым» – он не учитывал структуру языка.
Новая статья Semantic Context: как LSP помогает LLM понять код раскрывает, как Language Server Protocol (LSP) может стать источником более глубоких сведений о коде. LSP предоставляет информацию о том, к какому объявлению относится импорт, какой тип имеет переменная, к какому классу принадлежит метод и т.д. Интегрировав LSP‑сервер в пайплайн автодополнения, разработчики получили возможность передавать модели не только «сырой» текст, но и символьные ссылки, типизацию и иерархию.
Ключевые шаги:
- Запуск LSP‑сервера (например, в VS Code) рядом с файлом.
- Запросы
textDocument/definition,textDocument/typeDefinitionдля каждого токена под курсором. - Формирование расширенного контекста: оригинальный фрагмент + метаданные (тип, объявление, наследование).
- Передача в LLM (any‑model, включая GPT‑4, Claude и др.) как часть промпта.
Эксперименты показали рост точности автодополнения на ≈12 % (по метрике Top‑1) и значительное снижение «мусорных» предложений. Авторы также отметили, что такой подход легко масштабируется: достаточно подключить LSP‑сервер любого языка, а затем использовать полученные данные в любой LLM‑интеграции.
Для разработчиков, использующих VS Code и LLM‑ассистенты, статья предлагает готовый набор запросов и примеры кода, что упрощает внедрение семантического контекста в собственные инструменты.
Для AI‑разработчиков это значит, что простое подключение LSP к автодополнению уже сейчас может дать ощутимый прирост качества. Студенты курсов по AI‑программированию получат практический пример, как объединять традиционные инструменты IDE и современные LLM, минимизируя «плоские» подсказки и повышая продуктивность.