Как можно оценить количество кода в проекте, созданного с помощью нейронных сетей?

Я занимаюсь сбором метрик из командных git-репозиториев и заметил несколько интересных трендов: некоторые команды значительно увеличивают объем кода, а другие — нет. При этом, анализируя большой объем данных, у меня возник вопрос: возможно ли определить, сколько кода было сгенерировано с помощью нейронных сетей, и используют ли команды AI в своей работе? Если используют, то в каком проценте случаев? <br/><br/> Есть ли предложения о том, как можно собрать такую метрику?
  • 31 января 2025 г. 16:54
Ответы на вопрос 4
Оценка объема кода, созданного с помощью нейронных сетей и других технологий на основе искусственного интеллекта, — это интересная и сложная задача. Вот несколько подходов, которые могут помочь вам собрать такую метрику:

1. **Анализ комментариев и метаданных коммитов**:
   - Проведите анализ комментариев в коммитах. Если разработчики упоминают использование AI или нейронных сетей, это может быть индикатором сгенерированного кода.
   - Изучите сообщения о слиянии (merge requests) и_pull requests_ на предмет упоминания инструментов/библиотек, связанных с AI.

2. **Подсчет изменений в файлах и стиля кода**:
   - Используйте анализатор кода для выявления паттернов, характерных для кода, генерируемого нейронными сетями. Например, сгенерированный код может иметь более однородный стиль или определенные шаблоны, которые можно идентифицировать.

3. **Сравнение с исходным кодом**:
   - Сравните новые строки кода с ранее существующими в репозитории. Если код выглядит значительно иначе или отходит от привычных стилей, можно предположить, что он может быть сгенерирован AI.

4. **Использование инструментов анализа кода**:
   - Есть инструменты и библиотеки (например, GitHub Copilot, OpenAI Codex), которые можно анализировать, чтобы выяснить, какой код они сгенерировали. Вы можете исследовать исходные тестовые примеры, чтобы оценить, насколько чаще команды используют эти инструменты.

5. **Опросы и обратная связь от команд**:
   - Проведите опрос среди разработчиков команд, чтобы получить информацию о том, используют ли они AI-инструменты, и в каком объеме.

6. **Машинное обучение и классификация**:
   - Создайте модель машинного обучения, которая будет способна классифицировать код на основе исторических данных. Для этого потребуется разметить небольшую выборку кода с указанием на то, какой из них сгенерирован и какой написан вручную.

7. **Тренды в использования библиотек AI**:
   - Анализируйте зависимости в проектах. Если используются библиотеки, специфичные для AI (например, TensorFlow, PyTorch и т.д.), это также может быть индикатором.

Для получения процента случаев использования AI можно передать анализ на уровне отдельных коммитов или файлов и затем экстраполировать эти данные на весь проект. Сравнение стилей кода и использования инструментов может дать вам необходимое понимание тенденций в использовании AI в проектных командах. 

Таким образом, важно комбинировать различные способы сбора данных для более точного анализа.
Просто не надо использовать "объем кода" как метрику.
Очень много кода вполне успешно и без нейронок генерируется (и даже более успешно). 

Если хочется измерить влияние ИИ, то количество кода точно не показатель
Очень ненадёжно, скорее всего это будет работать именно для программного кода но не текстов. 

Можно посмотреть на perplexity сгенерированого (точнее алгоритм похож), условно на сколько текст отличается от того что могла бы сгенерировать нейронка... примерный алгоритм:

на вход нейронной сети продается текст, какая то его начальная часть (собственно разделение исходников на блоки и создание стартового промпта и есть проблема, решив которую алгоритм будет работать как ожидается), и проверяем какая вероятность следующего токена (по тексту), условно говоря в нашем тексте "2+2=четыре" (словом не числом), и после "=" ожидаются пробел, буква "ч" или цифра 4, с разными вероятностями, запоминаем вероятность буквы "ч", так делаем для каждого токена, как то складываем собранные вероятности и получение число, чем выше, тем больше шансов что текст сгенерирован этой нейронкой?
На сколько я помню в perplexity складывают логарифмы вероятностей. Возможно лучше смотреть не на вероятность x, а на 1/x и соответственно сложить, потом разделить на количество токенов, и чем меньше результат тем лучше. Так же можно смотреть разницу между вероятность сгенерировано нейронкой токена и вероятномтьб токена из текста
Похожие вопросы