2025-11-17T18:07:13.560068

A Matter of Representation: Towards Graph-Based Abstract Code Generation

Iskandar, Bedri, Tsen
Most large language models (LLMs) today excel at generating raw, sequential code with minimal abstractions and custom structures. However, there has been little work on graph-based abstract code generation, where significant logic is encapsulated in predefined nodes and execution flow is determined by edges. This is relevant for visual programming languages, and in cases where raw source code is inaccessible to users and LLM training sets. In this work, we propose and evaluate JSON representations for graphs to enable high accuracy graph-based abstract code generation. We evaluate these representations on ScratchTest, a mini-benchmark based on our custom Python re-implementation of Scratch, which tests the LLM in code graph space. Our findings demonstrate that LLMs can indeed perform the aforementioned generation task in a single pass without relying on specialized or complex pipelines, given the correct graph representations. We also show that different representations induce significantly different accuracies, highlighting the instrumental role of representations in this generation task. All in all, this work establishes the first steps towards representation learning for graph-based abstract code generation.
academic

Вопрос представления: К генерации абстрактного кода на основе графов

Основная информация

  • ID статьи: 2510.13163
  • Название: A Matter of Representation: Towards Graph-Based Abstract Code Generation
  • Авторы: Nyx Iskandar (UC Berkeley), Hisham Bedri (Ramen VR), Andy Tsen (Ramen VR)
  • Классификация: cs.CL (Вычислительная лингвистика)
  • Конференция: 39-я конференция Neural Information Processing Systems (NeurIPS 2025), семинар "Deep Learning for Code"
  • Ссылка на статью: https://arxiv.org/abs/2510.13163v1

Аннотация

Большинство современных больших языковых моделей (LLM) хорошо справляются с генерацией исходного последовательного кода, однако исследований в области генерации графического абстрактного кода крайне мало. Графический абстрактный код инкапсулирует важную логику в предопределённых узлах, при этом рёбра определяют поток выполнения. Такая форма кода широко распространена в языках визуального программирования и важна в случаях, когда исходный код недоступен для пользователей и обучающих наборов LLM. В данной работе предлагаются и оцениваются методы JSON-представления графов для достижения высокоточной генерации графического абстрактного кода. Авторы оценивают эти методы на ScratchTest — небольшом эталонном наборе, основанном на переимплементации Scratch на Python. Исследование показывает, что при правильном представлении графа LLM действительно могут выполнить указанную задачу за одну генерацию без использования специализированных или сложных конвейеров. Различные методы представления приводят к значительно отличающимся показателям точности, что подчёркивает критическую роль представления в данной задаче генерации.

Исследовательский контекст и мотивация

Определение проблемы

Современные LLM в области генерации кода в основном сосредоточены на генерации исходного последовательного кода, который организован линейно по строкам. Однако многие практические сценарии требуют генерации графического абстрактного кода, такие как:

  • Языки визуального программирования: Scratch, Unreal Engine Blueprints, n8n и другие
  • Высокоуровневые библиотеки и фреймворки: детали реализации инкапсулированы, пользователи могут работать только через предопределённые интерфейсы

Анализ значимости

  1. Широкое применение: графические языки программирования широко используются начинающими разработчиками, разработчиками игр и инженерами
  2. Дефицит обучающих данных: новые библиотеки и фреймворки испытывают недостаток обучающих данных, сталкиваясь с теми же проблемами абстракции, что и графический код
  3. Нелинейные отношения: графические языки вводят сложные нелинейные отношения между узлами, которые традиционное контекстное обучение не может решить

Ограничения существующих подходов

  • Методы генерации графов: GraphRNN, GraphGAN и другие сосредоточены на генерации общих графов и не подходят для функциональных графов кода
  • Фундаментальные модели графов (GFM): методы на основе GNN плохо масштабируются, методы на основе LLM чрезмерно зависят от хрупкого естественного языка
  • Модели генерации кода: в основном ориентированы на последовательный код, поддержка различных языков и фреймворков существенно различается

Основные вклады

  1. Предложены методы JSON-представления узлов: позволяют современным LLM генерировать графы кода с максимальной синтаксической и логической точностью
  2. Предложены методы JSON-представления графов кода: дополнительно повышают точность представления графов, выводимых LLM
  3. Построен эталонный набор ScratchTest: основан на переимплементации Scratch на Python, специально разработан для оценки способности к генерации графического абстрактного кода
  4. Подтверждена важность представления: доказано, что при правильном представлении в рамках однооагентной LLM-архитектуры можно значительно повысить точность генерации

Подробное описание методологии

Определение задачи

  • Входные данные: описание функциональных требований на естественном языке
  • Выходные данные: связный граф, удовлетворяющий требованиям, содержащий предопределённые узлы и отношения связей
  • Ограничения: граф должен быть ориентированным ациклическим графом (DAG) для обеспечения корректной последовательности выполнения

Дизайн эталонного набора ScratchTest

Характеристики эталонного набора

  • Количество узлов: 53 встроенных блока Scratch (из 107 блоков, реализуемых в CLI)
  • Типы узлов: движение, внешний вид, звук, события, управление, восприятие, операторы, переменные и 8 других категорий
  • Упрощённая реализация: не работает напрямую со спрайтами, оценивает функциональность через журналы поведения
  • Сохранение состояния: поддерживает словарь атрибутов спрайта (позиция, направление и т.д.)

Методология оценки

  • Тестовый набор: 20 уникальных описаний функциональности
  • Количество запусков: каждый запрос запускается независимо 5 раз
  • Критерии оценки: ручная оценка логической корректности журналов поведения и файлов Python

Дизайн методов представления

Представление эталонного узла

[NODENAME]: {
    inPorts: [{id: string, type: string}],
    fields: [{id: string, type: string}],
    outPorts: [{id: string, type: string}]
}

Ключевые компоненты:

  • NODENAME: соответствует имени блока Scratch
  • inPorts: входные порты, включая параметры и EXEC-порты (поток выполнения)
  • fields: параметры с предопределёнными вариантами
  • outPorts: выходные порты, включая возвращаемые значения, THEN-порты (последующее выполнение), SUBSTACK-порты (циклы/управление)
  • type: тип порта, предотвращает несовместимые соединения

Представление выходного графа

{
    nodes: {
        [key: string]: {
            name: string,
            value: any | null
        }
    },
    edges: [{
        outNodeID: string,
        outPortID: string,
        inNodeID: string,
        inPortID: string
    }]
}

Преимущества дизайна:

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

Постобработка

  1. Топологическая сортировка: обеспечивает ациклическое свойство графа
  2. Преобразование в Python: преобразует представление графа в реализацию Scratch на Python
  3. Инстанцирование объектов: создаёт объекты блоков Scratch и привязывает переменные
  4. Установление соединений: создаёт поток выполнения на основе THEN и EXEC портов

Экспериментальная установка

Набор данных

  • ScratchTest: 20 описаний функциональности
  • Примеры запросов:
    • "When the green flag is clicked, continuously move in a square pattern until the user presses the space key"
    • "When the 's' key is pressed, say a secret password made of two random letters and three random numbers"

Метрики оценки

  • Точность: доля корректно реализованных функций
  • Критерии оценки:
    • Разумный вывод журнала поведения
    • Логически корректный файл Python
    • Отсутствие ошибок постобработки или выполнения

Методы сравнения

Абляция представления эталонного узла

  1. No Types: минимальный базовый уровень без информации о типах портов
  2. Extra Description: добавляет описания узлов и портов на естественном языке
  3. Proposed: полное предложенное представление

Абляция представления выходного графа

  1. Alternative: альтернативное представление с информацией о рёбрах, встроенной в узлы
  2. Proposed: предложенное представление с разделением узлов и рёбер

Детали реализации

  • Основная модель: OpenAI gpt-oss-120b (платформа Groq)
  • Другие модели: qwen3-32b, deepseek-r1-distill-llama-70b, llama-3.3-70b-versatile
  • Конфигурация: Temperature=1, Max Tokens=8192, Top P=1
  • Архитектура: однооагентная, без дообучения, без контекстного обучения, без многораундового взаимодействия

Результаты экспериментов

Основные результаты

Результаты абляции представления эталонного узла

МетодСредняя точностьСтандартное отклонение
No Types0.650.071
Extra Description0.740.082
Proposed0.750.050

Статистическая значимость:

  • Proposed vs No Types: p=0.036 ≤ 0.05 (значимо)
  • Proposed vs Extra Description: p=0.82 > 0.05 (незначимо)

Результаты абляции представления выходного графа

МетодСредняя точностьСтандартное отклонение
Alternative0.490.042
Proposed0.750.050

Статистическая значимость: p=0.000024 ≤ 0.05, Proposed превосходит Alternative на 23-29%

Ключевые выводы

  1. Важность информации о типах: добавление информации о типах портов значительно повышает точность, предотвращая несовместимые соединения
  2. Ограниченная ценность описаний: описания на естественном языке не могут значительно повысить производительность и только увеличивают потребление токенов
  3. Критическая роль структуры представления: разделённое представление графа значительно превосходит встроенное представление
  4. Повышение согласованности: предложенный метод демонстрирует более стабильную производительность при множественных запусках

Типичные типы ошибок

  1. Недействительные DAG: генерация графов, содержащих циклы
  2. Ссылки на необъявленные переменные: ссылки на неопределённые переменные
  3. Ошибки подключения портов: соединение портов одного направления или забывание определения портов

Производительность других моделей

Три другие модели (qwen3-32b, deepseek-r1-distill-llama-70b, llama-3.3-70b-versatile) показали значительно худшую производительность по сравнению с gpt-oss-120b, в большинстве случаев с более низкой точностью и более высокой частотой ошибок.

Связанные работы

Понимание и генерация графов

  • Генерация общих графов: GraphRNN, GraphGAN сосредоточены на изучении распределения графов и не подходят для функциональных графов кода
  • Фундаментальные модели графов: методы на основе GNN плохо масштабируются, методы на основе LLM зависят от хрупкого естественного языка
  • Понимание графов LLM: существующие работы в основном оценивают понимание математических графов, а не логических графов кодирования

LLM-агенты для кода

  • Способности генерации кода: современные LLM хорошо справляются с традиционной генерацией кода
  • Методы улучшения: обучение с подкреплением, цепочка мышления, обучение заполнению пропусков, декодирование с ограничениями
  • Различия в производительности: существуют значительные различия в способности генерации для разных языков и фреймворков, в основном определяемые доступностью обучающих данных

Заключение и обсуждение

Основные выводы

  1. Проверка осуществимости: LLM могут выполнить генерацию графического абстрактного кода за одну генерацию
  2. Критическая роль представления: правильное JSON-представление критически важно для точности генерации
  3. Принципы дизайна: информация о типах, разделение ответственности и линейный поток генерации являются ключевыми элементами эффективного представления
  4. Установление эталонного набора: ScratchTest обеспечивает эталонный набор для оценки генерации графического кода

Ограничения

  1. Ограничение точности: даже при использовании оптимального представления точность не достигает 100%
  2. Зависимость от модели: производительность сильно зависит от способностей конкретной LLM
  3. Ограничение масштаба: в настоящее время проверено только в относительно простой области Scratch
  4. Способ оценки: зависит от ручной оценки, отсутствуют автоматизированные критерии оценки

Направления будущих исследований

  1. Оптимизация представления: исследование более оптимальных методов представления, отличных от JSON
  2. Специализированные модели: разработка моделей, специально предназначенных для пространства графов кода
  3. Многооагентные архитектуры: многораундовые методы, сочетающие планирование и исправление ошибок
  4. Крупномасштабная проверка: проверка в более сложных средах графического программирования

Глубокая оценка

Преимущества

  1. Новизна проблемы: первое систематическое исследование проблемы генерации графического абстрактного кода
  2. Простота метода: предложенный метод JSON-представления простой и эффективный, легко реализуется и расширяется
  3. Строгость экспериментов: надёжность результатов обеспечена множественными запусками и статистической проверкой
  4. Практическая ценность: обеспечивает основу для AI-ассистированной разработки языков визуального программирования

Недостатки

  1. Ограничения оценки: ручная оценка недостаточно объективна и сложна для крупномасштабного применения
  2. Размер эталонного набора: 20 тестовых случаев относительно невелики и могут быть недостаточно полными
  3. Охват моделей: результаты в основном основаны на одной модели, другие модели показали худшую производительность
  4. Теоретический анализ: отсутствует глубокий теоретический анализ того, почему некоторые представления более эффективны

Влияние

  1. Пионерский вклад: установление исследовательского базового уровня для генерации графического кода
  2. Практическое применение: может быть непосредственно применено к инструментам визуального программирования, таким как Scratch
  3. Масштабируемость: метод может быть расширен на другие среды графического программирования
  4. Вдохновляющее значение: подчёркивает важность обучения представлениям в генерации кода

Применимые сценарии

  1. Образовательная область: ассистирование генерации кода для инструментов обучения, таких как Scratch
  2. Быстрое прототипирование: автоматизация систем чертежей при разработке игр
  3. Автоматизация рабочих процессов: интеллектуальная конфигурация инструментов, таких как n8n
  4. Адаптация новых библиотек: генерация кода для новых фреймворков, испытывающих дефицит обучающих данных

Библиография

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


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