December 10

Sorcerer - Обнаружение созданного LLM кода \ Detecting LLM Generated Code

Sorcerer GPT Generated Code Detector Tool

В современном, быстро развивающемся мире технологий ИИ активно проникают во всн сферы, включая и разработку ПО и кодинг. LLM, такие как ChatGPT от OpenAI, теперь способны генерировать код, сопоставимый с тем, как пишут живые люди (или даже круче ;) ). Хотя эта технология даёт крутые преимущества, она также вызывает вопросы об "оригинальности" и "подлинности" автора кода разработчика. Как узнать, был ли образец кода создан ИИ или человеком-программистом? Именно здесь на помощь приходит наш новый инструмент Sorcerer.

Зачем определять код, созданный ИИ?

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

Познакомьтесь с Sorcerer

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

1. Обнаружение общих шаблонов (эвристический подход)

Код, созданный ИИ, часто следует определённым шаблонам и стилям, которые часто слишком последовательны или формальны относительно того, как пишет код\комменты разработчик. Например, ИИ может использовать "простые" имена переменных, такие как counter, value, param, или включать комментарии в однородной манере. Изначально Sorcerer сканирует код на наличие этих характерных признаков:

  • "Последовательное" комментирование: ИИ склонен добавлять комментарии перед блоками кода, чтобы объяснить их функциональность.
  • Общие имена переменных: Такие названия, как temp, data или item чаще встречаются в коде, сгенерированном ИИ.
  • Однородное форматирование: ИИ обычно поддерживает последовательные отступы и пробелы во всем коде.
  • Излишняя сложность кода: ИИ часто излишне усложняет код, в отличии от человека-разработчика.

2. Анализ структуры кода

Люди естественным образом, сами того не подозревая, используют уникальные стили и иногда даже причудливые структуры в свой код. С другой стороны, ИИ стремится к ясности и последовательности, что может делать код излишне "отполированным" или, иногда, избыточно "сложным". Sorcerer оценивает:

  • Docstrings и документацию: ИИ часто включает подробные докстринги (трехкавычковые описания-строки в Python, описывающие, что делает функция).
  • Повторяющиеся шаблоны: Если одни и те же строки или структуры повторяются несколько раз, это может указывать на генерацию ИИ.
  • Сложность кода: Избыточно сложный или многословный код может быть признаком того, что ИИ старается "охватить" все аспекты поставленной задачи в коде, человек обычно ленив и не заморачивается так :).

3. Статистические взаимосвязи

Помимо шаблонов и структур, Sorcerer углубляется в базовую статистику кода:

  • Разнообразие токенов: Тут мы измеряем, насколько разнообразны слова (или токены) в коде. ИИ, в отличии от человека, может чаще использовать определенные одинаковые токены.
  • Плотность комментариев: Соотношение комментариев к общему количеству строк кода может указывать на происхождение кода ИИ\ЧЕЛОВЕК. ИИ часто добавляет больше комментариев для ясности, а человек ленив и не будет избыточно много комментировать свой код.
  • Стили PIP: ИИ часто излишне увлекается директивами PIP для формативарония кода, человек часто пренебрегает этим.

4. Использование ИИ для обнаружения кода написанного ИИ

Еще одна хитрость заключается в том, что Sorcerer может также использовать ИИ для анализа кода. Так это работает:

  • Переписывание кода с помощью ИИ: Инструмент отправляет исходный код ИИ (например в ChatGPT) и просит его переписать код.
  • Проверка сходства: Сравнивая оригинал с переписанным кодом, можно вычислить степень их сходства (фактор вариативности). Высокий показатель фактора вариативности может указывать на то, что исходный код был создан ИИ.

Этот метод добавляет дополнительный уровень уверенности в процессе обнаружения, делая результат работы Sorcerer более надежным.

На что стоит обратить внимание

Хотя Sorcerer — мощный инструмент, он не безупречен. Вот несколько моментов, которые следует учитывать:

  • Ложные положительные/отрицательные: Иногда код, написанный человеком, может выглядеть как созданный ИИ и наоборот. Всегда используйте своё суждение наряду с выводами инструмента.
  • Постоянная эволюция: Модели ИИ постоянно совершенствуются. Стоит быть в курсе последних версий ЛЛМ и при необходимости обновлять инструмент.
  • Вопросы конфиденциальности: При использовании функций на основе ИИ фрагменты кода отправляются на внешние серверы (опенаи\антропик).

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

English :

In today's rapidly evolving world of technology, AI is actively penetrating various spheres, including software dev and coding. LLMs like OpenAI's ChatGPT can now generate code comparable to human-written code. While this technology brings great advantages, it also raises questions about code authorship authenticity. How can you determine if a code sample was created by AI or a human programmer? This is where our new tool, Sorcerer, comes in.

Why detect AI-generated code?

As AI-powered development tools become more prevalent, distinguishing between human-written code and its AI-generated counterparts grows increasingly important. Whether for academic integrity, code originality verification, or quality control in software projects, having a way to identify code source can be invaluable.

Meet Sorcerer

Introducing Sorcerer, a project designed to help you determine whether a code sample was written by AI or a human. Let's explore how this tool works without delving too deep into technical details.

1. Common Pattern Detection (Heuristic Approach)

AI-generated code often follows certain patterns and styles that are too consistent or formal compared to how developers write code/comments. For example, AI might use "simple" variable names like counter, value, param, or include comments in a uniform manner. Initially, Sorcerer scans code for these characteristic signs:

  • "Consistent" commenting: AI tends to add comments before code blocks to explain their functionality
  • Common variable names: Names like temp, data, or item are more common in AI-generated code
  • Uniform formatting: AI typically maintains consistent indentation and spacing throughout the code
  • Excessive code complexity: AI often over-complicates code compared to human developers

2. Code Structure Analysiss naturally, without realizing it, incorporate unique styles and sometimes quirky structures into their code. AI, on the other hand, strives for clarity and consistency, which can make the code overly "polished" or sometimes redundantly "complex". Sorcerer evaluates:

  • Docstrings and documentation: AI often includes detailed docstrings
  • Recurring patterns: Repeated strings or structures may indicate AI generation
  • Code complexity: Overly complex or verbose code may indicate AI trying to "cover" all task aspects

3. Statistical relationships

Beyond patterns and structures, Sorcerer delves into basic code statistics:

  • Token diversity: Measuring code word (token) variety
  • Comment density: Comment-to-code ratio can indicate AI/human origin
  • PEP styles: AI often overuses PEP formatting directives

4. Using AI to detect AI-written code

Another trick is that Sorcerer can also use AI for code analysis:

  • AI code rewriting: The tool sends source code to AI (like ChatGPT) for rewriting
  • Similarity checking: Comparing original vs rewritten code calculates a variability factor

Important considerations

While Sorcerer is powerful, it's not perfect. Consider these points:

  • False positives/negatives: Sometimes human-written code may appear AI-generated and vice versa
  • Constant evolution: AI models continuously improve
  • Privacy concerns: AI-based features send code snippets to external servers

As AI continues integrating into software development, tools like Sorcerer become integral for maintaining code transparency and originality verification. Whether you're an educator, developer, or curious programmer, the ability to distinguish code source adds valuable capability to your toolkit.