На сьогодні все більше задач аналітики даних та виконання рутинних операцій намагаються перекласти на штучний інтелект (ШІ), який демонструє значну продуктивність і точність. Останнім часом з’являються публікації, в яких наведено приклади використання ШІ на основі великих мовних моделей (Large Language Model, LLM) для виконання різноманітних завдань: від навчання на великих даних з подальшою обробкою в прикладних інформаційних системах [1] до виправлення помилок і генерації нового коду із заданими функціями.
В роботі [2] показано метод навчання моделі кодувальника-декодера на основі мільйонів виправлень помилок в історії змін проектів, розміщених на GitHub. Показано, що така модель здатна перекладати код з помилками у виправлену версію до 50% випадків.
Автори [3] представили Codex - модель мови GPT, налаштовану на загальнодоступному коді з GitHub, і вивчали її можливості для написання коду Python. Дослідження виявило низку обмежень: труднощі з рядками, які описують довгі ланцюжки із прив’язкою операцій до змінних. Однак, ідея генерації складних кодів показала безумовну перспективність.
Автори масштабного дослідження публікацій [4], пов’язаних із використанням ШІ в різних аспектах програмної інженерії, відзначають нові підходи для вирішення традиційних проблем на основі великих мовних моделей [5]. У роботі відзначено, що на сьогодні все ще потрібне загальне розуміння поточного стану, можливих цільових застосувань, практичних сценаріїв використання ШІ в програмній інженерії, неминучих обмежень, та інших проблем.
В даній роботі коротко описані результати експерименту, який мав на меті дослідити можливості відомих LLM та перевірити гіпотези про можливість розпізнання, коригування й оптимізації програмного коду, а також можливість створення оригінального коду із заданими параметрами як продукту ШІ.
Для експерименту був використаний js-файл з пакету діючого завершеного вебсайту, який розміщено на хості, без вказання URL-адреси. Файл містив 148 рядків, у тому числі коментарі щодо призначення окремих функцій та методів обробки даних. Вебсайт складався з класичного набору файлів, створених за технологіями HTML&CSS, а також JavaScript на фреймворку React. Інтерфейс користувача передбачав наявність окремих динамічних візуальних ефектів, наприклад, слайдер, масштабування зображень, внесення та елементарна обробка даних, а також забезпечення адаптивності елементів сайту, наприклад, гамбургер-меню та інше.
Зазначений файл оброблявся в GPT-4o від компанії OpenAI з метою розпізнання та подальшої оптимізації. Код завантажувався безпосередньо в чат і аналізувався шляхом ведення діалогу, в ході якого використовувався сформований список запитань, у тому числі, пропозиція щодо оптимізації коду. Відповіді містили точний аналіз коду (як завантаженого, так і згенерованого), була отримана покращена версія коду зі змінами, наприклад, вилучення зайвих перевірок та операцій, поєднання схожих операцій у функції, усунення дублювання коду та інші. Як результат, підвищено читабельність коду та його продуктивність, швидкість завантаження сторінки.
Для розширення меж експерименту аналогічне дослідження відбувалось з Gemini від Google. Діалог відбувався так само, як і в попередньому варіанті, однак, від Gemini не вдалось отримати генерацію коду, все звелось до узагальнень.
Результати з досліджених LLM показують здатність до точного розпізнання коду, написаного на JavaScript, особливостей функціоналу, а також внесення пропозицій щодо оптимізації, раціоналізації коду без втрати функціоналу. Всі моделі працювали через завантаження досліджуваного коду безпосередньо в чат. Найбільш розлогі рекомендації щодо покращення отримано від Gemini. Швидку генерацію нового коду надав GPT-4o.
Подальшими напрямками досліджень можуть бути нові версії open source LLM, а також спеціалізовані платформи, призначені для генерації програмних кодів на інших мовах програмування.
Список літератури
1. Kopishynska O., Utkin Y., Sliusar I., Muravlov V., Makhmudov K., Chip L. Application of Modern Enterprise Resource Planning Systems for Agri-Food Supply Chains as a Strategy for Reaching the Level of Industry 4.0 for Non-Manufacturing Organizations. Engineering Proceedings. 2023. Vol.40(1):15. https://doi.org/10.3390/engproc2023040015.
2. Tufano, M., Watson, C., Bavota, G., Poshyvanyk, D., Di Penta, M., Oliveto, R., & De Lucia, A. An empirical study on learning bug-fixing patches in the wild via neural machine translation. ACM Transactions on Software Engineering and Methodology (TOSEM). 2019. 28(4). Р.1-29. https://doi.org/10.48550/arXiv.1812.08693
3. Chen, M., Tworek, J., Jun, H., Yuan, Q., de Oliveira Pinto, H. P., Kaplan, J., ... & Zaremba, W. (2021). Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374. Retrieved from https://arxiv.org/abs/2107.03374
4. Kokol P. The Use of AI in Software Engineering: A Synthetic Knowledge Synthesis of the Recent Research Literature. Information. 2024. Vol. 15(6):354. https://doi.org/10.3390/info15060354.
5. Bano, M.; Hoda, R.; Zowghi, D.; Treude, C. Large Language Models for Qualitative Research in Software Engineering: Exploring Opportunities and Challenges. Automated Software Engineering. 2024. 31. (1), 1-12. https://doi.org/10.1007/s10515-023-00407-8.
|