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.

Ссылки и действия