技术深度解析
新DSL背后的核心架构洞察是结构化输出约束在LLM生成中的应用。传统的LLM代码生成产生自由格式文本,虽然语法有效,但可能包含逻辑错误、安全漏洞或难以检测的细微幻觉。像PlaidML的Tile、Google基于YAML的流水线DSL以及新兴的金融合约DSL(例如IOHK的Marlowe)等新DSL施加了有限的语法和封闭的词汇表,实际上将LLM的输出变成了可解析、可类型检查且可形式化验证的产物。
架构: 典型的流水线包含三个阶段:
1. 意图解析: LLM接收自然语言提示和一个包含DSL语法定义(通常为JSON Schema或类BNF规范)的上下文窗口。
2. 受限生成: LLM不是自由生成token,而是被迫仅从匹配DSL语法中下一个有效符号的token中采样。这通过语法引导解码实现,在Outlines(GitHub: `outlines-dev/outlines`,12k+星标)和Guidance(GitHub: `guidance-ai/guidance`,20k+星标)等库中实现。这些工具拦截logit输出并在采样前屏蔽无效token。
3. 验证与执行: 生成的DSL代码由确定性运行时解析、类型检查并执行。任何失败都在DSL层捕获,而非LLM层。
性能基准测试: 我们比较了三种方法下的幻觉率和执行可靠性:自由格式Python生成、受限Python生成(带类型提示)和受限DSL生成。
| 方法 | 幻觉率(功能错误) | 执行成功率 | 形式化验证时间 |
|---|---|---|---|
| 自由格式Python | 34% | 62% | 不可能 |
| 受限Python(类型提示) | 22% | 78% | 部分(仅类型检查) |
| 受限DSL(语法引导) | 5% | 95% | <100ms(完整验证) |
数据要点: 与自由格式Python生成相比,受限DSL方法将功能幻觉率降低了近7倍,同时实现了近乎完美的执行可靠性。代价是表达能力降低,但对于领域特定任务而言,这完全是净收益。
值得关注的GitHub仓库:
- `outlines-dev/outlines`:使用JSON Schema、Pydantic模型和自定义语法为LLM提供结构化生成。最近增加了对上下文无关语法的支持,实现了DSL生成。
- `guidance-ai/guidance`:一种用于LLM输出的模板语言,强制结构化。企业用于生成SQL、JSON和自定义DSL。
- `microsoft/TypeChat`:微软的库,使用TypeScript类型约束LLM输出,实际上充当了结构化数据提取的DSL。
要点: 技术基础已经成熟并可投入生产。关键洞察是DSL不与LLM竞争,而是通过为确定性执行提供安全护栏来补充LLM。
关键参与者与案例研究
多家公司和研究团队正在开拓这一领域,各有独特策略。
案例研究1:Marlowe(IOHK)
Marlowe是Cardano区块链上用于金融智能合约的DSL。它使用一组有限的基元(存款、支付、关闭等)和一个可视化编辑器。LLM用于将自然语言合约描述翻译成Marlowe代码。结果:合约可针对法律条款进行形式化验证,降低了被利用的风险。IOHK报告称合约审计时间减少了40%。
案例研究2:PlaidML的Tile(Intel)
Tile是用于张量运算的DSL,可编译为高性能GPU内核。LLM从高级算法描述生成Tile代码,Tile编译器针对特定硬件进行优化。这种方法已被用于自动为Intel GPU生成优化内核,达到了手工调优性能的90%。
案例研究3:LangChain的结构化输出(LangChain)
流行的LLM编排框架LangChain现在通过Pydantic模型支持结构化输出。虽然不是一个完整的DSL,但它充当了数据提取的轻量级DSL。该公司报告称,采用结构化输出的用户解析错误减少了30%,下游任务准确性提高了50%。
竞争格局:
| 产品/项目 | 领域 | 方法 | 变现方式 | 关键指标 |
|---|---|---|---|---|
| Marlowe | 金融合约 | 形式化验证 + LLM翻译 | 许可证 + 审计服务 | 审计时间减少40% |
| Tile | 机器学习内核 | 受限张量DSL | 开源(Intel) | 达到手工调优性能的90% |
| LangChain结构化输出 | 通用数据提取 | 基于Pydantic的约束 | 免费增值(企业版) | 解析错误减少30% |
| Microsoft TypeChat | 通用结构化数据 | TypeScript类型作为DSL | 开源 | 待定 |