通义千问生成配置:示例提示词与输出格式设置方法
实际执行并不复杂,核心方法只有三个步骤。
使用三重反引号配合语言标识锁定代码块格式
在提示词末尾直接追加指令:“请以 【```json】 开头,以 【```】 结尾,输出一个完整且可解析的 JSON 配置示例”。这个技巧非常有效,模型一旦识别到这种标记,就会将配置内容严格包裹在代码块内,不再混入“如下是配置示例”这类注释性语句。强调这一点,是因为许多下游工具和解析器要求纯输出,多余的前缀一旦出现,解析就会直接报错。
强制字段名与嵌套层级不缺失
要确保结构完整,有两种方法可供选用。
方法一:在提示词中给出锚点结构,明确顶层字段和子级规范。例如这样写:“配置必须包含 【version】、【services】 和 【networks】 三个顶层字段,其中 services 为对象,每个服务名下必须具备 image 和 ports 字段,ports 必须为数组”。把层级关系讲清楚,模型就不容易偏离轨道。
方法二:直接提供一个填写模板,留空待补。这种方法更为精确,因为它限定了缩进和占位的格式。举例如下:
请补全以下 YAML 框架,仅修改方括号内的占位符,其余符号、缩进、冒号和换行均不得增删:
version: '3.8'
services:
[service_name]:
image: [image_name]
ports:
- "[host_port]:[container_port]"
如果你是初次尝试这个方式,可能会发现模型偶尔会擅自增加缩进或把冒号改为等号,但多进行几次反馈就能稳定下来。
禁用自然语言干扰项
为防止模型在输出内容前添加冗余信息,最好在提示词开头就声明纯度要求。例如:“请只输出配置内容本身,不要包含任何说明、注释、‘示例如下’、‘配置如下’等引导语,也不要加入 Markdown 标题或列表符号”。
接着可以追加一条失败样例排除指令,例如:“禁止出现 // 注释、# 注释、中文字段名、驼峰式键名(如 dbUrl)、null 值占位符;所有字符串值必须用双引号包裹”。这条指令能够提前过滤掉那些“看起来相似但无法解析”的输出。
万一模型依然夹带了文字,还有一条兜底规则可用:“上一轮输出含有非配置字符,请重新输出,仅保留从第一个 { 或 version 开始到最后一个 } 或 --- 结束之间的内容”。这条追加指令在交互式对话中特别实用,能够在不重新编写提示词的情况下快速进行纠错。