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 (계산 언어학)
  • 발표 학회: 39th Conference on Neural Information Processing Systems (NeurIPS 2025) Workshop: Deep Learning for Code
  • 논문 링크: https://arxiv.org/abs/2510.13163v1

초록

현재 대부분의 대규모 언어 모델(LLMs)은 원시적이고 순차적인 코드 생성에 탁월하지만, 그래프 기반 추상 코드 생성 연구는 매우 부족하다. 그래프 기반 추상 코드는 중요한 로직을 사전 정의된 노드에 캡슐화하고, 엣지를 통해 실행 흐름을 결정한다. 이러한 코드 형식은 시각적 프로그래밍 언어에서 일반적이며, 원본 소스 코드에 사용자와 LLM 훈련 세트가 접근할 수 없는 경우에도 중요하다. 본 논문은 그래프의 JSON 표현 방법을 제안하고 평가하여 높은 정확도의 그래프 기반 추상 코드 생성을 실현한다. 저자들은 Scratch의 Python 재구현을 기반으로 한 소규모 벤치마크인 ScratchTest에서 이러한 표현 방법들을 평가한다. 연구 결과, 올바른 그래프 표현 하에서 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 블록(CLI에서 구현 가능한 107개 중)
  • 노드 유형: 움직임, 모양, 소리, 이벤트, 제어, 감지, 연산자, 변수 등 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. 설명 정보의 제한된 가치: 자연어 설명이 성능을 현저히 향상시키지 못하며 오히려 토큰 소비 증가
  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 코드 생성, 그래프 신경망, 시각적 프로그래밍 언어 등 여러 분야의 중요한 연구를 포함하여 연구에 견고한 이론적 기초를 제공한다.


종합 평가: 이는 그래프 기반 추상 코드 생성 문제를 처음으로 체계적으로 해결한 개척적 연구이다. 평가 방법 및 이론적 분석 측면에서 개선의 여지가 있지만, 제안된 표현 방법이 단순하고 효과적이며 이 새로운 연구 방향의 중요한 기초를 마련했다. 본 연구는 강한 실용적 가치와 영감을 제공하며, 관련 분야의 추가 발전을 촉진할 것으로 예상된다.