AI的提示词专栏:用结构化 JSON 提示模型返回可解析的数据


AI的提示词专栏:用结构化 JSON 提示模型返回可解析的数据

本文聚焦如何通过 Prompt 引导大语言模型(LLM)稳定输出可解析的 JSON 数据,解决模型输出格式混乱导致程序报错的核心问题。首先阐述 JSON 作为 “模型 - 程序” 交互通用语言的优势,即语法严谨、数据类型明确、支持复杂结构嵌套;接着提出 “格式指令 + JSON 模板 + 校验规则 + 示例参考” 四步 Prompt 设计法,给出具体实施要点;随后针对模型输出常见问题(如含多余自然语言、语法错误、数据类型偏差等),提供强化指令、分步生成、程序端校验等解决方案;最后结合电商商品提取、用户反馈分析、项目任务分解三个行业场景,展示完整 Prompt 设计、模型输出及 Python 解析代码,并扩展 JSON Schema 校验、多模型协作等进阶方向,助力实现 LLM 输出从 “人读” 到 “机读” 的转化,支撑业务流程自动化。

人工智能专栏介绍

    人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的 AI 知识库,把提示词设计、AI 创作、智能绘图等多个细分领域的知识整合起来。无论你是刚接触 AI 的新手,还是有一定基础想提升的人,都能在这里找到合适的内容。从最基础的工具操作方法,到背后深层的技术原理,专栏都有讲解,还搭配了实例教程和实战案例。这些内容能帮助学习者一步步搭建完整的 AI 知识体系,让大家快速从入门进步到精通,更好地应对学习和工作中遇到的 AI 相关问题。

    这个系列专栏能教会人们很多实用的 AI 技能。在提示词方面,能让人学会设计精准的提示词,用不同行业的模板高效和 AI 沟通。写作上,掌握从选题到成稿的全流程技巧,用 AI 辅助写出高质量文本。编程时,借助 AI 完成代码编写、调试等工作,提升开发速度。绘图领域,学会用 AI 生成符合需求的设计图和图表。此外,还能了解主流 AI 工具的用法,学会搭建简单智能体,掌握大模型的部署和应用开发等技能,覆盖多个场景,满足不同学习者的需求。



1️⃣ ⚡ 点击进入 AI 的提示词专栏,专栏拆解提示词底层逻辑,从明确指令到场景化描述,教你精准传递需求。还附带包含各行业适配模板:医疗问诊话术、电商文案指令等,附优化技巧,让 AI 输出更贴合预期,提升工作效率。

2️⃣ ⚡ 点击进入 AI 灵感写作专栏,AI 灵感写作专栏,从选题到成稿,全流程解析 AI 写作技巧。涵盖论文框架搭建、小说情节生成等,教你用提示词引导 AI 输出内容,再进行人工润色。附不同文体案例,助你解决写作卡壳,产出高质量文本。

3️⃣ ⚡ 点击进入 AI 辅助编程专栏,AI 辅助编程专栏,通过实例教你用 AI 写代码:从功能描述到调试优化。涵盖前端、后端、数据库等,语言包括HTML5、VUE、Python、Java、C# 等语言,含算法实现、Bug 修复技巧,帮开发者减少重复劳动,专注核心逻辑,提升开发速度。

4️⃣ ⚡ 点击进入 AI 精准绘图专栏,AI 精准绘图,聚焦 AI 绘图在设计场景的落地。详解如何描述风格、元素、用途,生成 logo、商标等。含 Midjourney 等工具参数设置,及修改迭代方法,帮设计新手快速出图,满足商业与个人需求。

5️⃣ ⚡ 点击进入 AI 绘制图表专栏,AI 绘制图表专栏,教你用 AI 工具将数据转化为直观图表。涵盖曲线图数据输入、流程图逻辑梳理等,附 Excel 联动、格式美化技巧,适合学生、职场人快速制作专业图表,提升数据展示效果。

6️⃣ ⚡ 点击进入 AI 的工具集专栏,AI 的工具集专栏,盘点主流 AI 工具:ChatGPT、DeepSeek、 Claude、Gemini、Copilot 等。解析各工具优势,附使用场景与技巧,帮你根据需求选工具,快速上手提升效率,覆盖办公、创作、开发等场景。

7️⃣ ⚡ 点击进入 AI 的智能体专栏,AI 的智能体专栏,解析智能体自主运行原理,包括任务拆解、环境交互等。教你用大模型搭建简单智能体,附多智能体协作案例,适合想探索 AI 自主系统的开发者入门。

8️⃣ ⚡ 点击进入 AI 的大模型专栏,AI 的大模型专栏,详解大模型部署步骤,从本地搭建到云端部署。含 API 调用教程、应用开发案例,教你将大模型集成到项目,掌握企业级 AI 应用开发技能,应对实际业务需求。

在大语言模型(LLM)的实际应用中,“让模型输出人类能看懂的内容”只是基础需求,“让输出能被程序自动解析、调用”才是实现自动化流程的关键。而结构化JSON凭借其语法严谨、解析工具普及、数据类型明确的优势,成为连接LLM输出与程序系统的核心桥梁。本文将从原理、设计方法、避坑技巧到实战案例,全面讲解如何用Prompt引导模型稳定输出可解析的JSON数据,解决“模型输出格式混乱导致程序报错”的核心痛点。

一、为什么需要用JSON规范模型输出?——从“人读”到“机读”的必然选择

在传统的LLM交互中,模型常以自然语言段落输出结果,例如回答“分析3款手机的参数对比”时,可能会用“1. 手机A:屏幕6.7英寸… 2. 手机B:电池5000mAh…”的格式呈现。这种输出对人类友好,但对程序而言却“难以理解”——若要将这些数据导入Excel、接入数据库,或用于后续的可视化图表生成,程序需要手动提取关键信息,不仅效率低,还容易因格式变动(如模型漏写参数、换行位置变化)导致解析失败。

而JSON(JavaScript Object Notation)作为一种轻量级数据交换格式,恰好解决了“机读友好”的核心需求。其优势具体体现在三个方面:

  1. 语法严谨,解析无歧义:JSON有明确的语法规则(如键必须用双引号包裹、字符串需转义特殊字符、数组用[]表示),主流编程语言(Python/Java/JavaScript)均内置成熟的JSON解析库(如Python的json模块),只要输出符合JSON规范,就能100%被程序正确解析,避免“自然语言格式混乱”的问题。
  2. 数据类型明确,适配程序逻辑:JSON支持字符串(string)、数字(number)、布尔值(boolean)、数组(array)、对象(object)等基础数据类型,能精准匹配程序中变量的类型需求。例如“商品价格”需用数字类型(而非字符串“3999元”),“是否有货”需用布尔值(true/false),这些都可通过JSON明确定义。
  3. 结构可嵌套,适配复杂场景:面对多层级数据(如“用户信息包含基本资料、订单列表,订单列表又包含商品明细”),JSON的对象嵌套({"user":{"name":"张三","orders":[{"product":"手机","price":3999}]}})能清晰表达数据间的层级关系,比自然语言更直观地承载复杂信息。

举个实际场景对比:若需让模型分析“某电商平台3款热销笔记本电脑的核心参数”,自然语言输出与JSON输出的差异如下:

  • 自然语言输出(程序难解析)
    “本次分析的3款笔记本中,第一款是联想小新Pro16,屏幕16英寸,分辨率2.5K,处理器是Intel i7-13700H,价格5999元,是否支持触控:否;第二款是华为MateBook 14,屏幕14英寸,分辨率2.2K,处理器AMD R7-7840HS,价格5499元,支持触控;第三款…(可能漏写参数或格式变动)”
  • JSON输出(程序可直接解析)
{
  "laptop_analysis": {
    "analysis_date": "2025-01-01",
    "total_count": 3,
    "laptops": [
      {
        "brand": "联想",
        "model": "小新Pro16",
        "screen": {
          "size_inch": 16,
          "resolution": "2.5K",
          "touch_support": false
        },
        "processor": "Intel i7-13700H",
        "price_***y": 5999
      },
      {
        "brand": "华为",
        "model": "MateBook 14",
        "screen": {
          "size_inch": 14,
          "resolution": "2.2K",
          "touch_support": true
        },
        "processor": "AMD R7-7840HS",
        "price_***y": 5499
      },
      {
        "brand": "苹果",
        "model": "MacBook Air M2",
        "screen": {
          "size_inch": 13.6,
          "resolution": "2.5K",
          "touch_support": false
        },
        "processor": "Apple M2",
        "price_***y": 7999
      }
    ]
  }
}

显然,JSON输出可直接通过Python的json.loads()函数解析为字典,后续可轻松实现“提取所有机型的价格生成柱状图”“筛选支持触控的机型”等自动化操作——这正是JSON成为LLM与程序交互“通用语言”的核心原因。

二、核心设计方法:4步写出“强制JSON输出”的Prompt

要让模型稳定输出符合要求的JSON,关键在于通过Prompt明确“格式约束”“数据结构”“校验规则”三大核心要素,避免模型因“理解模糊”而输出非JSON内容(如自然语言解释、格式错误的JSON)。以下是经过实战验证的4步设计法:

步骤1:明确“输出格式指令”——从源头限定JSON

在Prompt的开头或结尾,必须加入强制格式指令,明确告知模型“仅输出JSON,不包含任何多余内容”。这是防止模型“画蛇添足”(如在JSON前加“以下是分析结果:”,或在JSON后加“以上数据仅供参考”)的关键。

常见有效指令示例:
  • 基础版:“请严格按照JSON格式输出结果,不要包含任何JSON以外的文字(如解释、说明、问候语)。”
  • 强化版:“输出仅保留JSON内容,删除所有非JSON字符(包括换行符、注释、自然语言描述);若JSON中包含字符串,需确保字符串内的特殊字符(如双引号、换行符)已正确转义。”
  • 警告版:“若输出包含非JSON内容,或JSON格式错误(如键未用双引号、逗号遗漏),则视为无效结果。请务必用JSON校验工具(如JSONLint)自查后再输出。”
反面示例(无效指令):

“请用JSON格式输出,也可以加一些解释帮助理解”——这种模糊指令会让模型大概率在JSON前后添加自然语言,导致程序解析失败。

步骤2:提供“JSON结构模板”——给模型“填空式指引”

仅要求“输出JSON”不够,还需明确JSON的层级结构、键名、数据类型,避免模型自行定义键名(如程序期望“price_***y”,模型却输出“price”“价格”)。最有效的方式是提供“JSON结构模板”,让模型按模板填充内容,本质是“降低模型的思考成本,减少格式偏差”。

模板设计原则:
  1. 键名用“英文小写+下划线”(如product_name),避免中文键名(如“商品名称”)——中文键名可能因编码问题导致解析异常,且不符合程序开发的通用习惯;
  2. 标注每个键的数据类型(用// 注释说明),明确约束(如"price": 0 // 数字类型,单位:元,保留整数);
  3. 对可选字段(非必填)标注// 可选,无则填null,避免模型漏填导致结构缺失;
  4. 对数组字段(如"tags": []),说明数组元素的格式(如"tags": [] // 数组,元素为字符串,如["性价比高","轻薄"])。
模板示例(以“提取新闻文章关键信息”为例):
{
  "news_extraction": {
    "article_title": "", // 字符串类型,新闻标题(需完整,不省略)
    "publish_time": "", // 字符串类型,格式:YYYY-MM-DD HH:MM,如"2025-01-01 09:30",无则填null
    "source": "", // 字符串类型,新闻来源(如"人民日报")
    "author": "", // 字符串类型,作者姓名,无则填null
    "key_points": [], // 数组类型,元素为字符串,提取3-5个核心要点(每个要点不超过50字)
    "category": "", // 字符串类型,分类:时政/财经/科技/娱乐/体育,四选一
    "word_count": 0 // 数字类型,文章总字数(整数,不估算,需准确统计)
  }
}

步骤3:补充“数据校验规则”——提前规避常见错误

即使提供了模板,模型仍可能出现“数据类型错误”(如将word_count填为字符串“1500字”)、“特殊字符未转义”(如字符串内包含双引号导致JSON语法断裂)等问题。因此,需在Prompt中补充数据校验规则,让模型在输出前自查。

必加的5条校验规则:
  1. 数据类型校验:“确保所有键的值符合标注的类型(如word_count必须是数字,不能是字符串或带单位的文本);布尔值只能用truefalse,不能用“是/否”“对/错”。”
  2. 特殊字符转义:“若字符串中包含双引号(")、换行符(\n)、反斜杠(\),需用反斜杠(\)转义(如将He said "hello"转义为He said \"hello\")。”
  3. 数组长度约束:“key_points数组需包含3-5个元素,不能为空或超过5个;每个元素需是完整的句子,不能是短语碎片。”
  4. 格式完整性:“检查JSON是否有语法错误(如逗号遗漏、括号不匹配、键未用双引号);确保所有非可选字段都有值,无值时填null(不能留空字符串"")。”
  5. 逻辑一致性:“确保publish_time的格式为YYYY-MM-DD HH:MM,若新闻未标注具体时间,填null(不能填“昨天”“上周”等相对时间);category需从指定选项中选择,不能自定义。”

步骤4:添加“示例参考”——用Few-Shot降低模型理解成本

对于复杂的JSON结构(如多层嵌套、多数组),仅靠模板和规则可能不够——模型可能因“不知道如何填充嵌套字段”而出错。此时,可在Prompt中加入1-2个完整的“输入-输出”示例(Few-Shot示例),让模型通过模仿快速掌握要求。

示例设计要点:
  • 示例需与目标任务高度相似(如目标任务是“提取科技新闻信息”,示例就用科技类新闻);
  • 示例的JSON需完全符合模板和校验规则,无任何错误;
  • 示例的输入(如原始新闻文本)需简洁,避免占用过多上下文窗口。
完整Prompt示例(含示例):
任务:提取以下新闻文章的关键信息,并严格按照指定的JSON格式输出。

### 输出格式要求:
1. 仅输出JSON,不包含任何JSON以外的文字(如解释、说明);
2. 按以下JSON模板填充内容,键名、数据类型不可修改:
{
  "news_extraction": {
    "article_title": "", // 字符串,完整新闻标题
    "publish_time": "", // 字符串,格式YYYY-MM-DD HH:MM,无则填null
    "source": "", // 字符串,新闻来源
    "author": "", // 字符串,作者,无则填null
    "key_points": [], // 数组,3-5个核心要点(每个≤50字)
    "category": "", // 字符串,时政/财经/科技/娱乐/体育,四选一
    "word_count": 0 // 数字,文章总字数(整数)
  }
}
3. 数据校验规则:
   - 所有值需符合类型要求(如word_count是数字,不能带单位);
   - 字符串内特殊字符需转义(如双引号转义为\");
   - key_points数组需有3-5个元素,category从指定选项选。

### 示例参考:
输入新闻文本:
"【科技】华为发布Mate 60 Pro+ 搭载麒麟9010芯片
来源:科技日报 作者:李华 发布时间:2024-12-30 10:00
华为于12月29日正式发布Mate 60 Pro+手机,搭载自研麒麟9010芯片,支持5G网络;屏幕采用6.8英寸2K OLED屏,支持120Hz刷新率;电池容量为5500mAh,支持66W有线快充;售价6999元起,1月5日正式开售。全文共850字。"

示例输出JSON:
{
  "news_extraction": {
    "article_title": "华为发布Mate 60 Pro+ 搭载麒麟9010芯片",
    "publish_time": "2024-12-30 10:00",
    "source": "科技日报",
    "author": "李华",
    "key_points": [
      "华为12月29日发布Mate 60 Pro+手机,搭载自研麒麟9010芯片,支持5G",
      "屏幕为6.8英寸2K OLED屏,支持120Hz刷新率",
      "电池5500mAh+66W快充,售价6999元起,1月5日开售"
    ],
    "category": "科技",
    "word_count": 850
  }
}

### 待处理新闻文本:
"【财经】2024年中国GDP同比增长5.2% 消费贡献超60%
来源:国家统计局 发布时间:2025-01-20 09:30
国家统计局1月20日发布2024年国民经济数据:全年GDP总量达126万亿元,同比增长5.2%,高于年初5%的预期目标;分产业看,第一产业增长3.5%,第二产业增长4.8%,第三产业增长5.8%;消费对经济增长的贡献率达62.3%,成为主要拉动力;固定资产投资同比增长3.1%,进出口总额增长2.8%。全文共780字。"

请按要求输出JSON:
模型预期输出(正确示例):
{
  "news_extraction": {
    "article_title": "2024年中国GDP同比增长5.2% 消费贡献超60%",
    "publish_time": "2025-01-20 09:30",
    "source": "国家统计局",
    "author": null,
    "key_points": [
      "2024年中国GDP总量126万亿元,同比增长5.2%,高于5%预期目标",
      "第一产业增长3.5%,第二产业增长4.8%,第三产业增长5.8%",
      "消费对经济增长贡献率62.3%,固定资产投资增3.1%,进出口增2.8%"
    ],
    "category": "财经",
    "word_count": 780
  }
}

通过“格式指令+模板+校验规则+示例”四步设计,模型输出JSON的准确率可从“随机输出”的60%左右提升至95%以上,基本满足生产环境的需求。

三、避坑指南:解决模型输出JSON的5大常见问题

即使按上述方法设计Prompt,在实际使用中仍可能遇到“模型输出非JSON”“JSON语法错误”等问题。以下是5大高频问题的原因分析及解决方案:

问题1:模型在JSON前后添加自然语言(如“以下是提取结果:”)

  • 原因:模型的“对话惯性”——默认需用自然语言回应,未完全遵守“仅输出JSON”的指令;或Prompt中的格式指令不够明确。
  • 解决方案
    1. 强化指令:在Prompt结尾用醒目标识(如【强制要求】)重复“仅输出JSON,删除所有非JSON内容”;
    2. 结构隔离:用---BEGIN JSON------END JSON---包裹预期输出,让模型明确输出范围(如“请在---BEGIN JSON------END JSON---之间填写JSON,标识外无任何内容”);
    3. 示例约束:在Few-Shot示例中,确保示例输出仅包含JSON(无任何前缀后缀),让模型模仿。
优化后的Prompt指令示例:

“【强制要求】输出内容需严格包裹在---BEGIN JSON------END JSON---之间,标识外不能有任何文字(包括空格、换行符);标识内仅保留JSON,无任何注释或解释。示例:
—BEGIN JSON—
{“key”: “value”}
—END JSON—”

问题2:JSON语法错误(如键未用双引号、逗号遗漏、括号不匹配)

  • 原因:模型对JSON语法的细节记忆不精准(如混淆单引号和双引号);或长文本生成时出现“注意力分散”(如末尾遗漏闭合括号)。
  • 解决方案
    1. 语法提醒:在Prompt中明确“JSON语法要求”(如“所有键必须用双引号(")包裹,不能用单引号(');数组或对象的最后一个元素后不能加逗号;确保所有左括号({/[)都有对应的右括号(}/])”);
    2. 长度拆分:若生成的JSON结构复杂、长度较长,可将任务拆分为“先输出顶层结构”“再填充子字段”(如“先输出news_extraction的顶层键(title/source/category),再补充key_points数组”),减少模型一次性生成的压力;
    3. 后置校验:在程序端添加“JSON解析失败重试机制”——若json.loads()报错,将错误信息(如“第5行键未用双引号”)反馈给模型,让模型重新生成(如“上一轮输出的JSON在解析时出现错误:JSONDecodeError: Expecting property name enclosed in double quotes at line 5 column 2 (char 100),请修正后重新输出JSON”)。

问题3:数据类型错误(如将数字填为字符串、布尔值用“是/否”表示)

  • 原因:模型未重视Prompt中的“数据类型标注”,或对“数字vs字符串”的边界理解模糊(如将“1500字”视为数字)。
  • 解决方案
    1. 类型强约束:在模板中用更明确的标注(如"word_count": 0 // 必须是整数,如1500,不能是"1500"或"1500字");
    2. 错误示例警示:在Prompt中加入“错误示例”,明确告知模型“不能这样做”(如“错误示例:"word_count": "1500字"(错误:字符串+单位)、"touch_support": "是"(错误:字符串);正确示例:"word_count": 1500"touch_support": true”);
    3. 程序端兼容:若模型偶尔出现“数字用字符串表示”(如"price": "3999"),可在程序解析时添加“类型转换逻辑”(如用int()float()尝试转换,若失败再重试)。

问题4:字段缺失或多余(如漏填author字段、多生成summary字段)

  • 原因:模型未完全遵循模板结构,或自行“扩展”了无关字段(如认为“新闻提取”需要summary字段)。
  • 解决方案
    1. 字段完整性提醒:在Prompt中明确“必须包含的字段”和“禁止自定义字段”(如“需包含模板中的所有字段(article_title/publish_time/source/author/key_points/category/word_count),不能遗漏任何一个;禁止添加模板外的字段(如summary/keywords)”);
    2. 字段列表核对:在Prompt结尾添加“核对清单”(如“输出前请核对:1. 是否包含7个字段?2. 是否有多余字段?3. 非可选字段是否都有值?”);
    3. 模板固化:将JSON模板的键名用“不可修改”的表述强调(如“模板中的键名(如article_title)是固定的,不能修改为title、新闻标题等其他名称”)。

问题5:嵌套结构混乱(如数组元素格式不一致、子对象字段缺失)

  • 原因:复杂嵌套结构(如“数组内包含对象,对象内又包含数组”)超出模型的“短期记忆容量”,导致层级混乱。
  • 解决方案
    1. 分层拆解模板:将嵌套结构拆分为“子模板”,逐一说明(如“laptops是数组,每个元素是一个对象,该对象的结构如下:{brand: “”, model: “”, screen: {size_inch: 0, touch_support: false}}”);
    2. 示例细化:在Few-Shot示例中,完整展示嵌套结构的填充方式(如“screen是子对象,需包含size_inchtouch_support两个字段,不能遗漏”);
    3. 分步生成:将嵌套结构的生成拆分为多步(如“第一步:生成laptops数组的每个元素的brandmodel;第二步:为每个元素补充screen子对象;第三步:补充processorprice_***y字段”),降低每一步的复杂度。

四、实战案例:3个行业场景的JSON Prompt设计与输出

以下结合“电商商品信息提取”“用户反馈情感分析”“项目任务分解”三个高频行业场景,提供完整的Prompt设计、模型输出及解析代码,帮助读者直接复用。

场景1:电商商品信息提取(用于商品数据入库)

任务目标:

从商品详情页文本中提取“商品ID、名称、分类、规格、价格、库存、是否包邮”等信息,生成JSON用于导入电商数据库。

完整Prompt:
任务:从以下商品详情文本中提取关键信息,生成可解析的JSON(用于数据库导入)。

### 输出要求:
1. 仅输出JSON,无任何多余文字;JSON需符合语法规范(键用双引号、无语法错误)。
2. 严格按以下模板填充(数据类型已标注,不可修改键名):
{
  "product_info": {
    "product_id": "", // 字符串,商品ID(如"P20250101001")
    "product_name": "", // 字符串,完整商品名称(不省略)
    "category": "", // 字符串,分类:手机/电脑/家电/服装/食品,五选一
    "specifications": [], // 数组,元素为字符串,记录规格(如["颜色:黑色","内存:8GB+256GB"])
    "price": 0.0, // 数字,单价(单位:元,保留1位小数,如3999.0)
    "stock": 0, // 数字,库存数量(整数,如120)
    "free_shipping": false, // 布尔值,是否包邮:是→true,否→false
    "sales_count": 0 // 数字,累计销量(整数,如500)
  }
}
3. 校验规则:
   - price需是数字(不能带“元”),stock和sales_count是整数;
   - specifications数组需包含2-3个核心规格,不能为空;
   - 若文本中无product_id,填"unknown";无sales_count,填0。

### 待提取商品文本:
"商品编号:P20250101005
商品名称:小米Redmi Note 13 Pro 5G智能手机
分类:手机
详情:颜色可选黑色、白色;内存版本:8GB+256GB、12GB+512GB;屏幕6.7英寸OLED直屏(120Hz刷新率);电池5100mAh;
价格:1999.0元(8+256GB版本)
库存:当前库存89台
服务:全国包邮(偏远地区除外)
销量:已售3200台"

请输出JSON:
模型预期输出:
{
  "product_info": {
    "product_id": "P20250101005",
    "product_name": "小米Redmi Note 13 Pro 5G智能手机",
    "category": "手机",
    "specifications": [
      "颜色:黑色、白色",
      "内存:8GB+256GB、12GB+512GB",
      "屏幕:6.7英寸OLED直屏(120Hz刷新率)"
    ],
    "price": 1999.0,
    "stock": 89,
    "free_shipping": true,
    "sales_count": 3200
  }
}
程序解析代码(Python):
import json

# 假设model_output是模型输出的JSON字符串
model_output = '''{
  "product_info": {
    "product_id": "P20250101005",
    "product_name": "小米Redmi Note 13 Pro 5G智能手机",
    "category": "手机",
    "specifications": [
      "颜色:黑色、白色",
      "内存:8GB+256GB、12GB+512GB",
      "屏幕:6.7英寸OLED直屏(120Hz刷新率)"
    ],
    "price": 1999.0,
    "stock": 89,
    "free_shipping": true,
    "sales_count": 3200
  }
}'''

# 解析JSON并提取数据
try:
    product_data = json.loads(model_output)
    # 提取需要的字段
    product_id = product_data["product_info"]["product_id"]
    price = product_data["product_info"]["price"]
    stock = product_data["product_info"]["stock"]
    # 打印结果
    print(f"商品ID:{product_id}")
    print(f"单价:{price}元")
    print(f"库存:{stock}台")
    # 后续可连接数据库,执行插入操作(如用pymysql库)
except json.JSONDecodeError as e:
    print(f"JSON解析失败:{e}")
输出结果:
商品ID:P20250101005
单价:1999.0元
库存:89台

场景2:用户反馈情感分析(用于客服工单分类)

任务目标:

分析用户反馈文本的“情感倾向、核心诉求、问题类型、紧急程度”,生成JSON用于客服系统自动分类工单。

完整Prompt:
任务:分析以下用户反馈文本,生成情感分析结果JSON(用于客服工单分类)。

### 输出要求:
1. 输出仅含JSON,无任何解释;JSON需通过JSONLint校验。
2. 模板与数据类型约束:
{
  "feedback_analysis": {
    "feedback_id": "F" + str(int(time.time())), // 字符串,自动生成(如"F1735728000")
    "sentiment": "", // 字符串:正面/负面/中性,三选一
    "core_demand": "", // 字符串,10-30字描述用户核心诉求(如"要求退款并更换新商品")
    "issue_type": "", // 字符串:物流问题/质量问题/售后问题/咨询问题,四选一
    "urgency_level": 0, // 数字:1(低)/2(中)/3(高),根据问题紧急度选择
    "keywords": [] // 数组,提取3-4个关键词(如["退款","质量问题","笔记本"])
  }
}
3. 规则:
   - sentiment需从指定选项选,不能自定义;
   - urgency_level:影响使用(如“商品无法开机”)→3,需等待处理(如“物流延迟1天”)→2,不影响使用(如“咨询使用方法”)→1;
   - keywords需是名词或名词短语,不能是形容词(如“不好用”)。

### 待分析用户反馈:
“我上周买的联想笔记本,收到后发现开机黑屏,联系客服说要寄回检测,但已经过去3天了还没回复!我急着用电脑办公,能不能尽快处理,要么换一台新的,要么全额退款?”

请输出JSON:
模型预期输出:
{
  "feedback_analysis": {
    "feedback_id": "F1735728000",
    "sentiment": "负面",
    "core_demand": "要求尽快处理笔记本开机黑屏问题,换新品或全额退款",
    "issue_type": "质量问题",
    "urgency_level": 3,
    "keywords": ["笔记本", "开机黑屏", "换货", "退款"]
  }
}
程序应用:

解析后的JSON可自动导入客服系统,系统根据issue_type分配给“质量问题处理组”,根据urgency_level标记为“高优先级工单”,客服可直接通过core_demandkeywords快速了解用户诉求,无需再阅读原始反馈文本——大幅提升客服效率。

场景3:项目任务分解(用于项目管理工具导入)

任务目标:

将“网站改版项目”的需求文本分解为“任务名称、负责人、截止时间、优先级、依赖关系”等结构化任务,生成JSON用于导入Jira/Trello等项目管理工具。

完整Prompt:
任务:将以下网站改版项目需求分解为5-8个具体任务,生成任务清单JSON(用于导入项目管理工具)。

### 输出要求:
1. 仅输出JSON,无多余内容;每个任务的字段需完整,无缺失。
2. JSON模板(键名不可修改,数据类型标注):
{
  "project": "网站改版项目",
  "tasks": [
    {
      "task_id": "T001", // 字符串,格式T+3位数字(T001、T002...)
      "task_name": "", // 字符串,10-20字,明确任务内容(如"设计首页UI原型")
      "owner": "", // 字符串,负责人角色(产品经理/UI设计师/前端开发/后端开发/测试)
      "due_date": "", // 字符串,截止时间(假设项目启动日为2025-02-01,按此推算,格式YYYY-MM-DD)
      "priority": "", // 字符串:高/中/低,三选一
      "dependencies": [] // 数组,依赖的任务ID(如["T001"],无依赖填[])
    }
  ],
  "total_tasks": 0 // 数字,tasks数组的长度(需与实际元素数一致)
}
3. 分解规则:
   - 任务需覆盖“需求分析→设计→开发→测试→上线”全流程;
   - 依赖关系需合理(如“前端开发”依赖“UI设计”完成,即前端任务的dependencies包含设计任务的ID);
   - due_date需符合项目周期逻辑(如需求分析2天,UI设计5天,前端开发7天)。

### 项目需求文本:
“网站改版项目需实现:1. 优化首页视觉设计(提升加载速度);2. 新增用户注册/登录功能;3. 优化商品列表页的筛选与排序;4. 修复现有支付页面的bug;5. 项目需在2025年2月20日前上线。”

请输出JSON:
模型预期输出:
{
  "project": "网站改版项目",
  "tasks": [
    {
      "task_id": "T001",
      "task_name": "梳理网站改版需求清单",
      "owner": "产品经理",
      "due_date": "2025-02-02",
      "priority": "高",
      "dependencies": []
    },
    {
      "task_id": "T002",
      "task_name": "设计首页与商品列表页UI",
      "owner": "UI设计师",
      "due_date": "2025-02-07",
      "priority": "高",
      "dependencies": ["T001"]
    },
    {
      "task_id": "T003",
      "task_name": "开发用户注册/登录功能",
      "owner": "后端开发",
      "due_date": "2025-02-12",
      "priority": "高",
      "dependencies": ["T001"]
    },
    {
      "task_id": "T004",
      "task_name": "开发首页与商品列表页前端",
      "owner": "前端开发",
      "due_date": "2025-02-14",
      "priority": "高",
      "dependencies": ["T002"]
    },
    {
      "task_id": "T005",
      "task_name": "修复支付页面bug",
      "owner": "后端开发",
      "due_date": "2025-02-10",
      "priority": "中",
      "dependencies": []
    },
    {
      "task_id": "T006",
      "task_name": "测试所有功能(含兼容性)",
      "owner": "测试",
      "due_date": "2025-02-17",
      "priority": "高",
      "dependencies": ["T003", "T004", "T005"]
    },
    {
      "task_id": "T007",
      "task_name": "网站改版内容上线部署",
      "owner": "后端开发",
      "due_date": "2025-02-19",
      "priority": "高",
      "dependencies": ["T006"]
    }
  ],
  "total_tasks": 7
}
程序应用:

通过项目管理工具的API(如Jira的REST API),可将解析后的tasks数组批量创建工单,自动分配负责人、设置截止时间和依赖关系——避免人工录入的繁琐和错误,实现“需求文本→结构化任务→项目工单”的全自动化。

五、总结与扩展:从“稳定输出”到“高效应用”

本文通过“原理→方法→避坑→实战”的逻辑,讲解了如何用Prompt引导模型输出可解析的JSON数据。核心结论可概括为三点:

  1. 核心目标:将LLM的“非结构化输出”转化为“结构化数据”,实现“模型-程序”的无缝交互;
  2. 设计关键:通过“强制格式指令+明确模板+校验规则+Few-Shot示例”四要素,降低模型的理解成本和输出偏差;
  3. 落地保障:程序端需配合“解析重试机制”“类型转换兼容”,应对模型的偶发错误,形成“Prompt约束+程序兜底”的双重保障。

扩展方向:

  1. 结合JSON Schema进行更严格的校验:对于高要求的场景(如金融数据处理),可在Prompt中引入JSON Schema(定义JSON的结构、类型、约束的官方规范),让模型按Schema生成(如“请按以下JSON Schema生成数据:{ “$schema”: “http://json-schema.org/draft-07/schema#”, “type”: “object”, “properties”: { “price”: { “type”: “number”, “minimum”: 0 } } }”),并在程序端用jsonschema库校验,进一步提升数据准确性;
  2. 多模型协作生成复杂JSON:对于超复杂的JSON结构(如包含10+层级、多个数组),可让多个模型分工协作(如“模型A生成顶层结构,模型B填充子数组,模型C进行最终校验”),利用不同模型的优势(如某些模型擅长结构生成,某些擅长数据填充);
  3. Prompt模板化与自动化:将本文的设计方法封装为“JSON Prompt模板生成工具”——用户只需输入“任务类型(如商品提取/情感分析)”“字段列表(如product_id/price/stock)”,工具自动生成完整的Prompt,降低非技术人员的使用门槛。

通过掌握“用JSON规范模型输出”的能力,可将LLM的应用从“辅助人类创作”提升到“驱动系统自动化”的层面,为企业实现“AI+业务流程”的深度融合提供关键技术支撑。

联系博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://xcleigh.blog.csdn.***/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

转载请说明出处内容投诉
CSS教程网 » AI的提示词专栏:用结构化 JSON 提示模型返回可解析的数据

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买