Как обнаружить код, написанный искусственным интеллектом, с помощью Чат-ГПТ

Автор:

Опубликовано:

Обновлено:

Мультяшный робот с антеннами сидит за столом и изучает код на экране компьютера через увеличительное стекло.

В современном мире все больше разработчиков используют инструменты искусственного интеллекта, такие как ChatGPT, для написания кода.

Это руководство поможет вам разобраться в признаках кода, написанного искусственным интеллектом, и проверить, был ли он создан ChatGPT или аналогичными инструментами искусственного интеллекта.

Вот простая подсказка, которую вы можете скопировать и использовать с ChatGPT, когда хотите проверить, был ли код написан искусственным интеллектом:

Шаблон подсказки для обнаружения кода ИИ:

Мне нужно, чтобы вы проанализировали этот фрагмент кода и определили, был ли он сгенерирован искусственным интеллектом:

[Вставить код здесь]

Пожалуйста, оцените:

  1. Структура кода и паттерны
  2. Соглашения об именовании переменных
  3. Стиль и частота комментариев
  4. Подходы к обработке ошибок
  5. Общая согласованность

Предоставьте:

  • Уровень доверия к генерации ИИ (в процентах)
  • Найдены конкретные показатели
  • Подробное объяснение причин

Общие признаки кода, сгенерированного искусственным интеллектом

1. Слишком общие имена переменных

В моделях ИИ часто используются очень простые имена переменных, такие как "data", "result" или "temp". Человеческие разработчики обычно выбирают более конкретные имена, отражающие то, что на самом деле содержит переменная. Например:

В написанном человеком коде может использоваться:

ежемесячные_продажи_всего = рассчитать_продажи(данные_за_январь)

В то время как код, сгенерированный искусственным интеллектом, может использовать:

result = calculate(data)

2. Последовательные шаблоны форматирования

ChatGPT имеет тенденцию писать код с очень последовательным форматированием. Хотя это может показаться хорошим, на самом деле это может быть подсказкой. У людей обычно есть небольшие отклонения в стиле написания кода, даже если они следуют руководствам по стилю. Код, сгенерированный искусственным интеллектом, часто выглядит "слишком идеальным" в своем форматировании.

3. Базовая обработка ошибок

Модели искусственного интеллекта обычно реализуют очень простую обработку ошибок. Они часто используют базовые блоки try-catch без конкретных типов ошибок или подробных сообщений об ошибках. Человеческие разработчики обычно включают более подробную обработку ошибок, основываясь на своем опыте решения реальных проблем.

Пример обработки ошибок, генерируемых искусственным интеллектом:

попробуйте:
    # сделать что-то
except:
    print("Произошла ошибка")

Пример написанной человеком обработки ошибок:

попробуйте:
    # сделайте что-нибудь
except FileNotFoundError:
    logger.error("Отсутствует файл конфигурации по пути: %s", config_path)
    raise ConfigurationError("Отсутствует необходимый файл конфигурации")
except PermissionError:
    logger.error("Нет разрешения на доступ к файлу: %s", config_path)
    raise AccessDeniedError("Невозможно получить доступ к файлу конфигурации")

4. Стандартные решения

ChatGPT часто предлагает наиболее распространенное или стандартное решение проблемы, даже когда могут быть лучшие альтернативы. Он склонен использовать хорошо известные шаблоны проектирования и общие библиотечные функции, а не креативные или специфические для конкретной ситуации решения.

5. Ограниченные комментарии

Код, сгенерированный ИИ, обычно содержит либо очень простые комментарии, либо слишком много очевидных комментариев. Человеческие разработчики обычно пишут комментарии, которые объясняют "почему", стоящие за сложной логикой, в то время как ИИ склонен комментировать "что", которое и так понятно из кода.

Пример комментариев, сгенерированных искусственным интеллектом:

# Пройдитесь по массиву
for i in range(len(array)):
    # Добавьте текущее число к сумме
    sum += array[i]

Пример комментариев, написанных человеком:

# Пропускайте первый элемент, чтобы избежать подсчета строки заголовка
# Предысторию см. в тикете PROJ-123
for i in range(1, len(array)):
    sum += array[i]

Общие закономерности в коде ChatGPT

1. Бойлерная плита Heavy

ChatGPT любит включать в себя много шаблонного кода. Он часто генерирует полные структуры классов и операторы импорта даже для простых примеров. Это позволяет коду выглядеть более профессионально, но в то же время более стандартизированным и менее приспособленным к конкретным потребностям.

2. Предсказуемая структура

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

3. Ограниченное использование дополнительных функций

ChatGPT, как правило, придерживается базовых языковых функций и избегает более сложных или новых языковых функций. Это связано с тем, что он был обучен на старых кодовых базах и распространенных шаблонах. Например, в Python он может не использовать новейшие функции, такие как операторы моржа или сопоставление шаблонов.

Технические методы обнаружения

Продвинутые системы обнаружения используют измерения недоумения для выявления кода, созданного ИИ. Более низкие показатели недоуменности часто указывают на создание кода ИИ, поскольку модели ИИ, как правило, создают более предсказуемые шаблоны кода.

Эффективность обнаружения зависит от длины кода. Исследования показывают, что точность обнаружения повышается при использовании более длинных образцов кода, обычно для надежного анализа требуется не менее 100 лексем.

Лучшие методы обнаружения

1. Комплексный анализ
Изучите несколько аспектов кода:

  • Распознавание образов
  • Анализ синтаксиса
  • Логические ошибки и несоответствия
  • Стиль документации

2. Учет контекста

При анализе кода учитывайте язык программирования и контекст проекта, поскольку точность обнаружения может отличаться в разных языках и фреймворках.

Как проверить, сгенерирован ли код искусственным интеллектом

1. Проверьте наличие документации

Посмотрите, как документирован код. Документация, созданная искусственным интеллектом, часто включает в себя:

  • Очень общие описания
  • Отсутствие реального контекста
  • Никаких ссылок на бизнес-логику или конкретные сценарии использования
  • Идеальное, но неглубокое форматирование

2. Ищите закономерности сложности

Код, сгенерированный искусственным интеллектом, обычно показывает эти паттерны:

  • Слишком упрощенные решения сложных проблем
  • Обработка недостающих краевых случаев
  • Основные соображения безопасности
  • Использование стандартной библиотеки вместо специализированных решений

3. Тестовые примеры ошибок

Попробуйте взломать код:

  • Предоставление неожиданного вклада
  • Тестирование крайних случаев
  • Проверка обработки ошибок
  • Посмотрите, как он обрабатывает нулевые или неопределенные значения

В таких ситуациях код, созданный искусственным интеллектом, часто дает неожиданные сбои.

Лучшие практики при использовании кода, сгенерированного искусственным интеллектом

1. Всегда пересматривайте и изменяйте

При работе с кодом, сгенерированным искусственным интеллектом, никогда не используйте его без предварительной проверки. Потратьте время на то, чтобы прочитать код и понять, что он делает.

Начните с изменения имен базовых переменных на те, которые имеют смысл для вашего проекта. При просмотре обратите внимание на то, как код обрабатывает ошибки, и улучшите его там, где это необходимо - добавьте понятные сообщения об ошибках, которые помогут вам отследить проблемы в дальнейшем.

Хорошие комментарии очень важны - пишите такие, которые объясняют, почему код работает именно так, а не только то, что он делает.

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

2. Используйте искусственный интеллект в качестве отправной точки

Воспринимайте сгенерированный ИИ код как черновик или набросок. Он дает вам хорошее начало, но вы должны его развивать.

Код инструментов искусственного интеллекта часто имеет очень базовую обработку ошибок, поэтому вам нужно будет улучшить его, добавив специальные проверки на ошибки и полезные сообщения об ошибках.

Потратьте время на тщательное изучение вопросов безопасности и добавьте дополнительную защиту там, где это необходимо. Помните, что ИИ дает вам код общего назначения, но вашему проекту нужны конкретные решения.

Добавьте надлежащее протоколирование, чтобы вы могли отслеживать, что происходит, когда код работает в реальном мире, и настроить способы контроля за тем, все ли работает правильно.

3. Документирование использования ИИ

Хорошая документация - ключевой момент при работе с кодом, сгенерированным ИИ. Добавляйте комментарии в начале секций, сгенерированных ИИ, чтобы четко обозначить их.

Когда вы вносите изменения, записывайте, что вы изменили и почему - это поможет другим разработчикам (или вам самим в будущем) лучше понять код.

Отслеживайте, какие части были написаны людьми, а какие - искусственным интеллектом. Это значительно облегчает последующее сопровождение кода.

Запишите, как вы тестировали код и какие результаты получили, чтобы все понимали, что делает код и насколько он надежен.

Помните, что ИИ - это инструмент, помогающий вам быстрее писать код, но он не должен заменять тщательную проверку и настройку под ваши конкретные нужды. Хорошая документация и тестирование так же важны для кода, сгенерированного ИИ, как и для кода, написанного человеком.

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

Об авторе

Последние сообщения