Аннотация 2
ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ 5
ВВЕДЕНИЕ 7
1 Анализ задачи разработки помощника программиста для написания сценариев
чат-ботов на языке JAICP DSL и скриптов на JavaScript 9
1.1 Язык сценариев чат-ботов JAICP DSL 9
1.2 Язык программирования JavaScript в сценариях чат-ботов 11
1.3 Code Completion 12
1.4 Состав датасета 17
2 Анализ существующих решений в области автодополнения кода с помощью
Больших Языковых Моделей 20
2.1 Обзор современных подходов к автодополнению кода 20
2.2 Ключевые исследования и их результаты 20
2.2.1 CodeXGLUE 20
2.2.2 CodeX: Evaluating LLMs Trained on Code 21
2.2.3 CodeLLAMA 22
2.2.5 DeepSeek-Coder 24
2.2.6 Qwen2.5-Coder 25
3 Метрика 27
3.1 Существующие наборы тестов для оценки моделей генерации кода 30
4 Обзор используемой архитектуры и подхода к обучению модели 34
4.1 Transformer 34
4.2 Parameter Efficient Finetuning (PEFT) 40
4.2.1 Prompt Tuning 41
4.2.2 LoRA (Low-Rank Adaptation) 41
4.3 Метод обучения Fill-In-The-Middle (FIM) 43
4.3.1 Преимущества FIM перед классическим подходом 45
4.3.2 Техническая реализация FIM в Qwen2.5-Coder 46
5 Реализация 48
5.1 Подготовка данных 48
5.2 Используемые инструменты 48
5.3 Процесс обучения модели автодополнения кода 49
5.4 Результаты на бенчмарке MultiPL-E на задаче автодополнения кода на языке
JavaScript 51
5.5 Результаты на бенчмарках LingCopilot-JS и LingCopilot-DSL 52
5.6 Результаты тестирования модели пользователями 54
6. Итоги 57
ЗАКЛЮЧЕНИЕ 58
Список литературы 59
Бизнес сталкивается с растущей потребностью в эффективных диалоговых системах двух типов:
1. Тематически ограниченные (англ. closed domain). Эти системы решают узкопрофильные задачи — от информирования о смене тарифов до мониторинга баланса счетов, требуя минимальных ресурсов на разработку, развертывание и поддержку;
2. Диалоговые систем общего назначения (англ. open domain). Обладая широким набором навыков для ведения диалогов на обширный список тем, сопряжены с экспоненциальным ростом затрат на обучение, разработку, развертывание и поддержку решения.
В основе closed domain чат-ботов находятся разработки с применением подходов на правилах (англ. rule-based).
Особое место в этом процессе занимает создание чат-ботов с использованием специализированных языков разработки, таких как JAICP DSL, где требуется глубокое понимание как технических аспектов программирования, знание языков программирования JavaScript, так и лингвистической теории. В последние годы значительный прогресс в области искусственного интеллекта и, в частности, больших языковых моделей (англ. Large Language Models, LLM) открыл новые возможности для создания интеллектуальных ассистентов способных поддерживать лингвистов- разработчиков в процессе создания как узкоспециализированных (closed domain), так и общих (open domain) диалоговых систем.
Практическая значимость исследования заключается в создании инструмента автодополнения кода, позволяющего упростить работу лингвистов-разработчиков в части создания диалоговых систем, что особенно важно в условиях растущего спроса на автоматизацию клиентского обслуживания. Теоретическая значимость состоит в разработке методологии адаптации больших языковых моделей для обучения их задаче автодополнения кода (англ. Code Completion) на узкоспециализированном языке сценариев JAICP DSL.
Целью представленной работы является разработка помощника программиста с использованием больших языковых моделей для автодополнения кода на языке JAICP DSL и языке программирования JavaScript.
Исходя из представленных выше условий, для достижения поставленной цели работы, необходимо выполнить следующие задачи.
Задачи работы:
1. Формализовать задачу в терминах известных NLP4Code подходов;
2. Подготовить датасеты для обучения и валидация LLM на задаче автодополнения кода;
3. Обучить несколько LoRa-адаптеров для open-source LLM для автодополнения кода на языке сценариев JAICP DSL и языке программирования JavaScript;
4. Сравнить показатели эффективности обученных моделей на тестовой выборке;
5. Подготовить и передать лучшую по эффективности модель в тестирование лингвистам-разработчикам.
По результатам разработки модели автодополнения кода для лингвистов-разработчиков были выделены следующие итоги:
• Обучение LoRA-адаптера (малой части весов, а не всех весов) на небольшом размере пользовательской кодовой базой позволяет кодовой LLM адаптироваться к новому языку сценариев JAICP DSL.
• Проблема ожиданий пользователей: большинство хочет, чтобы модель думала и писала код полностью за них, а не использовать модель автодополнения кода как помощника.
• Обучение единого LoRA-адаптера на датасете из примеров кода на языке сценариев JAICP DSL и JavaScript приводит к ошибкам на длинных генерациях кода, если пользователь не направляет модель, а принимает последовательно однострочные автодополнения кода.
• Обучение LoRA-адаптера для кодовой LLM на датасете кодовой базы пользователей ведёт к ощутимому ухудшению общих программистских навыков модели. Пользователям стоит помнить, когда они пишут код, что модель учиться программировать на их коде.
В качестве следующего шага, выбрано исследование применимости диффузионных языковых моделей в задаче автодополнений кода. Идея исследования вдохновлена работами: «Dream-7B» от Huawei , Mercury Coder от Inception Labs и LLADA (Large Language Diffusion Models) [14].
1. Онлайн учебник по машинному обучению от ШАД // [сайт]. [2022].
URL: https://academy.yandex.ru/handbook/ml/article/metriki-klassifikacii-i-
regressii (дата обращения: 10.04.2025).
2. Bavarian, M., et al. Efficient training of language models to fill in the middle. arXiv preprint arXiv:2207.14255. 2022.
3. Brown, T., et al. 2020. Language Models are Few-Shot Learners // arXiv preprint arXiv:2005.14165. 2020.
4. Cassano, F., et al. MultiPL-E: A Scalable and Extensible Approach to Benchmarking Neural Code Generation // arXiv preprint arXiv:2208.08227. 2022.
5. Chen, M., et al. Evaluating Large Language Models Trained on Code // arXiv preprint arXiv:2107.03374. 2021.
6. Dao, T. FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning // arXiv preprint arXiv:2307.08691. 2023.
7. Dettmers, T., Pagnoni, A., Holtzman, A., Zettlemoyer, L. QLoRA: Efficient Finetuning of Quantized LLMs // arXiv preprint arXiv:2305.14314. 2023.
8. D’Souza Andrea Renika, Di Yang, and Cristina V Lopes. Collective intelligence for smarter api recommendations in python. In Source Code Analysis and Manipulation (SCAM), 2016, IEEE 16th International Working Conference on, pp. 51-60.
9. Guo, D., et al. DeepSeek-Coder: When the Large Language Model Meets Programming--The Rise of Code Intelligence // arXiv preprint arXiv:2401.14196.
2024.
10. Hui B., Yang J., Cui Z. et al. Qwen2.5-Coder Technical Report // arXiv preprint arXiv:2409.12186. 2024.
11. Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., Chen, W. LoRA: Low-Rank Adaptation of Large Language Models // arXiv preprint arXiv:2106.09685. 2021.
12. Jurafsky, D., Martin, J. H. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition with Language Models, 3rd edition. Online manuscript, 2025. URL: https: //web.stanford.edu/~j urafsky/slp3
13. Lu, S., et al. CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation // arXiv preprint arXiv:2102.04664. 2021.
14. Nie, S., Zhu, F., You, Z., Zhang, X., Ou, J., Hu, J., Zhou, J., Lin, Y., Wen, J.-R., Li, C. Large Language Diffusion Models // arXiv preprint arXiv:2502.09992.
2025.
15. Ren, S., Guo, D., Lu, S., Zhou, L., Liu, S., Tang, D., Sundaresan, N., Zhou,
M. , Blanco, A., Ma, S. CodeBLEU: a Method for Automatic Evaluation of Code Synthesis // arXiv preprint arXiv:2009.10297. 2020...21