Prompt 工程基础

1. 两种大语言模型

  1. 基础大模型(Base LLM)

    • 训练方式:基于大规模文本语料,通过预测下一个词来学习语言规律。
    • 能力特点
      • 会生成自然语言(如讲故事):在很久很久以前,有一只小白兔……
      • 具备一定常识问答能力,但容易出错:中国的首都是哪座城市?(基础模型可能不一定回答准确)
  2. 指令调优大模型(Instruction Tuned LLM)

    • 训练方式
      • 在基础大模型上继续训练,输入是人类写的指令,输出是跟随指令的回答。
      • 使用 RLHF(人类反馈强化学习) 微调,使模型更符合人类预期、更听话
    • 关键词:听指令、遵循任务、回答精准
    • 目标价值观:通常希望模型具备求真、务实、善良

2. ChatGPT 提示词工程

原则 1:清晰、具体地写提示词

  1. 在提示词中使用“定界符”

    • 三重引号(```)、XML 标签、章节标题等明确界定要处理的内容范围。
    • 好处:
      • 避免歧义,增强上下文清晰度;
      • 减少模型误解,输出更精准。
  2. 向模型请求结构化输出

    • 举例:生成一个包含虚构书籍名、作者、类型的列表:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      [
      {
      "book_id": 1,
      "title": "The Lost Kingdom",
      "author": "Jane Johnson",
      "genre": "Historical Fiction"
      },
      ...
      ]
    • ✅ 格式化输出 = 易于读取 + 可编程处理
  3. 要求模型检查任务条件是否满足

    • 用法说明:让模型判断输入文本是否包含一系列明确指令,并用格式化步骤输出。
    • 实操示例
      • 输入文本有步骤:让模型按“第一步、第二步……”格式输出具体步骤。
      • 输入文本无步骤:直接让模型输出“没有发现您给出的步骤。”
    • 范例1
      • 三重引号文本:泡一杯茶非常简单!首先,你需要烧开水……
      • 模型输出
        第一节:准备材料……
        第二步:将水烧开……
        ……
    • 范例2
      • 三重引号文本:今天阳光灿烂,鸟儿在歌唱……
      • 模型输出:没有发现您给出的步骤。
  4. 输入多范例提示(Few-Shot Prompting)

    • 定义:给模型多组输入输出样例,帮助其学习一致的风格或格式。
    • 用法举例
      • 你的任务是用成语风格回答:
        1
        2
        3
        4
        <孩子>: 教我耐心。
        <爷爷>: 绳锯木断。
        <孩子>: 教我包容。
        <爷爷>: 宽以待人。
  • 总结要点:
    • 在提示词中使用定界符
    • 向模型请求结构化的输出
    • 要求模型检查任务条件是否满足
    • 输入多范例提示

原则 2:给模型充足的思考时间

  1. 指定完成任务所需的详细步骤
    • 建议:将复杂任务拆分成多步,让模型逐步思考、输出,保证结果准确。
    • 常见指令格式
      1. 总结文本
      2. 翻译内容
      3. 按要求统计并输出
      4. 用 JSON 结构返回
    • 例子
      • 输入要求:
        1
        2
        3
        4
        1. 用一句话总结以下文本。
        2. 将总结翻译成英语。
        3. 在英语摘要中列出每个名字。
        4. 输出包含摘要和名字数量的 JSON 对象。
      • 标准化输出示例:
        1
        2
        3
        4
        摘要:在一个美丽的村庄里,小明和花花兄妹两遭遇不幸,但他们的冒险精神丝毫未减,继续愉快地探索。
        翻译:In a beautiful village, Xiao Ming and Hua Hua, the siblings, encountered misfortune, but their adventurous spirit remained undiminished as they continued to explore joyfully.
        名字:Xiao Ming, Hua Hua
        JSON输出:{"摘要":"在一个美丽的村庄里,小明和花花兄妹两遭遇不幸,但他们的冒险精神丝毫未减,继续愉快地探索。", "名字数量":2}
    • 实用性:这样的输出可以直接传递到其他地方,便于进一步使用。

3. 如何更好地迭代提示词?

3.1 让模型推理并制定解决方案

  • 用法说明:不要让模型直接判断正误,而是让它先独立思考、详细推理,再与用户答案比对

  • 操作流程

    1. 让模型独立计算或推理,写出自己的解题步骤和结果。
    2. 用自己的答案和用户的答案进行比对,再判断用户结果是否正确。
    3. 这样做能防止模型直接“抄答案”,提升准确性。
  • 标准化提示模板:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    任务是确定学生解决方案是否正确。解决该问题,执行以下操作:
    1. 先解决问题。
    2. 再将你的方案与学生的比较并评估学生解决方案是否正确。
    在你自己完成问题之前,不要判断学生的解决方案是否正确。

    使用下列格式:
    问题:...
    回答:...
    学生的回答:...
    实际的回答:...
    解决方案与步骤:...
    评估学生回答和你刚刚计算出来的答案(是/否):...
    学生的分数:...
    正确/错误:...

    目标问题:xxxxxxxxxxx
    学生的回答:xxxxxxxxxxx
    实际回答:...
  • 优点:给模型更多思考时间,回复更精准、更严谨。

  • 规避模型局限

    • 常见问题:语义理解有限、知识覆盖有盲区、长输出易偏离、常识推理出错、存在偏见。
    • 建议:保持批判性思维,重要场合需人工校验。

3.2 迭代提示词的三大方法

  1. 持续打磨、反复迭代

    • 不求“一刀见血”,要反复测试、不断堆样本,多维度调整,逐步摸索出适合自己的提示词套路。
    • 核心:优质提示词是不断调出来的
  2. 明确输出限制与约束条件

    • 限制字数/句数(如:“回答不能超过50个字”/“不超过三句话”)
    • 必须包含或排除哪些内容
    • 强调结构化输出(如代码、表格、HTML 等格式)
  3. 复杂场景下,多层嵌套、多轮细化

    • 示例一:多重限制与内容指定
      “在描述的末尾,包括技术规范中每一个出现过的7个字符的产品ID。你的回答不能超过50个字。”
    • 示例二:输出结构与格式要求
      “将上述所有内容格式化为可在网站中使用的 HTML 代码。将你在开始给出的说明放在 <div> 元素中。”

4. 如何用大语言模型总结文本?

  1. 基本任务形式:生成简洁摘要

    • 示例1:总结产品评论为简短摘要
      • 提示词设计
        • 你的任务是生成来自电子商务网站关于产品评论的简短摘要。
        • 使用三重反引号(```)分隔,最多30个字。
      • 原始评论:“买了个三阶魔方给我儿子当生日礼物……”
      • 模型输出:三阶魔方质量好、手感佳,快速旋转效果佳,孩子喜爱,培养手脑配合的能力。
  2. 强化任务目标:突出指定信息维度

    • 示例2:重点提取价格与价值反馈
      • 提示词设计:请以“价格维度”进行总结,最多50个字,提炼有关产品价格与价值的信息。
      • 模型输出:商品质量好但价格偏高,建议降价以提升性价比。
  3. 多评论汇总能力:跨多个样本生成摘要

    • 示例3:多个评论统一总结(评论1~3)
      • 提示词设计:请用不超过15个字汇总以下多个用户评论内容
      • 示意内容
        • 评论1:衣服质感好,尺寸合适
        • 评论2:杯子酷炫,超出预期
        • 评论3:茶叶包装精致,茶汤清亮
      • 可能输出:材质优良,体验佳,超出预期
  4. 小结

    • 总结任务要配合明确限制(字数、维度)
    • 可逐步增加复杂度,从单评论总结 → 多评论聚合
    • 强化信息聚焦(如价格、功能、感受)可提升质量

5. 让大模型进行语义推理和结构化输出

  1. 传统ML vs 大语言模型

    • 传统机器学习:一个模型只做一个任务(图左:一排木棍)。
    • 大语言模型:一个模型能应对多种任务(图右:树状分支)。
  2. 语义推理与多样输出

    • 核心思路:让模型根据文本内容分析/归纳/标签化/提取字段,而不是简单摘要。
    • 常用任务类型
      • 情感分析(正/负面、one-hot编码、情感词表)
      • 关键词提取(列表、分词、标签)
      • 实体/字段识别(如商品、品牌、公司名、人物)
      • 复杂结构化(JSON、多字段嵌套、one-hot/多热编码等)
  3. 操作方法举例

    • 限制输出种类
      例:只能用“积极的/消极的”回答。
    • 输出情感词表
      例:最多列出5项情绪,逗号分隔。
    • 提取实体信息,结构化成json
      例:{"物品项目": "桌子", "品牌": "飞旺藤达"}
    • 多字段标签,缺失用“未知”补齐
      例:{"情感": "积极的", "愤怒": false, …}
    • 多标签one-hot编码
      例:关键词列表 [微波炉, 火灾, 安全, …] → 0/1标记
  4. 总结

    • 大模型结构化能力远强于传统ML,一套prompt可适配多类型任务
    • 设计prompt时应明确定义输出结构、格式、词表/标签集
    • 复杂任务可多级嵌套提问,按需求定制输出(如提取、标注、编码、归类)

6. 让大模型进行语文本转化

  1. 多语种/多语体翻译

    • 任务思路

      • 明确指定“从X语翻译成Y语”
      • 可以要求区分正式/口语/书面体等语体差异
    • 示例:

      1
      2
      将以下英文文本翻译成书面中文和口语中文:
      "Would you like to order a pillow?"
    • 书面中文:您想要订购一个枕头吗?

    • 口语中文:你要不要订一个枕头?

  2. 多语言识别与分类

    • 任务思路

      • 给多条多语种文本,要求模型识别每一句的语言类型
    • 示例:

      1
      2
      3
      4
      用户回复下面每一行的文本的语言是什么?用 Python 列表形式输出。
      - La performance du système est plus lente que d'habitude.
      - Mi monitor tiene píxeles que no se iluminan.
      - 我的鼠标用不了了
    • 输出:[‘法语’, ‘西班牙语’, ‘中文’]

  3. 语体/场景转换(口语↔书面、随意↔商务)

    • 任务思路:明确指定转换后的语体或场景
    • 示例:
      1
      2
      将以下俚语翻译成商业书信体:
      “兄弟,我是张三,看下这个灯泡的说明书”
    • 商务体结果:
      1
      2
      3
      4
      尊敬的先生/女士:
      我是张三,想请您帮忙查看一下这个灯的说明书,谢谢!
      此致
      敬礼
  4. 结构化格式转换(如 JSON↔HTML 表格)

    • 任务思路
      • 明确要求把数据结构转化为目标格式
      • 指定表头、样式、分隔符等细节
    • 示例:
      1
      2
      将以下 Python 字典从 JSON 翻译成 HTML 表格,并需带有列标题和总标题:
      {"餐厅员工": [{"名字": "李明", "电话": "18023333333"}, ...]}
    • 结果:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      <table>
      <caption>餐厅员工</caption>
      <thead>
      <tr>
      <th>名字</th>
      <th>电话</th>
      </tr>
      </thead>
      <tbody>
      <tr><td>李明</td><td>18023333333</td></tr>
      ...
      </tbody>
      </table>
  5. 拼写语法纠错任务

    • 任务思路
      • 明确要求模型纠错,但不得增删内容和加标点
      • 保持原有结构
    • 示例:
      1
      2
      3
      将文本中的拼写和语法错误进行修正,不要在文本周围加任何标点符号。
      1. 我国高铁建设已取得丰硕成果,但因市场规模巨大,仍不能完全满足物流线运输需求
      ...
    • 结果:全部为修正后的语句列表
  6. 结论&技巧

    • 明确输出格式(如“只能输出 X 格式/语体”)
    • 明确限制(如“不得超过 N 个字/句”)
    • 对于结构转换,尽量给出目标格式示例字段说明
    • 持续测试和微调 prompt,找到最优表达方式

7. 如何使用ChatGPT的温度值(temperature)

  • 什么是 temperature?

    • temperature 是大模型的采样参数,控制生成内容的随机性与创造性
    • temperature=0 时,模型总是选概率最大的词,输出结果趋于唯一且确定(保守、无新意)。
    • temperature=1 时,模型输出变得更有创意、更随机,不确定性增强,内容可能多样但也容易飘。
    • 实际应用中,常用temperature=0.7,能平衡创意与可靠性。
  • 举例说明

    • temperature=0:模型总是选出“最可能”的答案,比如“我最喜欢的动物是——狗”,每次输出都一致。
    • temperature=1:模型可能会输出“狗”、“猫”、“马”、“海豚”等,各种合理但概率低的选项都有机会被选中。
    • 代码调用示例:
      1
      2
      response = get_completion(prompt, temperature=0.7)
      print(response)
  • 应用建议

    • 写作文案、创意文案、对话生成:建议 temperature 取高一点(如 0.8 ~ 1.0)。
    • 做知识问答、数据分析、代码生成:建议 temperature 低一些(如 0 ~ 0.3),保证准确稳定。

8. 聊天机器人

如何用 OpenAI Playground 构建和自定义自己的聊天机器人流程,大致步骤:

  1. 聊天消息结构

    • user message:用户输入的消息内容。
    • assistant message:助手(ChatGPT)返回的内容。
  2. 使用 Playground 搭建

    • 访问平台:platform.openai.com/playground
    • 右侧可以选择模型(如 gpt-3.5-turbo)、温度值(temperature)、回复长度(maximum length)、Top P、惩罚项等参数。
    • 左侧有 system message,可以设定“角色”或风格,比如让 AI 只说喵喵叫、模拟猫咪或者餐厅点单机器人。
  3. system message 作用

    • system message 用于定义助手的基础行为和身份,比如“你是一只猫,用户说什么你都要翻译成猫叫”。
    • 可以详细描述 AI 的性格、回复风格、应答范围。
    • 控制助手的“人格”和任务边界,非常适合实现角色扮演、客服、特定风格输出等自定义场景。
  4. 示例应用

    • 猫咪角色扮演:system message 写明“你只能用猫叫回复”。
    • 点餐机器人:system message 指定菜单、点单规则和流程。
  5. Playground 聊天流程

    • system message(左上角)→ 用户发消息(右上)→ 助手自动回复 → 支持多轮对话。
    • 可以自由切换角色设定、实验 prompt 效果。

参考资料


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

Prompt 工程基础
http://neurowave.tech/2025/02/27/2-3-LLM-prompt-engineering/
作者
Artin Tan
发布于
2025年2月27日
更新于
2025年8月2日