【要約】同じCAD操作、違う表現 — CADエージェントでDSLとコード生成をどう使い分けるか [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
CADエージェントの開発者は、操作の柔軟性と制御性のトレードオフに直面している。具体的には、以下の技術的課題が存在する。
- ・DSL方式は、未定義の操作に対応できず、ツールの追加・保守コストが高い。
- ・コード生成方式は、LLMが広範囲かつ破壊的な操作を行うリスクがある。
- ・コード生成は、エラー発生時に変更が残る「非原子性」の問題を抱える。
// Approach
筆者はFreeCADを用い、DSL方式とコード生成方式の比較実験を行った。実験では、LLMの挙動を多角的に評価するため、以下のステップで検証を進めた。
- ・難易度別のタスクによる、到達率やトークン数の定量的な比較。
- ・100形状の反復タスクによる、処理効率の検証。
- ・APIの匿名化による、LLMの学習済み知識への依存度の調査。
- ・スナップショットを用いた、コード生成時のロールバック機構の実装。
// Result
実験の結果、両方式の特性と、実務における使い分けの指針が明らかになった。得られた知見は以下の通りである。
- ・コード生成は、DSLよりトークン数を約26%削減できる。
- ・DSLは、バッチツールを追加することでコード生成と同等の効率を得られる。
- ・実務では、規律を組み込めるDSLを主軸にすべきである。
- ・コード生成は、サンドボックス内での探索用途に限定すべきである。
Senior Engineer Insight
> 制御不能なコード生成をそのまま実務に投入するのは極めて危険だ。DSLの構築は、ドメイン知識を制約付き語彙へ圧縮する高度な設計作業である。実務投入には、操作の記録、検証、そしてスナップショットによる確実なロールバック基盤の構築が不可欠である。基盤の構築コストが高いほど、DSLとしての価値は高まる。