大規模言語モデルの決定論的コード生成に向けた体系的アプローチ:スキャフォールディング戦略の有効性に関する研究

DOI: https://doi.org/10.5281/zenodo.18678188


要旨

本稿は、大規模言語モデル(LLM)の「機能的非決定性」という課題に対し、コード生成の信頼性を体系的に評価・改善する方法論を実験的に検証した結果を報告する。

我々は、形式言語「Sigma-Lisp」とPythonコード間の意味的一貫性を評価するベンチマークを設計し、二つの仮説を検証した。第一に、LLMに自己の誤りを分析させる「内省」アプローチの有効性を検証したが、本実験条件下では有意な改善は観測されなかった。第二に、モデルの弱点を外部から補強する「外部スキャフォールディング」アプローチを検証したところ、特定の論理誤りをプログラム的に修正する「エラー正規化」や、実装手順を詳細に記述する「誘導付きプロンプト」が有効であることが確認された。

最終的に、これらを統合した「スキャフォールディング・トリニティ」と、NL→Lisp変換で温度1.0、Lisp→Code変換で温度0.0を用いる「二段階温度設定」を組み合わせた方法論を構築した。この方法論を最も困難な「NL→Lisp→Code」パイプラインに適用した結果、gemma3:12bモデルは30タスクにおいて平均成功率100%(30/30、Clopper-Pearson法による95%信頼区間: [88.4%, 100%])を達成した。

本研究は、LLMが精密な外部ガイド下で、実行可能なコードを安定的に生成しうることを、再現可能な実験条件のもとで示すものである。


1. 緒言

1.1 背景

大規模言語モデル(LLM)はソフトウェア開発支援において顕著な成果を示しているが、同一入力に対して異なる出力を生成する「機能的非決定性」は、実用上の課題として残されている。図1に示すように、単一のプロンプトから多様な、しかし必ずしも正しくないコードが生成されうるため、特にエンジニアリング分野では再現性と安定性が強く求められる。

1.2 研究目的

本研究は、図2に示す二つの対照的なアプローチに基づき、以下の問いに答えることを目的とする。

  1. LLMは内省的プロンプトにより論理誤りを自律的に修正できるか。(図2左: 内省アプローチ)
  2. 外部からの構造的介入(スキャフォールディング)は性能安定化に寄与するか。(図2右: 外部スキャフォールディング)

本稿は観測事実の報告を目的とし、理論的普遍性を主張するものではない。

1.3 関連研究

LLMのコード生成における信頼性の研究は、大きく二つの潮流に分類できる。

1.3.1 自己修正(Self-Correction)系研究

第一の潮流は、LLMに自己の出力の誤りを検知・修正させる「内省的」アプローチである。しかし、このアプローチの有効性には限界があることが指摘されている。複雑なタスクやコード生成において、外部からのフィードバックなしでの内在的自己修正はほぼ機能しない(Kamoi et al., 2024)。LLMは自身の誤りを特定できない「自己修正盲点」(blind spot)を持ち、平均64.5%のケースで修正に失敗するという報告もある(Self-Correction Bench, 2025)。さらに、推論タスクでは自己修正が逆に性能を低下させるケースも観測されており(Huang et al., 2024)、外部知識(RAGなど)を用いた方が改善効果が高いことも示唆されている(Failure-Aware Enhancements…, 2026)。本研究のフェーズ4–6で観測された内省アプローチの失敗は、これらの知見をコード生成ドメインで実証・拡張したものである。

1.3.2 外部構造・プロンプト工学・エージェント系研究

第二の潮流は、プロンプト工学や外部ツール、エージェント・フレームワークを用いてLLMの挙動を構造化・安定化させるアプローチである。プロンプトにI/O仕様、例、曖昧さ解消などの詳細な情報を含めることで、コード生成の信頼性が大幅に向上することが経験的に知られている(Guidelines…, 2026; Prompt engineering…, 2025)。エージェント・システムもまた、外部ツールやイテレーションといった構造を利用してタスク達成率を高めている(A Survey on Code Generation with LLM-based Agents, 2025)。

本研究は、この第二の潮流に位置づけられる。特に、Lispを介したメタプログラミング(From Tool Calling…, 2025)や形式的構成推論(LLM-Based Code Translation…, 2025)の重要性が指摘される中、本研究のスキャフォールディング・トリニティは、これらのアイデアを統合・体系化したものである。本研究の新規性は、LLMエージェントのような動的な実行ループに依存せず、静的なプロンプトと外部スクリプトによる「スキャフォールディング」のみで、同等の安定性を達成した点にある。

コード生成タスクは、他の自然言語生成タスクと比較して、機能的非決定性の問題が特に顕著になる傾向がある。これは、コードが厳密な構文規則と意味論に従う必要があり、わずかな誤差がコンパイルエラーや実行時エラーに直結するためである。また、求める出力が離散的な「正解」コードであるため、曖昧さが許容される自然言語テキストとは異なり、完全一致性が強く要求される。このような生成空間の特性が、LLMの確率的な挙動と相まって、コード生成の安定化を一層困難にしている。


2. 実験設計

2.1 ベンチマーク・パイプライン

本研究では以下の二種のパイプラインを使用した:

  • Lisp⇔Code パイプライン(フェーズ1–11)
    形式言語とPythonコード間の往復変換と自己修正能力を評価。
  • NL→Lisp→Code パイプライン(フェーズ12)
    自然言語要求から形式仕様を経てコードを生成する最終評価系。

2.2 タスクセット

  • タスク数:30
  • カテゴリ:動的計画法、グラフ理論、バックトラッキング、文字列処理等
  • 平均テストケース数:約10ケース/タスク
  • 全ての実験リソース(定義・スクリプト・プロンプト)は、https://github.com/aikenkyu001/iterative_self_healing_benchmark で公開されている。

2.3 評価指標

  • 成功の定義:最大10サイクル以内に全テストケースを通過
  • 試行回数:各タスクにつき30回独立実行
  • 成功率:30試行の平均成功率

2.4 決定論的挙動の定義

本研究における「決定論的」とは、理論的決定性を主張するものではなく、以下の条件を満たす**操作的定義(operational definition)**である。

  • 温度0.0設定下で同一入力に対し、生成されたコードの出力トークンが完全一致する。
  • 生成されたコードが全Test Caseを安定して通過し、実行結果も一致する。
  • 30回の独立試行において成功率100%を達成する。
    ただし、この操作的定義はOllamaの実装依存性やGPU差異などの実行基盤依存性を完全に排除するものではない。

2.5 二段階温度設定

自然言語段階では多様性を許容し、形式仕様段階では決定性を最大化する設計とした。この全体構造を図3に示す。

2.6 再現性について

本実験の再現性を確保するため、環境設定を明記する。推論にはOllamaを介して論文中で指定されたモデルバージョンを使用した。ランダムシードは固定し、温度(T=1.0およびT=0.0)以外のLLMパラメータはデフォルト設定を採用した。詳細な実験設定、プロンプト、スクリプトを含む全ての実験リソースは、https://github.com/aikenkyu001/iterative_self_healing_benchmark で公開されている。


3. 実験結果

3.1 内省アプローチ(フェーズ4–6)

本実験条件下では内省プロンプト導入による成功例は観測されなかった。表1に示す通り、30タスク×30試行の合計900試行において成功は0回であり、成功率は著しく低下した。フェーズごとの成功率の全体的な推移を図4に示す。

表1: 内省アプローチの成功率

フェーズ戦略成功率
1–3ベースライン100%
4–6内省導入0%

3.2 外部スキャフォールディング(フェーズ7, 9)

外部スクリプトによる補正導入後、表2に示すように性能はベースラインに回復した。

表2: 外部介入による性能回復

フェーズ戦略成功率
4–6内省0%
7,9外部介入100%

3.3 最終パイプライン(フェーズ12)

最終的なNL→Lisp→Codeパイプラインにおける各モデルの性能を表3に示す。

表3: 最終パイプラインにおける各モデルの性能

モデル成功 (30試行平均)成功率
gemma3:12b30/30100%
llama3.2-vision:11b25/3083%
llama3:8b22/3073%

gemma3:12bは全試行において成功した(30/30、Clopper-Pearson法による95%信頼区間: [88.4%, 100%])。信頼区間は二項分布に基づくClopper–Pearsonの正確法(exact method)で算出した。


4. 総合考察

観測結果は、LLMの挙動安定化において、モデル自身の「内省(内在的制御)」よりも、外部からの構造的な制約やガイド(外在的制御)の方が有効である可能性を示唆する。本研究の最も重要な発見は、「内省は性能を低下させ、外部構造は性能を安定させる」という、制御理論的な対比である。

  • Specification Scaffold: 構造化された設計書。
  • Grammar Scaffold: 形式言語(Sigma-Lisp)による文法拡張。
  • Execution Scaffold: 実装指示の明示化と二段階温度設定。

SpecificationScaffoldGrammarScaffoldExecutionScaffoldLLMDeterministic Code図5: スキャフォールディング・トリニティの構成要素

本結果は特定モデルおよび特定設定下での観測事実であり、他モデルへの一般化は本研究の範囲外である。

Lispを介したメタプログラミングループでLLMの象徴的思考を強化する試みがあるように(From Tool Calling to Symbolic Thinking…, 2025)、形式言語の活用はLLMの能力を引き出す上で重要な方向性を示唆する。LLM生成コードのエラーはドメイン知識不足由来が多く、外部構造で緩和可能であることが指摘されているが(Understanding and Mitigating Errors…, 2025)、本研究のTrinityは汎用アルゴリズムタスクで同様の知見を適用し、その有効性を示した。コード翻訳には形式的な構成推論が必要であるという提言(LLM-Based Code Translation…, 2025)は、Sigma-Lispを介した二段階パイプラインが、この形式性をLLMに強制する手法として機能し、決定論的コード生成に寄与したという本研究の成果を補強する。

本研究は、LLMの能力向上ではなく、構造設計による挙動制御の可能性を示すものである。


5. 限界

  • モデルは主にgemma系とllama系に限定される。
  • プロンプトは英語のみで検証した。
  • 設計書(Specification Scaffold)は手動で構築した。
  • スキャフォールディングはタスク固有であり、一般化には追加の設計が必要である。
  • 本方法論の自動化は未検証である。

6. 結論

本実験条件下では、内省のみでは安定化しなかった。一方、外部スキャフォールディング導入後には安定した成功が観測された。

スキャフォールディング・トリニティおよび二段階温度設定の下で、gemma3:12bは30の多様なアルゴリズムタスクにおいて、操作的に定義された決定論的な成功を達成した。

本稿は観測結果の報告を目的とし、理論的普遍性の主張は行わない。今後は本方法論の自動化および他モデルへの適用検証が課題となる。本研究は、LLMの決定論的コード生成に向けた外部構造化アプローチの有効性を示し、今後のLLM信頼性研究における基盤的知見を提供するものである。


参考文献

  • Kamoi, R., et al. (2024). When Can LLMs Actually Correct Their Own Mistakes? A Critical Survey of Self-Correction of LLMs. Transactions of the Association for Computational Linguistics. arXiv:2406.01297
  • Huang, J., et al. (2024). Large Language Models Cannot Self-Correct Reasoning Yet. ICLR 2024. arXiv:2310.01798
  • [Self-Correction Bench] (2025). Self-Correction Bench: Uncovering and Addressing the Self-Correction Blind Spot in Large Language Models. arXiv:2507.02778
  • [Failure-Aware…] (2026). Failure-Aware Enhancements for Large Language Model (LLM) Code Generation: An Empirical Study on Decision Framework. arXiv:2602.02896
  • Jiang, J., et al. (2025). A Survey on Large Language Models for Code Generation. arXiv:2406.00515 (v2: 2024/11更新)
  • [Guidelines…] (2026). Guidelines to Prompt Large Language Models for Code Generation: An Empirical Characterization. arXiv:2601.13118
  • [Prompt engineering…] (2025). Prompt engineering and framework: implementation to increase code reliability based guideline for LLMs. arXiv:2506.10989
  • [A Survey on Code Generation with LLM-based Agents] (2025). A Survey on Code Generation with LLM-based Agents. arXiv:2508.00083
  • [From Tool Calling…] (2025). From Tool Calling to Symbolic Thinking: LLMs in a Persistent Lisp Metaprogramming Loop. arXiv:2506.10021
  • [Understanding…] (2025). Understanding and Mitigating Errors of LLM-Generated RTL Code. arXiv:2508.05266
  • [LLM-Based Code Translation…] (2025). LLM-Based Code Translation Needs Formal Compositional Reasoning. EECS-2025-174, UC Berkeley.

コメントする