先说一个核心判断:许多开发者在尝试让 Nova AI 输出 JSON 时遇到的最大困扰,并非模型能力不足,而是提示词写得过于“随意”。如果你给出的模板不够清晰、字段定义含糊不清、缺少示范样本,AI 自然就会自行发挥——输出要么格式混乱,要么关键字段缺失,要么突然冒出一句“好的,这是您要的JSON”。
因此,想要让 Nova AI 稳定输出一个能够直接被程序解析的 JSON,关键在于通过结构化提示词明确三大要素:字段定义、格式约束与示例锚点。下面逐一展开说明。
明确字段名与数据类型
在提示词的开头部分,就要清晰交代任务目标。例如:“从用户输入中提取订单信息,仅输出JSON”。紧接着,逐条说明每个字段的具体要求——title 为字符串类型,必须存在;order_id 为纯数字字符串,长度固定为 8 位;status 仅允许取 “pending”、“shipped”、“delivered” 三种值。【禁止出现拼写错误或多余空格】
如果这一步遗漏了类型约束,AI 很容易将数字误输出为字符串,或者把布尔值写成“是/否”这类中文表述,后续代码解析直接报错。
强制格式 + 禁用解释性文字
字段说明之后,立即补充一条硬性指令:“仅输出符合上述结构的 JSON 对象,不得包含任何额外说明、注释、前缀(如‘以下是JSON:’)、代码块包裹符(```)或换行符以外的空白字符。”
这条指令必须放在示例之前。不少用户习惯把“请输出JSON”写在末尾,但模型仍然会在开头补上“好的,这是您要的JSON:”这类多余内容。
提供最小可行 JSON 示例
示例必须完整、合法、无冗余字段,并且与前面的定义严格保持一致:
{“title”: “iPhone 15 Pro”, “order_id”: “87654321”, “status”: “shipped”}
这个示例中不能出现注释、省略号或占位符。AI 会严格对齐模板中的键名、顺序、引号风格与值类型。如果你使用双引号,它就不会擅自改用单引号;如果示例里 status 为小写,它绝不会自动转为首字母大写。
嵌套结构与数组字段处理
这里涉及几种常见场景,需要分别加以处理。
方法一:扁平化优先。能不用嵌套就尽量简化。例如“收货地址”,拆分为 address_line1、city、postal_code 三个独立字段,比使用 {“address”: {“city”: “…”}} 更加稳定。Nova 对深层嵌套的 JSON schema 理解容易出现偏差。
方法二:数组字段必须附带长度提示。如果需要输出商品列表,要写明:“items 字段为数组,最多包含 3 个对象,每个对象包含 name(字符串)、price(浮点数)、in_stock(布尔值)”。【不设定上限时,AI 可能生成 20 个虚构商品】
方法三:空数组需要显式声明。当允许无匹配结果时,明确写明“若无匹配项,items 字段为空数组 [],不得省略该字段”,否则 AI 可能直接删掉整个 items 键。
校验与容错配置
最后,在提示词末尾追加三条约束条件:
第一,字段必填校验:“所有字段均为必需,缺失任一字段即视为无效输出。”
第二,值范围锁定:针对枚举类字段,写成“status 字段值仅限 [‘pending’, ‘shipped’, ‘delivered’],禁止其他任何形式的变体(包括大小写混合、中文、缩写)”。
第三,数值精度控制:如果 price 需要保留两位小数,写明“price 字段为浮点数,必须精确到小数点后两位(如 199.00),禁止科学计数法或省略小数位”。
