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
Una Cuestión de Representación: Hacia la Generación de Código Abstracto Basado en Grafos
La mayoría de los modelos de lenguaje grandes (LLMs) actuales demuestran un desempeño excelente en la generación de código secuencial y primitivo, pero existe poca investigación sobre la generación de código abstracto graficado. El código abstracto graficado encapsula la lógica importante en nodos predefinidos, determinando el flujo de ejecución mediante aristas. Esta forma de código es común en lenguajes de programación visual y es importante en casos donde el código fuente primitivo no es accesible para usuarios ni para conjuntos de entrenamiento de LLMs. Este artículo propone y evalúa métodos de representación JSON para grafos, permitiendo la generación de código abstracto graficado con alta precisión. Los autores evalúan estos métodos de representación en ScratchTest, un pequeño conjunto de pruebas basado en una reimplementación en Python de Scratch. La investigación demuestra que, con la representación de grafo correcta, los LLMs pueden completar la tarea mencionada en una única generación, sin depender de canalizaciones especializadas o complejas. Diferentes métodos de representación resultan en tasas de precisión significativamente diferentes, destacando el papel crítico de la representación en esta tarea de generación.
Los LLMs actuales en el campo de la generación de código se enfocan principalmente en la generación de código secuencial y primitivo, código que se organiza linealmente en unidades de línea. Sin embargo, muchos escenarios de aplicación práctica requieren generación de código abstracto graficado, tales como:
Lenguajes de Programación Visual: Scratch, Unreal Engine Blueprints, n8n, etc.
Bibliotecas y Marcos de Trabajo de Alto Nivel de Abstracción: Los detalles de implementación están encapsulados, permitiendo a los usuarios operar solo a través de interfaces predefinidas
Aplicación Generalizada: Los lenguajes de programación graficada son ampliamente utilizados por principiantes, desarrolladores de juegos e ingenieros de software
Escasez de Datos de Entrenamiento: Las bibliotecas y marcos emergentes carecen de datos de entrenamiento suficientes, enfrentando los mismos desafíos de abstracción que el código graficado
Relaciones No Lineales: Los lenguajes graficados introducen relaciones no lineales complejas entre nodos, que son difíciles de resolver mediante aprendizaje contextual tradicional
Métodos de Generación de Grafos: GraphRNN, GraphGAN, etc., se enfocan en generación de grafos genéricos, inadecuados para grafos de código funcional
Modelos Fundamentales de Grafos (GFMs): Los métodos basados en GNN tienen poca escalabilidad, mientras que los métodos basados en LLM dependen excesivamente de lenguaje natural frágil
Modelos de Generación de Código: Se enfocan principalmente en código secuencial, con capacidades de soporte muy variables entre diferentes lenguajes y marcos
Propone un método de representación JSON para nodos: Permite que los LLMs actuales generen grafos de código con la máxima precisión sintáctica y lógica
Propone un método de representación JSON para grafos de código: Mejora aún más la precisión de la salida de representación de grafos de los LLMs
Construye el conjunto de pruebas ScratchTest: Basado en una reimplementación en Python de Scratch, evaluando específicamente la capacidad de generación de código abstracto graficado
Valida la importancia de la representación: Demuestra que, bajo un marco de LLM de un solo agente, la representación correcta puede mejorar significativamente la tasa de precisión de generación
Importancia de la Información de Tipo: Añadir tipos de puerto mejora significativamente la precisión, previniendo conexiones incompatibles
Valor Limitado de la Información Descriptiva: Las descripciones en lenguaje natural no mejoran significativamente el desempeño, aumentando el consumo de tokens
Papel Crítico de la Estructura de Representación: La representación de grafo separada es significativamente superior a la representación incrustada
Mejora de Consistencia: El método propuesto demuestra un desempeño más estable en múltiples ejecuciones
Los otros tres modelos (qwen3-32b, deepseek-r1-distill-llama-70b, llama-3.3-70b-versatile) demuestran un desempeño notablemente inferior a gpt-oss-120b, con tasas de precisión generalmente más bajas y tasas de error más altas en la mayoría de los casos.
Generación de Grafos Genéricos: GraphRNN, GraphGAN se enfocan en aprender distribuciones de grafos, inadecuados para grafos de código funcional
Modelos Fundamentales de Grafos: Los métodos basados en GNN tienen poca escalabilidad, mientras que los métodos basados en LLM dependen de lenguaje natural frágil
Comprensión de Grafos por LLM: El trabajo existente se enfoca principalmente en comprensión de grafos matemáticos, no en grafos de codificación lógica
Capacidades de Generación de Código: Los LLMs actuales demuestran excelente desempeño en generación de código tradicional
Métodos de Mejora: Aprendizaje por refuerzo, cadena de pensamiento, entrenamiento de relleno, decodificación con restricciones, etc.
Diferencias de Desempeño: Existen diferencias significativas en capacidades de generación entre diferentes lenguajes y marcos, principalmente determinadas por disponibilidad de datos de entrenamiento
Validación de Viabilidad: Los LLMs pueden completar generación de código abstracto graficado en una única generación
Papel Crítico de la Representación: La representación JSON correcta es crucial para la precisión de generación
Principios de Diseño: Información de tipo, separación de responsabilidades y flujo de generación lineal son elementos clave de una representación efectiva
Establecimiento de Conjunto de Pruebas: ScratchTest proporciona un conjunto de pruebas para evaluación de generación de código graficado
El artículo cita 54 referencias relacionadas, cubriendo múltiples campos incluyendo generación de código LLM, redes neuronales de grafos y lenguajes de programación visual, proporcionando una base teórica sólida para la investigación.
Evaluación General: Este es un trabajo pionero que aborda sistemáticamente por primera vez el problema de generación de código abstracto graficado. Aunque hay espacio para mejora en métodos de evaluación y análisis teórico, el método de representación propuesto es simple y efectivo, estableciendo una base importante para esta nueva dirección de investigación. Este trabajo tiene un fuerte valor práctico y significado inspirador, con expectativa de impulsar desarrollo adicional en campos relacionados.