结构化设计:用Markdown、XML和JSON设计生产级提示词(二)

Mrs.Data
5 评论 2227 浏览 7 收藏 12 分钟
🔗 B端产品经理要负责对竞品进行分析和评估,了解竞品的走向、功能、卖点、优劣势等,制定产品的策略和方向

在AI产品落地过程中,提示词(Prompt)的质量直接决定了模型输出的效果。本文系统介绍了如何利用Markdown、XML和JSON三种结构化格式,设计清晰、可维护、可扩展的“生产级”提示词。

为什么要撰写结构化提示词?

当提示词变得复杂,包含多重指令、大量上下文和具体示例时,一个扁平的、无结构的文本块会让模型难以区分不同信息的优先级 。就像给员工下达一个冗长且毫无重点的口头指令,很容易导致误解和执行偏差。

结构化提示词通过使用明确的分隔符、标签或语法,将提示词分解为逻辑清晰的模块。这带来了几个核心优势:

  • 减少歧义:清晰地标示出哪些是指令、哪些是上下文、哪些是用户输入,让模型准确理解每个部分的意图 。
  • 提升指令遵循能力:当任务被分解并结构化呈现时,模型能更好地按步骤执行,输出结果更符合预期 。
  • 增强可维护性:结构化的提示词更易于团队成员理解、修改和复用,降低了长期维护的成本 。

结构化格式为何有效:从模型训练原理理解

要理解为什么Markdown、XML和JSON等格式对LLM特别有效,我们需要回归到模型训练的本质。LLM是通过学习海量互联网文本数据中的统计规律来工作的。这些训练数据中,有相当大一部分本身就是高度结构化的 。

  • 数据基础:互联网充满了用HTML和XML构建的网页、用Markdown编写的论坛帖子和文档、以及在API通信中广泛使用的JSON数据。
  • 模式学习:在训练过程中,模型已经内隐地学习到了这些结构化标记(如<h1>、<instruction>、”key”: “value”)所蕴含的语义模式。例如,模型知道<h1>标签内的文本通常是标题,<example>标签内的内容是示例,而JSON的键值对结构则代表了清晰的数据关系 。
  • 激活已知模式:因此,当我们在提示词中使用这些格式时,我们并非在教模型一种新语言,而是在“激活”它早已熟知的模式。这使得我们的指令意图能够被更准确地捕捉,其效果远胜于一段普通的自然语言描述。这就像与一个熟悉图表的人交流时,使用图表会比纯文字描述更高效。

Markdown:清晰易读的首选

Markdown是一种轻量级标记语言,因其简洁、直观的语法而广受欢迎,是联系撰写结构化提示词的入门选择 。

优势

  • 高可读性:使用#表示标题,-或*表示列表,**text**表示加粗,使得提示词的逻辑层次一目了然,无论是对人还是对AI都非常友好 。
  • 易于编写和维护:语法简单,无需复杂的工具即可编写。
  • 提升指令遵循:研究和实践表明,将指令格式化为项目符号列表(bullet points)能显著提高LLM的指令遵循准确率 。

案例:使用Markdown重构一个复杂的写作任务

重构前(非结构化提示词):

我需要你写一个关于宇航员发现新行星的短篇故事。故事里要有一个会说话的外星人,一场太空战斗,以及一个结局反转,揭示这一切都只是一个游戏。请把故事控制在500字以内。

这个提示词将所有要求混杂在一起,模型需要自行梳理。

重构后(使用Markdown的结构化提示词):

通过使用Markdown的标题和列表,我们将任务、角色、情节和约束条件清晰地分离开来,极大地降低了模型的理解难度,从而能够生成更符合要求的高质量内容 。

用XML重构提示词:实现语义结构化

XML(Extensible Markup Language)作为一种设计用于传输和存储数据的标记语言,核心优势在于自描述性和层次化结构。

优势:

  • 语义清晰:XML的标签结构让AI能够更好地理解不同部分的作用和重要性。相比于纯文本,XML提供了明确的语义边界。
  • 层次分明:复杂的提示词往往包含多个层次的信息,XML的嵌套结构完美契合这一需求。
  • 易于解析:现代AI模型对XML格式有很好的理解能力,能够准确识别和处理结构化信息。

如何用XML撰写提示词

XML 指令使用“标签”进行组织,每个指令部分都用一个开放标签(例如,<agentinstructions>)和一个相应的闭合标签(</agentinstructions>)包裹起来。闭合标签在名称前包含一个正斜杠。

这种结构类似于打包搬家时的箱子,主标签是最大的箱子,而像“角色”、“目标”和“任务”这样的子部分则是嵌套在其中的较小的箱子。这种分层方法允许清晰的组织和模块化,人类和 AI 都能轻松阅读和处理。

基本结构设计原则:

  • 使用语义化的标签名称
  • 保持层次结构的逻辑性
  • 将不同类型的信息分离到不同标签中
  • 使用属性来添加元数据

建议在撰写时通过缩进嵌套标签来保持结构化外观。

JSON:连接AI与外部工具

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在提示词工程中,它主要用于实现一个强大的功能:函数调用(FunctionCalling)

什么是函数调用? 函数调用是一种让LLM与外部工具或API进行交互的能力 。

当用户的请求需要模型自身知识库之外的信息时,如实时天气、公司内部数据库数据、执行某个软件操作。模型不会直接回答,而是会生成一个特定格式的JSON对象。这个JSON对象精确地描述了需要调用哪个函数,以及需要传递什么参数 。

通过在提示词中明确要求LLM生成符合特定JSONSchema的输出,能够解决系统集成的“最后一公里“难题。

核心优势

  • 可靠的机器解析:应用后端可以直接将LLM返回的JSON字符串反序列化为对象或数据结构,无需任何脆弱的文本解析逻辑。这让AI的输出变得像调用一个传统的、确定性的API一样可靠。
  • 无缝的系统集成:结构化的JSON输出可以直接用于填充数据库、调用其他API、驱动前端UI渲染,或作为复杂工作流(Agentic Workflows)中下一步的输入。
  • 精确的数据结构定义:定义JSON Schema本身也是在向模型施加一种强大的逻辑约束,迫使其思考如何将分析结果填充到预设的字段中,这反过来也提升了输出内容的质量和完整性。
  • 示例数据提供:通过JSON格式的示例,模型能够更好地理解期望的输出格式。

工作流程

  1. 定义工具:在提示词中,使用JSON Schema的格式向模型描述可用的外部函数(工具),包括函数名、功能描述和参数列表。
  2. 模型决策:模型分析用户输入,判断是否需要调用某个已定义的函数来回答问题。
  3. 生成JSON:如果需要,模型会输出一个包含函数名和参数的JSON对象。
  4. 应用执行:你的应用程序代码接收到这个JSON,解析它,并实际执行相应的API调用或函数。
  5. 返回结果:将函数执行的结果返回给模型。
  6. 最终回复:模型基于函数返回的结果,生成最终的自然语言回复给用户。

案例:通过JSON实现工具调用

第一步:向模型描述工具,一般在提示词中我们会提供一个工具列表。

说明这个工具是:

  • 用来干什么的
  • 需要调用这个工具的用户输入长什么样
  • 以及成功调用这个工具需要用到哪些字段

第二步:用户提问 用户输入:“张三的电话号码和邮箱是什么”

第三步:模型生成JSON(函数调用)

模型不会直接回答,而是会返回一个tool_calls对象,其中包含以下JSON :

说明调用了人员查询工具,输入的字段为人名张三

第四步及之后: 应用程序代码会调用真实的API,并将返回的人员信息

如“张三,电话:13794785945,邮箱: zhangsan@123.com”,再喂给模型。

模型最后会根据返回信息生成对用户的友好回复:“张三的电话是13794785945,邮箱是 zhangsan@123.com”

对于产品经理和业务人员来说,理解函数调用至关重要。

它意味着LLM不再是一个封闭的知识库,而是可以被授权访问和操作任何外部数据和系统的“智能中枢”,这极大地扩展了AI应用的想象空间和商业价值 。

本文由 @Mrs.Data 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 要是能对比一下json格式和Markdown格式的效果优劣就更好了

    来自上海 回复
    1. 嗯 其实感觉这两种格式与其说是优劣,不如说是有自己适合的场景,也可以融合使用

      来自北京 回复
    2. 我们内部推广ai工具的时候都用到了这两种,在领导看来json格式会比Markdown格式书写的更为精准,他说的原理我也明白,但一直没有很好的例子证明,你怎么看呢

      来自上海 回复
    3. json主要用于有严格输出要求的场景,尤其是需要调用工具或者对接其他业务系统。个人感觉并不是所有场景都适合json, 如果只是普通的生成类任务,完全可以不用json。 关于领导说的json格式会比Markdown格式书写的更为精准,因为不是很清楚你们的具体场景,所以很难判断。可以分别用这两种格式写两版提示词,然后对比效果看看。

      来自北京 回复
    4. 感谢反馈!我会继续优化哒

      来自北京 回复
专题
18127人已学习14篇文章
MVP是指开发团队通过提供最小化可行产品获取用户反馈,并在这个最小化可行产品上持续快速迭代,直到产品到达一个相对稳定的阶段。本专题的文章分享了如何做MVP产品。
专题
12472人已学习12篇文章
在日常生活中,使用APP或者网页加载时,加载按钮常常会出现,加载效率影响着用户体验。本专题的文章分享了加载功能的原理和设计。
专题
16767人已学习13篇文章
在互联网时代,把网站的服务封装成一系列计算机易识别的数据接口开放出去,供第三方开发者使用,这种行为就叫做Open API。 而提供开放API的平台本身就被称为开放平台。本专题的文章分享了开放平台的搭建思路。
专题
12227人已学习12篇文章
增长这个话题,是互联网产品在成长过程中绕不过的问题。本专题的文章分享了产品增长指南。
专题
16402人已学习12篇文章
做好竞品分析,有助于了解市场行情,精确自身产品定位,发现新的市场机会,进而制订有助于产品后续迭代发展的有效策略。本专题的文章分享了TO B产品如何做竞品分析。