[Paper] 利用 LLMs 进行多文件 DSL 代码生成:工业案例研究
发布: (2026年4月28日 GMT+8 00:38)
7 分钟阅读
原文: arXiv
Source: arXiv - 2604.24678v1
概述
本文研究了如何使用大型语言模型(LLM)生成和修改跨多个文件和目录的**领域特定语言(DSL)**代码。作者在宝马公司进行了一项真实案例研究,将两个开源面向代码的 LLM 适配,以从单一自然语言指令生成仓库规模的 DSL 产物,并通过自动化指标和开发者调查对该方法进行评估。
关键贡献
- 端到端管道,将使用 Xtext 构建的工业 DSL 转换为可训练的多文件生成任务。
- 保持路径的 JSON 表示 DSL 文件夹层次结构,使单个 LLM 响应能够覆盖整个仓库并捕获跨文件依赖。
- 经验比较 三种提示策略——基线、一 shot 上下文和参数高效微调(QLoRA)——在两个 7‑B 代码 LLM(Qwen2.5‑Coder、DeepSeek‑Coder)上的表现。
- 新评估指标 超越 BLEU/ROUGE,衡量精确编辑正确性、生成文件树的结构保真度以及下游代码生成器的成功率。
- 工业验证 通过开发者调查和执行检查,将生成的 DSL 通过现有的 Java/TypeScript 代码生成器运行。
方法论
- 数据集构建 – 团队从 BMW 的仓库中提取历史 DSL 变更,将每个自然语言变更请求(例如 “add a new vehicle type with X properties”)与前后 DSL 文件配对。
- 多文件任务编码 – 每个变更序列化为一个 JSON 对象,键为文件路径,值为文件内容。这样既显式保留目录结构,又能在 LLM 的上下文窗口内处理。
- 模型适配 –
- 基线提示:一个简单的 “Generate the DSL files for …” 提示。
- 单例上下文:提示前加上一个自然语言 → JSON 映射的示例。
- QLoRA 微调:在收集的数据集上进行轻量、参数高效的微调(约占模型权重的 0.5 %)。
- 评估 –
- 相似度指标(BLEU、CodeBLEU)用于表面相似性。
- 任务特定指标:编辑的精确匹配、结构保真度(生成的树是否与预期文件布局匹配?)、以及下游编译成功率。
- 人工验证:12 位 BMW 开发者对生成的产物有用性进行评分;其中一部分被送入现有的基于 Xtext 的代码生成器,以确认下游的 Java/TS 代码仍能成功构建。
结果与发现
| 模型 / 配置 | 精确匹配准确率 | 编辑相似度 (CodeBLEU) | 结构保真度 |
|---|---|---|---|
| Qwen2.5‑Coder – Baseline | 38 % | 0.42 | 0.78 |
| Qwen2.5‑Coder – One‑shot | 45 % | 0.48 | 0.84 |
| Qwen2.5‑Coder – QLoRA | 71 % | 0.71 | 1.00 |
| DeepSeek‑Coder – Baseline | 34 % | 0.39 | 0.73 |
| DeepSeek‑Coder – One‑shot | 41 % | 0.45 | 0.80 |
| DeepSeek‑Coder – QLoRA | 68 % | 0.68 | 1.00 |
关键要点
- 微调(QLoRA)带来最大提升——在精确匹配上提升超过 30 % 的绝对值,并实现完美的结构保真度。
- 单次示例上下文学习成本低且有效,始终比普通基线有提升。
- 生成的 DSL 文件 在微调后 >90 % 的情况下成功通过下游代码生成器,验证了功能正确性。
- 开发者在调查中将微调输出评为“可直接提交”的比例为 78 %,而基线仅为 42 %。
实际影响
- 加速 DSL 演进 – 团队可以发出单一的自然语言变更请求,获得完整的、跨仓库的 DSL 更新,从而减少手动编辑周期。
- 降低入职摩擦 – 新工程师无需深入了解 DSL 的文件结构即可原型化 DSL 变更,依赖模型来保持正确的层级关系。
- 持续集成友好 – 由于 JSON 表示保证了结构完整性,生成的变更可以通过现有构建流水线自动验证(例如运行 Xtext 代码生成器)。
- 成本效益高的定制 – 参数高效的微调(QLoRA)只需几百个示例和适度的 GPU 资源,使得已经在生产环境中使用 DSL 的众多企业也能轻松实现。
- 其他 DSL 的模板 – 该流水线(数据集提取 → 保持路径的 JSON → 微调)可复制到任何基于 Xtext 或类似技术的 DSL,为汽车、金融、电信等行业的 LLM 辅助开发打开大门。
限制与未来工作
- Scale of context window – 该方法适用于能够放入 7‑B 模型 8 K‑token 窗口的 DSL 项目;更大的代码库需要进行分块或层次化提示。
- Dataset bias – 训练数据来自单个 BMW 项目的历史变更,可能限制对语义或命名约定差异很大的 DSL 的泛化能力。
- Model size ceiling – 仅评估了 7‑B 模型;更大的模型可能进一步提升质量,但推理成本也会更高。
- Human evaluation scope – 开发者调查只涉及相对较小的群体(12 名参与者);更广泛的用户研究将加强对可用性的论证。
- Future directions suggested by the authors include: 探索用于超大代码库的 retrieval‑augmented generation,扩展方法以实现 bidirectional DSL ↔ code synchronization,并集成 automated test generation,以闭环 DSL 更改与下游系统行为之间的关系。
作者
- Sivajeet Chand
- Kevin Nguyen
- Peter Kuntz
- Alexander Pretschner
论文信息
- arXiv ID: 2604.24678v1
- 分类: cs.SE, cs.AI
- 出版日期: 2026年4月27日
- PDF: 下载 PDF