假设你是城中一家小餐馆的老板,雇了一位厨艺顶尖、性格却十分随性的主厨。你吩咐“随便做一桌菜”,他真的能端出米其林级别的抽象料理——菜是好菜,但汤浇在饭上、甜品撒着辣椒粉,顾客看得目瞪口呆。你离不开他的手艺,却受不了他没法交流。直到有一天,你学会在点餐单上写清楚:“一荤一素一汤,汤单独装盒,盒上贴标签,注明菜名和数量。”从此,后厨出品整整齐齐,外卖口碑扶摇直上。这位天才主厨,就是大语言模型(LLM);而那张“写清装盘规则”的点餐单,正是 Prompt 工程中的格式控制(Format Control)。AI 并不知道你期待 JSON 还是 Markdown、要几个字段、标题怎么排——这些都由提示词里的格式指令决定。本文将用这套“主厨管理术”讲透格式控制的六个环节:原理、分隔符、模板、JSON、Markdown,以及出错后的纠错流程。

岗位关联

对 AI 从业者而言,格式控制是 Prompt 工程的基本功:它直接决定 AI 输出能否被程序消费、能否稳定复现。掌握它,就是你从“玩具 Demo”迈向“生产级应用”的第一道门槛。

目录
  1. 可视化演示
  2. 格式控制原理
  3. 分隔符妙用
  4. 结构化模板
  5. JSON格式控制
  6. Markdown格式控制
  7. 格式错误处理
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示二分查找在有序数组中的搜索过程,包括范围初始化、中间元素比较、范围缩小和目标定位,支持步进和自动播放。

本节配有交互动效(进入视口后自动加载,约 3KB)。

初始化搜索范围 有序数组中设定左右边界覆盖全部元素 目标值已确定搜索从全范围开始 L=0, R=n-1 二分查找要求数组有序

格式控制原理

你新开外卖店那周,给主厨的指令只有一句话:“今天做几个拿手菜。”主厨确实做了——三文鱼刺身配芝麻酱、冰镇酸梅汤倒在白米饭上、甜品是撒了辣椒面的布丁。每道菜都好吃,但顾客全看懵了。问题不在手艺,而在需求没说清。AI 主厨也一样:它学过的“菜谱”浩如烟海,你不说清楚“要什么形式”,它就在自己最顺手的菜式上自由发挥。

格式控制的原理其实朴素:大模型是概率生成器,每一个输出 token 都“顺势而走”。提示词里明确的格式要求,等于给这条概率河流筑起了堤坝——模型在训练中见过海量“指令后跟特定格式回答”的样本,所以当你在提示词中指定“用 JSON 格式回答”时,它顺着这种格式惯性走出的概率会显著上升。

实践中的“格式指令”包含三个层次:一是格式类型,如“输出 JSON 对象”;二是字段规格,如“包含 name 和 count 两个键”;三是禁止项,如“不要输出任何解释文字”。三者叠加,模型对输出格式的把握就从“模糊”变成“具体”。值得强调的是,格式指令属于提示词的一部分,与模型参数无关,你不需要调任何超参数——改提示词,就是改产品的行为。

所以,想让主厨端出“一荤一素一汤”而不是抽象料理,诀窍就是把装盘规则写进点餐单。规则越具体,自由发挥的空间越小,出品就越稳定——这就是格式控制的第一课:先让 AI 明确知道“你要什么形状的菜”。

P(目标格式∣明确格式指令)≫P(目标格式∣自由描述)\displaystyle P(\text{目标格式} \mid \text{明确格式指令}) \gg P(\text{目标格式} \mid \text{自由描述})
条件概率的通俗理解:给定“明确格式指令”时,模型产出目标格式的概率,远大于“自由描述”时的概率。两者差距越大,说明格式指令对输出的引导力越强。
  1. 明确格式指令提示词里显式写明格式类型、字段规格与禁止项,让“期望格式”落入模型的注意力中心
    P(目标格式∣明确格式指令)P(\text{目标格式} \mid \text{明确格式指令})
  2. 自由描述开放式提问没有格式约束,模型按训练分布自由发挥
    P(目标格式∣自由描述)P(\text{目标格式} \mid \text{自由描述})
  3. 远大于关系两个概率之间相差越大,格式指令的引导作用就越强
    ≫\gg

分隔符妙用

有一回,你给主厨递了张纸条:“请把以下故事改写成剧本:王小明走进厨房,把醋当成了酱油。”主厨读完认真点头,转身交差:“王小明把醋当成了酱油。”你哭笑不得——他把“故事”和“指令”搅成了一锅粥。后来你学乖了,用三条横线把材料框住:“请把 --- 以下内容 --- 改写成剧本:--- 王小明走进厨房,把醋当成了酱油。 ---”。主厨终于分清“规则”和“原料”,作业一次过关。

分隔符(Delimiter)就是提示词里的“饭盒隔板”。它的作用是把提示词切成两个语义区:指令区告诉 AI 怎么做,内容区放着待加工的材料。没有隔板时,材料里的句子、符号、甚至“请忽略之前的指令”都可能被模型误读成新的指令——这正是提示注入(Prompt Injection)能得逞的入口。

常用的分隔符有三引号 """..."""、尖括号 <...>、三条横线 ---、以及中文场景下的书名号或方括号。使用要点有三条:①分隔符要成对出现并保持醒目;②尽量选不易在原材料中出现的符号;③在提示词里明确“分隔符内的内容是待处理材料”。模型在训练中见过大量类似标记,能很快学会“框起来的就是隔离区”。

分隔符这门手艺,本质是“给原料贴上隔离标签”。下次外卖订单里有汤有饭,记得用隔板把它们分开——主厨不迷糊,你的程序也不容易被奇怪的输入带偏。

提示词=加工规则⏟指令区+分隔符⏟隔离带+待处理原文⏟内容区\displaystyle \text{提示词} = \underbrace{\text{加工规则}}_{\text{指令区}} + \underbrace{\text{分隔符}}_{\text{隔离带}} + \underbrace{\text{待处理原文}}_{\text{内容区}}
一次规范的格式控制提示词 = 指令区 + 隔离带 + 内容区。分隔符是中间那道“墙”,防止两边语义串味。
  1. 加工规则告诉 AI 对材料做什么处理,例如“提取关键信息”或“改写成剧本”
    加工规则\text{加工规则}
  2. 分隔符用于划界的标记,作用是告诉 AI“左右两侧信息的性质不同”
    分隔符\text{分隔符}
  3. 待处理原文真正要被加工的对象,可以是文章、邮件、代码或用户输入
    待处理原文\text{待处理原文}

结构化模板

主厨出品稳定后,新烦恼来了:他交的菜单总是丢三落四——今天忘了写数量,明天漏了口味。你受够了,直接从印刷厂订了一叠固定格式的点餐单:菜品名、数量、口味、备注,几栏印得清清楚楚。从此主厨只需要“填空”,收上来的单子永远四栏齐全。

结构化模板(Template)就是提示词里的“固定点餐单”。做法是:把期望输出的框架直接写进提示词,用占位符标出需要 AI 填充的位置。AI 记性好、模仿力强,看到“菜品名: 数量: 口味:”这样的骨架,会本能地按顺序填满每一个空。

设计模板有三条经验:①字段名要语义自洽,尽量使用常见的、不会产生歧义的词;②占位符形式统一,例如统一用 <...> 或 ___,别一会儿尖括号一会儿方括号;③在模板下方附一个填好的示例——“就像这样”比任何抽象描述都管用。示例既演示了字段顺序,也锁定了值类型(数字、文本、布尔),让 AI 的“填空”有样可依。

点餐单的妙处在于:它把一道开放题变成了填空题。AI 的天赋是模仿,你给它一个漂亮的骨架,它就把骨架还给你——还帮你填满。

模板=[字段1:⟨ ⟩, 字段2:⟨ ⟩, ⋯ , 字段n:⟨ ⟩]\text{模板} = \left[ \text{字段}_1:\langle\ \rangle,\ \text{字段}_2:\langle\ \rangle,\ \cdots,\ \text{字段}_n:\langle\ \rangle \right]
模板的本质是一串“字段名 + 空位”的序列,AI 的任务就是按顺序把空位填满。
  1. 字段名每个信息单元的名字,如“菜品名”“数量”,决定输出的内容语义
    字段i\text{字段}_i
  2. 占位符用统一符号(如尖括号)标出的填空位,告诉模型“这里等着你填”
    ⟨ ⟩\langle\ \rangle
  3. 有序序列字段顺序会被模型当作输出顺序,排列即排版
    字段1, 字段2, ⋯ , 字段n\text{字段}_1,\ \text{字段}_2,\ \cdots,\ \text{字段}_n

JSON格式控制

外卖生意做大了,你发现后台堆积如山的顾客备注根本看不过来。你买了一套仓库管理系统,要求主厨把所有出品“贴上标准标签”再送入仓库:每盒菜必须贴三张标签——菜品名、数量、口味。系统扫码枪“哔”一声就能入库。那套标签格式,在程序世界里就叫 JSON。

JSON(JavaScript Object Notation)是一种严格、通用的“键值对”数据格式,天然适合程序解析。格式控制的常见做法,是在提示词中要求:“只输出一个 JSON 对象,包含以下键:name(字符串)、count(数字)、tags(数组)。”模型会按这个规格生成字符串,程序用 json.loads() 一步转成字典——零人工介入。

让 JSON 输出稳定有四条技巧:①开头就声明“只输出 JSON,不要多余文字”,封堵解释性前缀;②给出键名清单并标注类型,如“数量”必须是数字;③可选键用文字说明“没有则填 null”,避免缺键;④提示词里附一份“标准示例”,把外观焊死。若下游要入库或接 API,JSON 是首选——它是机器与机器之间的“普通话”。

标签贴好、贴统一,仓库(程序)才能扫码即入。给 AI 规定好键名与值类型,就等于把“自由发挥的菜”变成“标准入库的商品”。

JSON={"键1":值1, "键2":值2, ⋯ , "键n":值n}\text{JSON} = \left\{ \text{"键}_1\text{"}:\text{值}_1,\ \text{"键}_2\text{"}:\text{值}_2,\ \cdots,\ \text{"键}_n\text{"}:\text{值}_n \right\}
JSON 对象是一组带引号的键与对应值的集合,花括号包裹整体,程序可直接反序列化。
  1. 带引号的键键必须是双引号括起的字符串,如“菜品名”,是标签体系的核心
    "键i"\text{"键}_i\text{"}
  2. 值可以是字符串、数字、数组或嵌套对象,对应标签下的具体内容
    值i\text{值}_i
  3. 花括号整体表示一个完整的 JSON 对象,程序可序列化也可反序列化
    {⋯ }\left\{ \cdots \right\}

Markdown格式控制

另一边,顾客投诉:你们的外卖盒虽然标签整齐,但随餐附的“食用说明”排版乱七八糟,看不清主打菜和过敏原。于是你让主厨学会一门“人看排版术”:大标题写店名、小标题写菜系、用圆点列菜品、用表格写价格。客人翻开说明,一目了然——这就是 Markdown 的用武之地。

Markdown 是一种轻量级标记语言,用 # 表示标题层级、- 表示列表、| 分隔表格、`` 表示强调。对展示型内容(周报、摘要、说明书、商品描述),让 AI 按 Markdown 结构输出,能显著提升信息层级感。相比 JSON,Markdown 的每一条结构都“为眼睛服务”,而不是“为解析服务”。

Markdown 格式控制的操作要点:①在提示词里指定结构,如“用三级标题组织,把结论放最前”;②有对比信息时要求“用表格呈现”;③可要求“使用加粗突出关键数字”。模型对 Markdown 语法掌握得很扎实,只要给出结构指令和示例,就能产出排版工整的内容。如果你要把内容呈现给人类,Markdown 是性价比最高的输出格式。

同样是菜,给仓库的要贴标签(JSON),给食客的要排版精美(Markdown)。分清“给谁看”是格式控制的第一直觉——选对了盒子,一半的功夫就省下了。

Markdown 输出=标题层级⊕列表⊕表格⊕强调样式\text{Markdown 输出} = \text{标题层级} \oplus \text{列表} \oplus \text{表格} \oplus \text{强调样式}
Markdown 输出是可组合的结构化排版:标题、列表、表格、强调等语法元素叠加,构成人眼友好的层次。
  1. 标题层级# 的数量决定层级(# 一级、## 二级),充当文章骨架
    标题层级\text{标题层级}
  2. 列表与表格并列信息用列表、对照信息用表格,让数据有“形状”
    列表⊕表格\text{列表} \oplus \text{表格}
  3. 强调样式粗体 或 *斜体* 突出要点,引导读者视线
    强调样式\text{强调样式}

格式错误处理

就算点餐单和标签都齐了,主厨偶尔还是会失误:今天少贴一张标签,明天把二维码贴歪,后天在标签旁边多画了个笑脸。你没有开除他——天才难寻——而是定下三条规矩:发现不对就退回去让他重贴;重贴前把“标准贴法”再演示一遍;实在不行,仓库门口装一台扫码校验机,没贴齐标签的盒子直接拦截。

格式错误是生产环境的常态而非意外。常见三类:①杂讯型,模型输出了解释前缀或额外的客套话;②偏差型,JSON 键名、字段类型与约定不符;③包裹型,本该是纯文本的 JSON 被 Markdown 代码块包住。处理思路不是“祈祷模型别出错”,而是建立“纠错流水线”。

纠错流水线的三环节:一是重新提示(Reprompt),在后续请求中追加“上次格式有误,请严格按模板输出,不要解释”,利用模型的长上下文记忆修正;二是示例纠偏,给出一个标准输出让模型照着改;三是程序兜底,用正则抽取 JSON 片段、try/except 捕获解析异常、必要字段缺失时自动补默认值。三者配合,单轮成功率 p 会被“轮次”放大成近乎确定的成功。

与主厨磨合久了你会发现:好厨师也会手滑,但有一套“退菜-重贴-校验”流程的厨房,永远比指望运气更让人安心。格式控制不是一锤子买卖,而是一套让 AI 输出“长期保持体面”的运维体系。

E[重试次数]=1p−1\displaystyle E[\text{重试次数}] = \frac{1}{p} - 1
若单轮调用完全符合格式的概率为 p,则平均需要尝试 1/p 次才首次成功,其中重试次数为 1/p - 1。提示词质量决定 p 的高低。
  1. 单轮成功率一次调用直接产出合规格式的概率,由提示词质量与任务难度决定
    pp
  2. 期望尝试次数几何分布下首次成功所需尝试次数的期望
    1p\frac{1}{p}
  3. 减去成功轮第 1/p 次成功的那一轮不算“重试”,所以整体要减 1
    −1-1

AI 应用场景

客户反馈结构化入库

阶段:提示词设计 / 数据清洗入库

解决的问题:客服团队每天收到上万条非结构化反馈,人工逐条提炼“商品、问题类型、情绪”耗时巨大;传统关键词规则漏判率高。用格式控制让模型直接把反馈转成 JSON,脚本解析后自动入库。

具体案例:提示词写成:“只输出一个 JSON 对象,不要多余文字:{”商品“: “<商品名或 null>”, “问题类型”: “<物流/质量/售后>”, “情绪”: “<正向/负向>”}。待处理反馈:【我的手机壳等了七天还没发货,气死了!】”。模型返回结构化 JSON,入库后 BI 看板自动更新各品类差评率,客服主管每天九点准时收到汇总。

自动化周报生成

阶段:内容生成

解决的问题:团队每周写周报占用管理者大量时间,且格式五花八门难以汇总。用结构化模板配合 Markdown 格式控制,让模型按固定骨架生成周报,直接粘贴到协作平台即可。

具体案例:提示词给出模板:“请严格按以下 Markdown 结构写周报:# 本周进展\n## 已完成\n- 事项1\n## 风险\n| 风险 | 等级 | 对策 |”。模型输出的周报标题层级清晰、表格对比明确,管理者只需做少量修改就能对外发布,汇总时间从两小时压缩到十分钟。

Python 演示

python54 行
# -*- coding: utf-8 -*-# 演示 Prompt 格式控制:模板组装、分隔符、JSON 解析与错误重试import jsonimport re  def fake_gpt(prompt):    """模拟大模型:按提示词中的格式要求返回结果。"""    if "重新严格按模板输出" in prompt:        return '{"菜品名": "宫保鸡丁", "数量": 2, "口味": "微辣"}'    if "只输出一个 JSON 对象" in prompt:        return '好的,让我想想:{"菜品名": "宫保鸡丁", "数量": "两个", "口味": "微辣"}'    return "好的,让我先简单介绍一下这道菜的故事……"  def build_order_prompt(dish, count, taste):    """组装带模板与分隔符的提示词。"""    template = (        "请提取点餐信息,只输出一个 JSON 对象(不要输出多余文字),"        '格式为 {"菜品名": "<菜名>", "数量": <数字>, "口味": "<描述>"}。\n'        "待处理内容:" + "【%s要%s份,%s】" % (dish, count, taste)    )    return template  def parse_json_from_text(text):    """先用正则抽取 JSON 片段,再交给官方解析器。"""    match = re.search(r"\{.*\}", text, re.S)    if not match:        raise ValueError("输出中找不到 JSON 对象")    return json.loads(match.group(0))  def ensure_format(prompt, max_retry=3):    """校验并重试:格式不对就补充约束再次请求。"""    for attempt in range(max_retry):        raw = fake_gpt(prompt)        print("第 %d 次返回:" % (attempt + 1), raw)        try:            data = parse_json_from_text(raw)            if isinstance(data.get("数量"), int) and data.get("菜品名"):                return data        except (ValueError, json.JSONDecodeError):            pass        prompt = prompt + "\n上次输出不符合模板,请重新严格按模板输出,不要解释。"    raise RuntimeError("多次重试后仍然格式错误")  if __name__ == "__main__":    question = build_order_prompt("宫保鸡丁", 2, "微辣")    print("提示词预览:\n" + question + "\n")    result = ensure_format(question)    print("解析结果:", result)    print("数量字段类型:", type(result["数量"]).__name__)
目的:演示“结构化模板 + 分隔符 + JSON 解析 + 出错重试”的完整格式控制链路,可直接运行,无需任何第三方库。
  1. def build_order_prompt(dish, count, taste):把零散的订单信息组装成一条“点餐单”提示词,是格式控制的入口
  2. '格式为 {"菜品名": "<菜名>", "数量": <数字>, "口味": "<描述>"}。'结构化模板:字段名、占位符、值类型一次说清
  3. "待处理内容:" + "【%s要%s份,%s】" % (dish, count, taste)用【】分隔符把待提取原文框起来,与指令区隔离
  4. match = re.search(r"\{.*\}", text, re.S)程序端先用正则抽取 JSON 片段,把“解释前缀”等杂讯挡在门外
  5. return json.loads(match.group(0))官方 JSON 解析器把字符串变成 Python 字典,下游可直接消费
  6. if isinstance(data.get("数量"), int) and data.get("菜品名"):校验键存在且类型正确,类型不符视为格式错误
  7. prompt = prompt + "\n上次输出不符合模板,请重新严格按模板输出,不要解释。"重新提示(Reprompt):把错误反馈追加进上下文,引导模型下一轮修正

常见误区

误区我在提示词最后补一句“请用 JSON 格式输出”,AI 就会乖乖给我标准 JSON,不需要再做别的。

正解一句空泛的“用 JSON”只是告诉模型“大概要什么壳”,却没有告诉它字段名、值类型和禁止项。模型仍可能输出解释前缀、在 JSON 外套 Markdown 代码块、或把“数量”写成“数量(份)”。正确做法是给模板、给示例、加“不要输出多余文字”封堵杂讯——就像只对主厨喊“装盒”,却不告诉他几个盒子、标签怎么写。

为何常见:因为简单请求偶尔会成功,让人误以为“已经够用”,忽略了模型输出的随机性——一次侥幸不代表次次稳定。

误区AI 输出的 Markdown 带标题和列表,层次分明,我直接用程序去解析也一样的吧?

正解Markdown 是给“人眼”设计的展示格式,语法松散、写法多样,程序解析极易出错。程序消费的结构化数据应使用 JSON 等严格格式;Markdown 更适合渲染给用户看。就像菜单排版再精美,仓库管理员入库时只认标准标签。

为何常见:分不清“给人看”与“给机器看”两种格式的定位,觉得“看得懂”就等于“好解析”。

误区AI 输出格式不对时,我让程序多自动重试几遍,总有一次能撞对。

正解如果提示词本身缺少模板、示例与约束,模型每轮的输出分布都差不多,重试只是碰运气。应该先升级提示词(加模板、加反例、明确禁止项),再用程序校验兜底。对一位没看懂“装盒要求”的主厨,催他一百遍,他端上来的还是同样的摆法。

为何常见:把模型输出的“随机性”误当成“可碰运气的机会”,忽略了提示词才是最大的杠杆。

误区分隔符用引号还是书名号差别不大,反正 AI 都能看懂。

正解分隔符要成对、醒目、不易与正文冲突,最好在提示词里说明“分隔符内是待处理内容”。若分隔符与原文里的符号撞车,模型可能划错边界、漏掉内容。就像饭盒隔板装反了,汤照样渗进米饭。

为何常见:分隔符看起来是小事,容易被省略或随手使用,缺乏对它“划界防串味”作用的认知。

面试题

Q1. 以下哪项最能描述 Prompt 格式控制的作用?

单选题 · easy

  • A.让模型输出速度变得更快
  • B.让模型输出符合预期结构← 正确答案
  • C.减少模型所需的数据规模
  • D.提升模型推理的准确程度

答案:B。格式控制解决的是“输出长什么样”的问题——结构、字段、标记是否合规,而非速度、数据量或推理精度。就像点外卖时规定“汤和饭分盒装”,管的是包装方式,不是厨师做菜快慢。

Q2. 在 Prompt 中使用分隔符的主要目的是什么?

单选题 · easy

  • A.压缩提示词字符长度
  • B.让模型生成更有文采
  • C.隔离指令与待处理内容← 正确答案
  • D.提升接口的并发能力

答案:C。分隔符像饭盒隔板,把“加工规则”和“待处理原文”分开,防止内容里的说法干扰指令语义。它与压缩长度、文采、并发都没有关系。

Q3. 以下哪组符号适合在提示词里充当分隔符?

单选题 · easy

  • A.逗号、句号、感叹号
  • B.数字、英文大小写字母
  • C.三引号、尖括号、分隔线← 正确答案
  • D.加号、减号、乘除符号

答案:C。分隔符要成对、醒目、不易与正文冲突,三引号、尖括号、三条横线都满足;标点、数字、运算符语义太普通,容易被模型当作提示词的普通文本。

Q4. 让模型“只输出 JSON”时,补充哪句话最能减少杂讯?

单选题 · mid

  • A.请先展开讲讲你的思路
  • B.不要输出任何多余文字← 正确答案
  • C.请放慢回答的节奏
  • D.以上三种方法都可以

答案:B。解释性前缀是 JSON 输出最常见“污染物”。“不要输出任何多余文字”直接封堵了客套话和思路展示;展开思路、放慢节奏都与减少杂讯无关。

Q5. 关于结构化模板的正确说法是?

单选题 · mid

  • A.模板字段越多效果就越好
  • B.模板只能用于 JSON 格式
  • C.模板会降低模型的理解力
  • D.模板提供占位符让 AI 填空← 正确答案

答案:D。模板把“自由作文”变成“填空题”:字段名 + 占位符 + 示例。字段并非越多越好,模板也不限 JSON(Markdown 表格同样是模板),更不会降低模型理解力。

Q6. Markdown 格式控制最适合哪种应用场景?

单选题 · mid

  • A.报表美化后直接给用户看← 正确答案
  • B.程序自动化解析入库
  • C.网络请求加密与传输
  • D.训练数据批量做清洗

答案:A。Markdown 提供标题、列表、表格等人眼友好的排版,适合展示层;程序解析入库应优先选 JSON。加密传输和训练清洗与展示格式无关。

Q7. JSON 格式控制中,为什么建议在提示词里给“示例值”而不仅列字段名?

单选题 · hard

  • A.示例可降低值类型歧义← 正确答案
  • B.示例能大幅缩短提示词
  • C.示例能提升接口并发量
  • D.这是提示词的强制规范

答案:A。示例告诉模型“数量”是数字、“口味”是字符串等类型细节,同时示范键的写法,减少歧义。示例通常让提示词变长,与并发量、强制规范无关。

Q8. 以下哪些属于“格式错误”的常见表现?

多选题 · mid

  • A.输出前带不必要的讲解← 正确答案
  • B.JSON 键名与要求不一致← 正确答案
  • C.在 JSON 外套了代码块← 正确答案
  • D.返回了 HTTP 404 状态码

答案:ABC。杂讯前缀、键名偏差、代码块包裹都是真实高发的格式问题;404 是网络层状态码,与模型输出格式无关。

Q9. 处理格式错误的三板斧包括哪些?

多选题 · hard

  • A.重新提示并补充更强约束← 正确答案
  • B.提供一个正确示例纠偏← 正确答案
  • C.程序端校验与修复兜底← 正确答案
  • D.直接放弃本轮请求重开

答案:ABC。重新提示(Reprompt)、示例纠偏、程序校验兜底是完整的纠错流水线。直接放弃请求既不解决问题,也浪费了对话上下文中已有的有效信息。

Q10. 生产环境中模型输出常被反引号包裹导致解析失败,最稳妥的兜底策略是?

单选题 · extreme

  • A.单纯无限次暴力重试请求
  • B.忽略错误直接进入下一步
  • C.把失败结果硬写入缓存
  • D.先用正则抽取再尝试解析← 正确答案

答案:D。提示词优化是“治本”,但输出仍有随机扰动。程序侧先用正则抽取 JSON 片段再交给解析器,能把“包裹污染”挡在门外;无限重试、忽略错误、硬写缓存都会放大生产风险。