The Fools are Certain; the Wise are Doubtful: Exploring LLM Confidence in Code Completion
2508.16131v1
cs.SE, cs.AI
2025-08-26
Авторы:
Zoe Kotti, Konstantina Dritsa, Diomidis Spinellis, Panos Louridas
Резюме на русском
## Контекст
Решение проблем кода с помощью искусственного интеллекта (ИИ) является ключевым направлением в современном программном обеспечении. Code completion — задача предсказания отсутствующих элементов в коде на основе его окружающего контекста — значительно повышает производительность разработчиков и делает работу с кодом более эффективной. Однако, несмотря на развитие технологий, code completion все еще имеет ограничения, особенно при работе с нестандартными задачами и отсутствующими данными. В этом контексте возникает вопрос о том, насколько конфидентны модели Large Language Model (LLM) в своих предсказаниях при code completion. Узнать это важно, так как модель без достаточной уверенности может генерировать неточные или халтурные результаты, что может привести к ошибкам в коде.
## Метод
Чтобы изучить уверенность LLMs в code completion, авторы применяют методы измерения модельной уверенности, основанные на метриках, таких как perplexity (простота языка), entropy (информативность) и mutual information (соразмерность). Эти метрики позволяют оценить, насколько модель уверена в своих предсказаниях. Для исследования используются различные LLMs, в том числе специально настроенные на код (code LLMs). Для этих моделей анализируется время выполнения, количество ошибок, а также влияние типизации языка, синтаксических конструкций и даже комментариев на уверенность модели. Для эксперимента используются 1008 файлов из 657 проектов GitHub.
## Результаты
Исследование показало, что LLMs предсказания в code completion зависят от типа языка, его синтаксиса и структуры. Например, strongly-typed языки, такие как Java, имеют низкую perplexity, в то время как dynamically typed языки, такие как Python, имеют более высокую perplexity. Также обнаружено, что scripting языки, такие как Perl, имеют высокую perplexity, в то время как Java имеет низкую. Кроме того, комментарии в коде, как правило, увеличивают perplexity, но это не влияет на рейтинг языка в зависимости от его уверенности.
## Значимость
Эти результаты могут быть полезны для разработчиков и исследователей, которые используют LLM-based code completion в своих проектах. Например, если разработчик использует язык с высокой perplexity, он может ожидать большего числа неточных предсказаний от модели. Также, изучение влияния типизации и синтаксиса на уверенность модели помогает понять, как модель будет реагить на различные стили программирования. Эти находки могут быть использованы для оптимизации кода и лучшего понимания возможных ограничений LLMs в различных контекстах.
## Выводы
Из этого исследования следует, что уверенность LLMs в code completion зависит от многих факторов, включая тип языка, синтаксические конструкции, и даже комментарии. На основе этих результатов можно
Abstract
Code completion entails the task of providing missing tokens given a
surrounding context. It can boost developer productivity while providing a
powerful code discovery tool. Following the Large Language Model (LLM) wave,
code completion has been approached with diverse LLMs fine-tuned on code (code
LLMs). The performance of code LLMs can be assessed with downstream and
intrinsic metrics. Downstream metrics are usually employed to evaluate the
practical utility of a model, but can be unreliable and require complex
calculations and domain-specific knowledge. In contrast, intrinsic metrics such
as perplexity, entropy, and mutual information, which measure model confidence
or uncertainty, are simple, versatile, and universal across LLMs and tasks, and
can serve as proxies for functional correctness and hallucination risk in
LLM-generated code. Motivated by this, we evaluate the confidence of LLMs when
generating code by measuring code perplexity across programming languages,
models, and datasets using various LLMs, and a sample of 1008 files from 657
GitHub projects. We find that strongly-typed languages exhibit lower perplexity
than dynamically typed languages. Scripting languages also demonstrate higher
perplexity. Perl appears universally high in perplexity, whereas Java appears
low. Code perplexity depends on the employed LLM, but not on the code dataset.
Although code comments often increase perplexity, the language ranking based on
perplexity is barely affected by their presence. LLM researchers, developers,
and users can employ our findings to assess the benefits and suitability of
LLM-based code completion in specific software projects based on how language,
model choice, and code characteristics impact model confidence.
Ссылки и действия
Дополнительные ресурсы: