AI结构化输出提示词:让AI稳定返回JSON/表格/代码格式

AI结构化输出提示词:让AI稳定返回JSON/表格/代码格式
AI结构化输出提示词示意图:JSON表格代码格式控制

简单说:AI结构化输出就是让AI按你指定的格式(JSON、表格、YAML、代码块)稳定返回结果,而不是随便写几句人话。掌握了这招,AI从"聊天搭子"直接升级成你自动化工作流里的一环。

AI结构化输出提示词:让AI稳定返回JSON/表格/代码格式

你有没有遇到过这种情况——让AI"把所有公司信息提取出来",它倒是回了,但是一段一段的散装文字,根本没法直接复制粘贴到Excel里。你再追问"能给我个JSON吗",它给的JSON带了三个语法错误。

这就是没做结构化输出控制的典型翻车现场。

结构化输出到底是什么

结构化输出就是把AI的回复限定在预设的格式框架里,比如JSON、CSV、YAML、Markdown表格或代码块。它让你收到的不是"一坨文本",而是可以直接被程序解析、被脚本处理的结构化数据。

说实话,这可能是提示词工程里ROI最高的技能之一。为啥?因为大部分AI自动化翻车都不出在"AI不懂",而是出在"AI返回的格式没法用"。你花一小时写完了自动化脚本,AI给你返回了一行不规范的JSON,全白干。

FlowPix编辑部实测了两个月,尝试了各种结构化输出的写法,踩了不少坑。下面按格式类型逐一拆解。

四种主流输出格式的控制技巧

1. JSON输出——最常用也最容易翻车

让AI返回JSON,关键是给Schema而不是只说"返回JSON"。我给过几十次只写"return JSON"的指令,AI返回来的东西大概有一半是格式有问题的。

正确的写法是这样:

请提取以下招聘信息,严格按这个JSON Schema返回,不要加任何解释性文字: { "company": "公司名称(string)", "position": "职位名称(string)", "salary_range": {"min": "最低薪资(number)", "max": "最高薪资(number)"}, "requirements": ["技能要求(string[])"], "is_remote": "是否远程(boolean)" } 招聘信息如下: [粘贴内容]

注意几个关键点:给出完整Schema而不是只说"返回JSON"、明确标注每个字段的类型、强调"不要加任何解释性文字"(AI很喜欢在JSON前后加一句"好的,这是提取结果:")。

对于复杂JSON,还有一个狠招——给一个完整示例比给Schema更有效:

请按以下格式返回(这是真实示例,请严格模仿): {"products":[{"name":"iPhone 16","price":799,"category":"手机"}]} 现在请分析这段文字,按同样格式列出所有产品: [粘贴内容]

我个人的经验是:对GPT-4o和Claude 3.5 Sonnet用Schema就够了,对DeepSeek和通义千问建议给示例。国产模型在结构化输出跟随度上确实差一截。

2. 表格输出——AI最擅长但大多数人没用好

让AI输出Markdown表格是结构化输出里成功率最高的方式,几乎不会翻车。问题在于大部分人只说"用表格对比",没告诉AI要对比哪些维度。

用Markdown表格对比以下5款翻译工具,必须包含这些列: | 工具名称 | 支持语言数 | 免费额度 | API可用 | 翻译质量(1-10) | 一句话评价 | 不要添加表格之外的任何内容。

这种写法基本100%命中。AI对表格指令的遵循度极高,只要你把列定义清楚就行。

3. YAML输出——配置文件生成的利器

YAML格式对AI来说也很顺手,关键是给对缩进结构。我日常用AI生成Docker Compose文件、GitHub Actions配置,几乎没翻过车。

根据以下服务需求,生成一个Docker Compose YAML配置。 服务:Nginx(端口80/443) + MySQL 8.0 + Redis 7 要求:添加健康检查、网络隔离、数据卷持久化 只输出YAML,不要解释。

4. 代码块输出——指定语言是关键

很多人在让AI写代码时不说语言,结果AI给Python而你项目是Go。加上语言标签一步到位:

用Python写一个函数,输入URL列表,并发下载所有文件到本地./downloads/目录。 使用asyncio和aiohttp。 仅输出代码,不要解释。

结构化输出的4个"铁律"

用了半年踩出来的经验,按重要性排序:

铁律说明反面教材
1. 禁废话必须写"只输出JSON/表格,不要任何解释"。AI默认会在格式前后加人话。让AI输出JSON,它回"好的,这是你要的数据:{...}"——前面那个"好的"就废了整个解析。
2. 给Schema字段名+类型+说明,越详细越好。Schema是给AI的"数据结构合同"。只说"返回JSON"→AI返回的字段名是你没想到的缩写。
3. 给示例一个完整的格式示例胜过一百句说明。AI从示例中学格式比从指令中学快得多。写了十行说明,不如一行示例。
4. 降温结构化输出时temperature设0.1-0.3。高温=高随机性=格式化输出不稳定。temperature 0.8时AI可能在JSON里突然插一句人话。

其实还有第五条隐藏铁律:用Function Calling代替提示词。如果你的场景允许调API,OpenAI/Anthropic的Function Calling在结构化输出上的稳定性比提示词好十倍。但如果你是ChatGPT网页用户或者用的是不支持Function Calling的平台,上面这四条就是你的全部武器。

实际场景:三个拿来就能用的模板

场景1:从文章里批量提取结构化数据

请从以下文章中提取所有提到的AI工具,严格按此JSON格式返回,不要加任何解释: [{"tool_name": "", "company": "", "price": "", "category": "", "description_short": ""}] 文章内容: [粘贴]

场景2:生成SQL建表语句

根据以下业务描述,生成MySQL建表语句。 要求:所有表使用InnoDB引擎、utf8mb4编码、添加合理的索引。 仅输出SQL代码块,不要解释。 业务描述:一个博客系统,包含用户表、文章表、评论表、标签表。

场景3:用AI做数据标注员

你是数据标注员。请对以下10条用户评论做情感分类,严格按此格式逐条返回JSON数组: [{"id": "评论编号", "sentiment": "positive/negative/neutral", "confidence": "0-1之间的小数", "keywords": ["关键词1","关键词2"]}] 评论列表: 1. 这个产品太好用了,强烈推荐! 2. 发货太慢了,包装也破损了。 ...

不夸张地说,这个模板帮我省了至少200小时的手工标注时间。

常见翻车类型及修复方法

翻车现象原因修复方法
JSON前后有废话没写"不要解释"在提示词末尾加粗强调:只输出JSON,不要任何解释
字段名不一致只说了大概格式给出完整Schema或完整示例
JSON语法错误(多逗号、少引号)temperature过高temperature降到0.1,或加一句"确保JSON语法完全正确"
输出被截断达到max_tokens限制提高max_tokens,或分批处理
小模型完全无视格式模型能力不足换GPT-4o/Claude 3.5+,小模型对结构化指令跟随度很差

常见问题

AI结构化输出是什么意思?

AI结构化输出就是通过提示词控制AI的输出格式,让它返回JSON、表格、YAML、代码块等机器可解析的结构化数据,而不是自由文本。这在自动化工作流、数据提取、API对接等场景中非常有用。

为什么同样的结构化提示词,有时AI返回不对?

主要原因有三个:一是模型能力差异(小模型对格式指令的遵循度低),二是提示词中指令不够具体(只说"返回JSON"但没给Schema),三是温度参数设置过高导致输出随机性强。解决方案:用GPT-4o/Claude 3.5+模型,给JSON Schema示例,温度设到0.1-0.3。

结构化输出和Function Calling有什么区别?

Function Calling是API级别的结构化输出机制,AI模型在训练时就针对工具调用做了专门优化,稳定性极高。提示词级别的结构化输出是给AI用自然语言描述输出格式,灵活但稳定性不如Function Calling。如果你在做生产级应用,优先用Function Calling;如果是个人自动化或轻量场景,提示词方式够用。详见 OpenAI Function Calling文档

觉得有用的话分享给朋友吧,下一期聊聊提示词注入防御——这玩意比你想象的更常见。