Основанный на искусственном интеллекте ассистент GitHub Copilot уже упростил задачу программистам, но иногда он предлагает фрагменты кода, уже присутствующие в общедоступных репозиториях, и это чревато претензиями со стороны других разработчиков.
В 2022 году GitHub предложил опцию автоматической блокировки предложений, содержащих такой код, но в отдельных случаях программисты всё-таки считают нужным хотя бы ознакомиться с ним. В стремлении найти золотую середину GitHub начал тестировать функцию, которая даст пользователям такой выбор: Copilot не блокирует подобный код в автоматическом режиме, а показывает его в боковой панели, позволяя разработчику самостоятельно решать, что с ним делать. Со временем эта функция переместится в Copilot Chat.
Функцию блокировки выбрало большинство корпоративных клиентов GitHub, пояснил гендиректор платформы Томас Домке (Thomas Dohmke), включая Microsoft и сотрудников самого GitHub, но такой подход можно охарактеризовать как слишком грубый — всегда есть вероятность, что «вы воспроизводите всё, уже существует в каком-нибудь репозитории с открытым исходным кодом». Часто это касается базовых алгоритмов, например, сортировки, которая, как правило, существует в самых разных проектах. И теперь у программистов есть выбор: отказаться от предложенного фрагмента кода; использовать его напрямую, если это позволяет лицензия; или попросить Copilot переписать фрагмент, чтобы избежать полного копирования. Сейчас GitHub работает над тем, чтобы предлагаемые Copilot образцы кода заимствовались только из проектов, лицензия которых позволяет это делать.
Вероятность явного заимствования кода оказывается выше в начале проекта, когда объём контекста минимален. По мере работы над проектом Copilot всё реже предлагает фрагменты, содержащиеся в других репозиториях. В основе функции лежит очень быстрая поисковая система — в перспективе задержку планируют сократить до 10–20 мс. Система оперативно обнаруживает необходимый код и указывает его лицензию. Фрагменты приводятся в том порядке, в котором их обнаруживает поисковая система, но в GitHub говорят, что у разработчиков появятся различные варианты сортировки выдачи: по дате, по типу лицензии и по другим критериям.
Источник