在前几篇文章里,我们讨论了如何用 XML 给 Prompt 分区,如何用 JSON 强制输出格式。
但很快,做复杂业务逻辑(比如保险理算、促销规则判断、游戏剧情树)的朋友会发现一个新问题:
自然语言太“软”了。
举个例子,你让 AI 算运费:
“如果重量超过 5kg,但是如果是在偏远地区的话,要在基础运费上加 10 块钱,除非用户是 VIP,那样的话就打八折,但最低不能低于 5 块……”
这段话,人听了都头大,更别说 AI 了。它很容易绕进逻辑陷阱里,或者算出一个莫名其妙的数字。
有人说:“那我让 AI 写 Python 代码来算?”可以,但太重了。为了算个运费,AI 要写 import、定义函数、处理缩进……这些全是无效的 Token 消耗,而且生成的代码可能包含危险的系统调用。
今天,我们要介绍一种介于“人话”和“代码”之间的终极武器:DSL(领域特定语言)。
通俗点说,就是我们专门为 AI 发明的一套“行话”或“伪代码”。
01 什么是 DSL?AI 界的“电报码”
DSL(Domain Specific Language)不是什么新概念。SQL 是数据库的 DSL,HTML 是网页的 DSL。它们不通用,但在自己的地盘里效率极高。
在 AI 领域,DSL 就是我们为了特定任务,和 AI 约定的一套简写规则。
为什么要用 DSL?
极度省钱(Token Efficient): 复杂的逻辑用自然语言描述需要 100 个字,用 DSL 可能只要 10 个字符。极度精确(Precision): 消除自然语言的歧义,强迫模型进入“逻辑模式”。极易解析(Parsability): 输出的结果非常规整,后端代码容易处理。02 场景一:复杂逻辑判定(Rule Engine)
回到刚才那个“运费计算”的例子。
如果我们设计一套简单的 DSL,规定:
DSL 版的 Prompt:
<instruction> 你是一个运费计算引擎。请将用户的自然语言描述,转化为以下 DSL 伪代码格式: - 规则:IF [条件] THEN [结果] ELSE [结果] - 变量:weight, is_remote, is_vip, base_fee</instruction><user_input> 重量超过 5kg,偏远地区加 10 块,VIP 打八折。</user_input><ai_output> IF weight > 5 AND is_remote == True THEN base_fee = base_fee + 10 END IF is_vip == True THEN base_fee = CALC(base_fee * 0.8) END</ai_output>
发生了什么?AI 不需要真的去执行计算(它很容易算错),它只需要把糊涂的“人话”翻译成清晰的“逻辑表达式”。然后,你的后端代码拿到这段 DSL,用一个简单的解释器去执行它。
逻辑的解释权归 AI,逻辑的执行权归你。完美分工。
03 场景二:Agent 动作序列(Action Sequence)
在做 Agent(智能体)时,AI 经常需要操作很多软件。用自然语言描述动作非常啰嗦:
“请先打开浏览器,然后输入百度网址,然后等待加载,然后输入关键词……”
我们可以定义一套动作 DSL:
DSL 定义:
实战 Prompt:
### 任务你是一个自动化测试助手。请将用户的需求转化为标准 DSL 指令集。### 用户需求帮我去百度搜一下 iPhone 15 的价格。### AI 输出GOTO("https://www.baidu.com")WAIT(2)TYPE("iPhone 15 价格")CLICK("百度一下")
对于后端来说,解析这四行文本,比解析一段“小作文”要容易且稳定得多。
04 场景三:结构化图谱生成
如果你想让 AI 生成一个思维导图或者流程图,让它直接画图是不可能的。但你可以让它输出 DSL,比如 Mermaid 或 Graphviz。
Prompt:
请分析这家公司的股权结构,并输出 Mermaid 格式的 DSL 代码:graph TD A[母公司] --> B[子公司]
这其实就是一种最典型的 DSL 应用。AI 非常擅长写这种结构化文本,因为它的训练数据里包含了几亿行的 GitHub 代码。
利用 AI 的“代码本能”,去解决“逻辑问题”,往往比直接用自然语言效果好得多。
05 产品经理的思考:定义属于你的“黑话”
DSL 听起来很技术,但本质上它是产品设计的一部分。
作为AI应用开发者,你在设计 AI 功能时,可以试着定义一套“中间语言”。
如果是做法律 AI,你可以定义一套“法条引用 DSL”。如果是做音乐 AI,你可以定义一套“旋律编排 DSL”。如果是做游戏 NPC,你可以定义一套“剧情触发 DSL”。怎么设计 DSL?遵循三个原则:
越像 Python/SQL 越好: 因为 LLM 见过很多代码,它对标准编程语法最熟悉。关键词大写:IF, THEN, ACTION,利用 Token 的特征让模型产生注意力。极简主义: 不要搞复杂的语法糖,不仅是为了省 Token,更是为了减少 AI 出错的概率。写在最后
从 Natural Language(自然语言) 到 Structured Output(结构化输出),再到 DSL(领域特定语言)。
这是 Prompt Engineering 的进阶之路。
高级玩家则发明了一套简练的语言,让 AI 在高密度的逻辑中起舞。当你的 Prompt 开始变得像代码一样简练、像数学公式一样优美时,你就真正掌握了驾驭大模型算力的钥匙。