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

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

基本信息

  • 论文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 (Computational Linguistics)
  • 发表会议: 39th Conference on Neural Information Processing Systems (NeurIPS 2025) Workshop: Deep Learning for Code
  • 论文链接: https://arxiv.org/abs/2510.13163v1

摘要

当前大多数大型语言模型(LLMs)在生成原始的、顺序的代码方面表现出色,但在图形化抽象代码生成方面的研究甚少。图形化抽象代码将重要逻辑封装在预定义节点中,通过边来确定执行流程。这种代码形式在视觉编程语言中很常见,在原始源代码对用户和LLM训练集不可访问的情况下也很重要。本文提出并评估了用于图的JSON表示方法,以实现高精度的图形化抽象代码生成。作者在ScratchTest上评估这些表示方法,这是一个基于Scratch的Python重实现的小型基准测试。研究发现,在正确的图表示下,LLMs确实可以在单次生成中完成上述任务,无需依赖专门或复杂的管道。不同的表示方法会导致显著不同的准确率,突出了表示在此生成任务中的关键作用。

研究背景与动机

问题定义

当前LLMs在代码生成领域主要专注于原始的、顺序的代码生成,这类代码以行为单位按线性方式排列。然而,许多实际应用场景需要图形化的抽象代码生成,如:

  • 视觉编程语言:Scratch、Unreal Engine Blueprints、n8n等
  • 抽象程度高的库和框架:实现细节被封装,用户只能通过预定义接口操作

重要性分析

  1. 广泛应用:图形化编程语言被初学者、游戏开发者、软件工程师广泛使用
  2. 训练数据稀缺性:新兴库和框架缺乏足够的训练数据,与图形化代码面临相同的抽象挑战
  3. 非线性关系:图形化语言引入了节点间的复杂非线性关系,传统的上下文学习难以解决

现有方法局限性

  • 图生成方法:GraphRNN、GraphGAN等专注于通用图生成,不适用于功能性代码图
  • 图基础模型(GFMs):基于GNN的方法扩展性差,基于LLM的方法过度依赖脆弱的自然语言
  • 代码生成模型:主要针对顺序代码,对不同语言/框架的支持能力差异很大

核心贡献

  1. 提出了节点的JSON表示方法:使当前LLMs能够生成语法和逻辑最准确的代码图
  2. 提出了代码图的JSON表示方法:进一步提升LLMs输出图表示的准确性
  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转换:将图表示转换为Pythonic Scratch实现
  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. 描述信息的有限价值:自然语言描述不能显著提升性能,反而增加token消耗
  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代码智能体

  • 代码生成能力:当前LLMs在传统代码生成方面表现出色
  • 增强方法:强化学习、思维链、填空训练、约束解码等
  • 性能差异:不同语言/框架的生成能力存在显著差异,主要由训练数据可用性决定

结论与讨论

主要结论

  1. 可行性验证:LLMs可以在单次生成中完成图形化抽象代码生成
  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代码生成、图神经网络、视觉编程语言等多个领域的重要工作,为研究提供了坚实的理论基础。


总体评价:这是一篇开创性的工作,首次系统性地解决了图形化抽象代码生成问题。虽然在评估方法和理论分析方面还有改进空间,但其提出的表示方法简单有效,为这一新兴研究方向奠定了重要基础。该工作具有较强的实用价值和启发意义,预期会推动相关领域的进一步发展。