8.1
深览指数
科技Bestblogs·Irakli Betchvaia··AI 生成
您的下一个 DSL 作者是语言模型
文章指出大语言模型(LLM)生成特定领域语言(DSL)代码时产生幻觉的根本原因是训练数据频率问题,而非知识缺口。作者提出Typed Domain Grounding (TDG)方法,通过将DSL嵌入到LLM训练数据中出现频率高的宿主语言(如Kotlin、TypeScript)中,并利用类型化API让编译器在实际编译之前捕获语法错误。文章详细介绍了TDG的五块核心构建和内嵌DSL设计原理,并与TypeChat等现有方案进行了对比。本文适合对LLM代码生成、DSL设计及编译器技术有深入理解的技术读者,尤其关注如何通过工程手段减少LLM幻觉的产品或研究者。原文 ↗
核心观点
- ▍LLM在生成DSL代码时产生的幻觉主要是训练数据频率问题,而非知识缺口;模型能流畅生成语法错误的DSL语句是因为它们在语料库中从相似结构进行插值。
- ▍Typed Domain Grounding通过将DSL作为类型化内部DSL嵌入到LLM训练数据中出现频率高的宿主语言中,让编译器充当预言,从根本上降低了语法层面幻觉的可能性。
- 01模型在Kotlin、TypeScript、Python和SQL上表现良好,主要原因是这些语言在其训练数据中出现次数极多;而特定领域语言如UML、SysML因训练数据稀疏,模型倾向于从高频语言模式中插值填补,从而导致幻觉。
- 02Typed Domain Grounding包含五个构建块:(1)内嵌而非外部的DSL,(2)根据语料亲和力选择宿主语言,(3)通过严格的API设计让编译器充当预言,(4)Generate-Compile-Repair (GCR)循环,(5)按需教学通道。
- 03kUML (一个Kotlin内嵌的UML/SysML v2/C4 DSL)的示例表明,该方法能将幻觉的属性、错误的类型、缺失的引用和无效的枚举作为普通的编译错误捕获出来。
- 04文章将一个类型化的Kotlin基础设施DSL的思考实验作为第二个案例,说明TDG可以从建模领域推广到其他领域。
- 05文章明确区分了TDG与RAG的适用边界:RAG可以修正事实错误,但无法解决记法问题——因为模型生成错记法时并非从事实角度出错,而是训练数据频率不足导致的插值错误。
- 06GCR(生成-编译-修复)循环本身并非TDG的新颖部分,在自调试文献中已有详细记载;TDG的创新在于通过类型化API使编译器能够提供针对领域错误的特定诊断,而非通用语法检查。
- 07文章通过思考实验(Kotlin内嵌基础设施DSL)进一步阐述TDG可以处理类型化资源查找、环境作用域寄生等高级特性,从而将配置文件错误从运行时错误前移至编译时错误。
反方 / 局限
- — TDG不会填补语义理解的空白——它只保证语法正确,不保证模型理解生成的代码在逻辑上是否正确或满足用户意图。
- — TDG牺牲了记法自由:设计者必须接受宿主语言的语法惯例,无法为领域用户设计最简洁自然的外部语法。
- — TDG要求对宿主语言作出承诺,意味着团队需要具备该宿主语言的专业知识,且该语言必须有完备的工具链(如成熟的编译器、包管理器等),这带来了实际的生态与学习成本。
Typed Domain GroundingKotlinTypeScriptPythonUMLSysMLC4模型RAGTypeChatGrammar PromptingThingTalkIrakli BetchvaiaInfoQ
5 分钟 · 5 卡片 · 10 资料
读原文 →