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

Une Question de Représentation : Vers la Génération de Code Abstrait Basée sur des Graphes

Informations Fondamentales

  • ID de l'article : 2510.13163
  • Titre : A Matter of Representation: Towards Graph-Based Abstract Code Generation
  • Auteurs : Nyx Iskandar (UC Berkeley), Hisham Bedri (Ramen VR), Andy Tsen (Ramen VR)
  • Classification : cs.CL (Linguistique Computationnelle)
  • Conférence de Publication : 39e Conférence sur les Systèmes de Traitement de l'Information Neuronale (NeurIPS 2025) Atelier : Apprentissage Profond pour le Code
  • Lien de l'article : https://arxiv.org/abs/2510.13163v1

Résumé

La plupart des grands modèles de langage (LLMs) actuels excellent dans la génération de code brut et séquentiel, mais peu de recherches ont été menées sur la génération de code abstrait graphique. Le code abstrait graphique encapsule la logique importante dans des nœuds prédéfinis, avec des arêtes déterminant le flux d'exécution. Cette forme de code est courante dans les langages de programmation visuelle et importante dans les cas où le code source brut n'est pas accessible aux utilisateurs et aux ensembles d'entraînement des LLMs. Cet article propose et évalue des méthodes de représentation JSON pour les graphes, permettant une génération de code abstrait graphique de haute précision. Les auteurs évaluent ces méthodes de représentation sur ScratchTest, un petit ensemble de référence basé sur une réimplémentation Python de Scratch. L'étude révèle que, avec la bonne représentation graphique, les LLMs peuvent effectivement accomplir la tâche ci-dessus en une seule génération, sans dépendre de pipelines spécialisés ou complexes. Différentes méthodes de représentation produisent des taux de précision significativement différents, soulignant le rôle critique de la représentation dans cette tâche de génération.

Contexte et Motivation de la Recherche

Définition du Problème

Les LLMs actuels se concentrent principalement sur la génération de code brut et séquentiel, ce type de code étant organisé de manière linéaire par unités de lignes. Cependant, de nombreux scénarios d'application pratiques nécessitent une génération de code abstrait graphique, tels que :

  • Langages de programmation visuelle : Scratch, Unreal Engine Blueprints, n8n, etc.
  • Bibliothèques et frameworks hautement abstraits : les détails d'implémentation sont encapsulés, les utilisateurs ne pouvant opérer que via des interfaces prédéfinies

Analyse de l'Importance

  1. Applications Largement Répandues : Les langages de programmation graphique sont largement utilisés par les débutants, les développeurs de jeux et les ingénieurs logiciels
  2. Rareté des Données d'Entraînement : Les bibliothèques et frameworks émergents manquent de données d'entraînement suffisantes, confrontés aux mêmes défis d'abstraction que le code graphique
  3. Relations Non-Linéaires : Les langages graphiques introduisent des relations non-linéaires complexes entre nœuds, difficiles à résoudre par l'apprentissage contextuel traditionnel

Limitations des Approches Existantes

  • Méthodes de Génération de Graphes : GraphRNN, GraphGAN, etc. se concentrent sur la génération de graphes génériques, inadaptées aux graphes de code fonctionnels
  • Modèles Fondamentaux Basés sur les Graphes (GFMs) : Les méthodes basées sur GNN ont une mauvaise extensibilité, les méthodes basées sur LLM dépendent excessivement du langage naturel fragile
  • Modèles de Génération de Code : Principalement orientés vers le code séquentiel, avec une capacité de support très variable selon les langages/frameworks

Contributions Principales

  1. Proposition d'une méthode de représentation JSON pour les nœuds : Permettant aux LLMs actuels de générer des graphes de code syntaxiquement et logiquement les plus précis
  2. Proposition d'une méthode de représentation JSON pour les graphes de code : Améliorant davantage la précision de la sortie de représentation graphique des LLMs
  3. Construction de l'ensemble de référence ScratchTest : Basé sur une réimplémentation Python de Scratch, évaluant spécifiquement la capacité de génération de code abstrait graphique
  4. Vérification de l'Importance de la Représentation : Démontrant que, dans un cadre LLM monoagent, la représentation correcte peut considérablement améliorer la précision de génération

Détails de la Méthode

Définition de la Tâche

  • Entrée : Description en langage naturel des exigences fonctionnelles
  • Sortie : Graphe connexe satisfaisant les exigences, contenant les relations de connexion entre nœuds et arêtes prédéfinis
  • Contraintes : Le graphe doit être un graphe acyclique orienté (DAG), assurant une séquence d'exécution valide

Conception de l'Ensemble de Référence ScratchTest

Caractéristiques de l'Ensemble de Référence

  • Nombre de Nœuds : 53 blocs Scratch intégrés (sur 107 implémentables via CLI)
  • Types de Nœuds : 8 catégories incluant mouvement, apparence, son, événements, contrôle, perception, opérateurs, variables, etc.
  • Implémentation Simplifiée : N'opère pas directement sur les sprites, évalue les fonctionnalités via les journaux de comportement
  • Persistance d'État : Maintient un dictionnaire d'attributs de sprite (position, direction, etc.)

Méthode d'Évaluation

  • Ensemble de Test : 20 invites de description fonctionnelle uniques
  • Nombre d'Évaluations : 5 exécutions indépendantes pour chaque invite
  • Critères d'Évaluation : Évaluation manuelle de la correction logique des journaux de comportement et des fichiers Python

Conception des Méthodes de Représentation

Représentation de Nœud de Référence

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

Composants Clés :

  • NODENAME : Correspond au nom du bloc Scratch
  • inPorts : Ports d'entrée, incluant les paramètres et les ports EXEC (flux d'exécution)
  • fields : Paramètres avec options prédéfinies
  • outPorts : Ports de sortie, incluant les valeurs de retour, les ports THEN (exécution suivante), les ports SUBSTACK (boucles/contrôle)
  • type : Type de port, prévenant les connexions incompatibles

Représentation du Graphe de Sortie

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

Avantages de la Conception :

  • Séparation des Préoccupations : Les nœuds et arêtes sont définis séparément, réduisant les erreurs
  • Génération Linéaire : Définition d'abord des nœuds, puis des relations de connexion
  • Éviter la Redondance : Chaque arête n'est définie qu'une seule fois

Pipeline de Post-Traitement

  1. Tri Topologique : Assure la nature acyclique orientée du graphe
  2. Conversion Python : Convertit la représentation graphique en implémentation Scratch pythonique
  3. Instanciation d'Objets : Crée des objets de bloc Scratch et lie les variables
  4. Établissement de Connexions : Établit le flux d'exécution basé sur les ports THEN et EXEC

Configuration Expérimentale

Ensemble de Données

  • ScratchTest : 20 invites de description fonctionnelle
  • Exemples d'Invites :
    • « 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 »

Métriques d'Évaluation

  • Précision : Proportion de fonctionnalités correctement implémentées
  • Critères d'Évaluation :
    • Sortie de journal de comportement raisonnable
    • Fichier Python logiquement correct
    • Aucune erreur de post-traitement ou d'exécution

Méthodes de Comparaison

Ablation de la Représentation de Nœud de Référence

  1. No Types : Ligne de base minimale supprimant les informations de type de port
  2. Extra Description : Ajout de descriptions en langage naturel des nœuds et ports
  3. Proposed : Représentation proposée complète

Ablation de la Représentation du Graphe de Sortie

  1. Alternative : Représentation alternative avec informations d'arêtes intégrées aux nœuds
  2. Proposed : Représentation proposée séparant nœuds et arêtes

Détails d'Implémentation

  • Modèle Principal : OpenAI gpt-oss-120b (plateforme Groq)
  • Autres Modèles : qwen3-32b, deepseek-r1-distill-llama-70b, llama-3.3-70b-versatile
  • Configuration : Temperature=1, Max Tokens=8192, Top P=1
  • Cadre : Monoagent, sans affinage, sans apprentissage contextuel, sans interaction multi-tours

Résultats Expérimentaux

Résultats Principaux

Résultats d'Ablation de la Représentation de Nœud de Référence

MéthodePrécision MoyenneÉcart-Type
No Types0,650,071
Extra Description0,740,082
Proposed0,750,050

Signification Statistique :

  • Proposed vs No Types : p=0,036 ≤ 0,05 (significatif)
  • Proposed vs Extra Description : p=0,82 > 0,05 (non significatif)

Résultats d'Ablation de la Représentation du Graphe de Sortie

MéthodePrécision MoyenneÉcart-Type
Alternative0,490,042
Proposed0,750,050

Signification Statistique : p=0,000024 ≤ 0,05, Proposed améliore Alternative de 23-29%

Résultats Clés

  1. Importance des Informations de Type : L'ajout de types de port améliore significativement la précision, prévenant les connexions incompatibles
  2. Valeur Limitée des Informations Descriptives : Les descriptions en langage naturel ne peuvent pas améliorer significativement les performances, augmentant plutôt la consommation de tokens
  3. Rôle Critique de la Structure de Représentation : La représentation graphique séparatiste surpasse significativement la représentation intégrée
  4. Amélioration de la Cohérence : La méthode proposée montre des performances plus stables sur plusieurs exécutions

Types d'Erreurs Courants

  1. DAG Invalide : Génération de graphes contenant des cycles
  2. Références de Variables Non Déclarées : Référence de variables non définies
  3. Erreurs de Connexion de Ports : Connexion de ports de même direction ou oubli de définition de ports

Performance des Autres Modèles

Les trois autres modèles (qwen3-32b, deepseek-r1-distill-llama-70b, llama-3.3-70b-versatile) montrent des performances nettement inférieures à gpt-oss-120b, avec généralement des taux de précision plus faibles et des taux d'erreur plus élevés.

Travaux Connexes

Compréhension et Génération de Graphes

  • Génération de Graphes Génériques : GraphRNN, GraphGAN se concentrent sur l'apprentissage de distributions de graphes, inadaptés aux graphes de code fonctionnels
  • Modèles Fondamentaux Basés sur les Graphes : Les méthodes basées sur GNN ont une mauvaise extensibilité, les méthodes basées sur LLM dépendent du langage naturel fragile
  • Compréhension de Graphes par LLM : Les travaux existants évaluent principalement la compréhension de graphes mathématiques, non les graphes de codage logique

Agents de Code LLM

  • Capacités de Génération de Code : Les LLMs actuels excellent dans la génération de code traditionnel
  • Méthodes d'Amélioration : Apprentissage par renforcement, chaîne de pensée, entraînement par remplissage, décodage contraint, etc.
  • Différences de Performance : Variations significatives de capacité de génération selon les langages/frameworks, principalement dues à la disponibilité des données d'entraînement

Conclusion et Discussion

Conclusions Principales

  1. Vérification de Faisabilité : Les LLMs peuvent accomplir la génération de code abstrait graphique en une seule génération
  2. Rôle Critique de la Représentation : La représentation JSON correcte est cruciale pour la précision de génération
  3. Principes de Conception : Les informations de type, la séparation des préoccupations et le flux de génération linéaire sont des éléments clés d'une représentation efficace
  4. Établissement d'Ensemble de Référence : ScratchTest fournit un ensemble de référence d'évaluation pour la génération de code graphique

Limitations

  1. Limitation de Précision : Même avec la meilleure représentation, la précision n'atteint pas 100%
  2. Dépendance au Modèle : Les performances dépendent fortement des capacités spécifiques du LLM
  3. Limitation d'Échelle : Actuellement validé uniquement dans le domaine relativement simple de Scratch
  4. Méthode d'Évaluation : Dépend de l'évaluation manuelle, manquant de normes d'évaluation automatisées

Directions Futures

  1. Optimisation de la Représentation : Explorer des méthodes de représentation non-JSON plus optimales
  2. Modèles Spécialisés : Développer des modèles de génération spécialisés pour l'espace des graphes de code
  3. Cadre Multi-Agents : Combiner la planification et la correction d'erreurs dans des approches multi-tours
  4. Validation à Grande Échelle : Vérifier dans des environnements de programmation graphique plus complexes

Évaluation Approfondie

Points Forts

  1. Nouveauté du Problème : Première étude systématique du problème de génération de code abstrait graphique
  2. Simplicité de la Méthode : La méthode de représentation JSON proposée est simple et efficace, facile à implémenter et à étendre
  3. Rigueur Expérimentale : Assure la fiabilité des résultats par des exécutions multiples et des tests statistiques
  4. Valeur Pratique : Fournit une base pour le développement assisté par IA des langages de programmation visuelle

Insuffisances

  1. Limitations d'Évaluation : La méthode d'évaluation manuelle manque d'objectivité, difficile à appliquer à grande échelle
  2. Taille de l'Ensemble de Référence : 20 cas de test sont relativement peu nombreux, potentiellement insuffisants pour une couverture complète
  3. Couverture de Modèles : Les résultats sont principalement basés sur un modèle, les autres modèles montrant des performances plus faibles
  4. Analyse Théorique : Manque d'explication théorique approfondie sur pourquoi certaines représentations sont plus efficaces

Impact

  1. Contribution Pionnière : Établit une ligne de base de recherche pour la génération de code graphique
  2. Application Pratique : Peut être directement appliqué aux outils de programmation visuelle comme Scratch
  3. Extensibilité : La méthode peut être étendue à d'autres environnements de programmation graphique
  4. Signification Inspirante : Souligne l'importance de l'apprentissage de représentation dans la génération de code

Scénarios Applicables

  1. Domaine Éducatif : Assistance à la génération de code pour les outils d'enseignement comme Scratch
  2. Prototypage Rapide : Automatisation des systèmes de plans dans le développement de jeux
  3. Automatisation de Flux de Travail : Configuration intelligente d'outils comme n8n
  4. Adaptation de Nouvelles Bibliothèques : Génération de code pour les nouveaux frameworks manquant de données d'entraînement

Références

L'article cite 54 références connexes, couvrant plusieurs domaines incluant la génération de code LLM, les réseaux de neurones graphiques, les langages de programmation visuelle, etc., fournissant une base théorique solide pour la recherche.


Évaluation Globale : Ceci est un travail pionnnier qui aborde systématiquement pour la première fois le problème de la génération de code abstrait graphique. Bien qu'il y ait de la place pour l'amélioration dans les méthodes d'évaluation et l'analyse théorique, la méthode de représentation proposée est simple et efficace, établissant une base importante pour cette nouvelle direction de recherche émergente. Ce travail possède une forte valeur pratique et une signification inspirante, et devrait promouvoir le développement ultérieur des domaines connexes.