让前沿语言模型写Python,它给你Python。让它写你团队自研的建模记法,它给你一个"长得像"那个记法的东西:凭空发明的关键字、猜出来的参数名、规范里从来没有过的语法结构,而且交付时信心十足。

条件反射式的补救办法是加提示词、拉长上下文、做更好的检索。但真正耐用的解法,是在模型见到你的语言之前就做好的一个设计决定——干脆别用一套它没见过的外部语法。这个决定有个名字:Typed Domain Grounding(类型化领域接地)。用你手上已有的类型系统,今天就能实现。

打开网易新闻 查看精彩图片

流畅度就是词频

模型能把Kotlin、TypeScript、Python和SQL写得好,原因只有一个主导性的:这些语言在它的训练数据里出现了几百万次。句法能力,粗略地说,就是训练数据频率的函数。这一点在代码大模型基准测试里有直接记录——按频率和流行度给语言分类,低资源语言的性能会相应下降。

语料密集的地方,生成可靠。语料稀疏的地方,生成退化成拼贴画,而语气和表面的自信程度不会有任何变化。正是这种"毫无变化",让失败变得极难被发现。

每一门新设计的外部DSL,从模型的角度看,其确切语法的训练语料频率都是零。

RAG救得了事实,救不了记法

检索增强生成(RAG)能把事实锚定在模型的回答里,但对表达这些事实所用的记法毫无帮助。原因很直接:模型可以拥有完全准确的知识,却依然吐出一条语法上纯属虚构的DSL语句。

这是两个层面的问题。幻觉在领域特定语言上的表现,本质上是训练数据频率问题,不是知识问题。补知识解决不了补语法。

把领域塞进宿主语言的类型系统

Typed Domain Grounding 的思路是:把领域作为一门类型化的内部DSL,嵌进一门训练数据丰富的宿主语言里,并塑造它的API,让领域层面的错误以编译器类型错误的形式暴露出来,而不是变成静默失败。

换句话说,错误不再靠人去肉眼审查模型输出,而是交给编译器拦截。一个严格的、会拒绝的判定器,可能比一个宽容的判定器收敛到更可靠的输出。

五十个任务的实测结果

在一项使用 Claude Sonnet 5 的五十任务基准测试中,这个方法拿到了更高的结构保真度(Structural Fidelity)和更低的幻觉率,优于两门宽松的外部DSL——尽管它的首次编译通过率更低。

同样的模式在 GPT-4o 上也成立,但并非对每一个被测模型都成立。证据说明的是:一个严格、会拒绝的判定器可以收敛到更可靠的输出,而不是说它永远如此。

代价和边界

这套方法有真实的局限,也有真实的成本。它补上的是语法鸿沟,不是理解鸿沟。它同时交出了记法上的自由,并要求对宿主语言做出承诺。

所以对语言设计者的建议是:把它当作设计新DSL时的一个默认考虑项,而不是一道要求重写现有可用语言的强制令。