Skip to content

14.3 prompt

14.3.1 什么是 prompt

大模型 prompt 指在大语言模型应用中,用于 “提示” 模型唤起特定能力以解决实际问题的提问方式

prompt 就像钥匙,引导模型从预训练积累的海量信息中,精准唤起如理解复杂文本、总结信息、生成内容、逻辑推理等能力,满足用户实际需求

14.3.2 prompt 的基本框架

prompt 包含的要素:

  • 指令:明确告诉模型需要完成的任务或目标
  • 上下文:提供必要的背景信息或示例,以帮助模型理解任务
  • 输入数据:用户提供的具体数据或问题,模型将基于这些信息进行处理和生成输出
  • 输出指示:模型生成的结果,通常是对输入的回答或处理结果

prompt 五大框架

1. RTF框架

RTF(Role-Task-Format)框架是一个非常简单通用的Prompt提示框架,我们和任意大模型对话场景下都可以使用该规范进行改进输出

  • R-Role:角色,指的是你希望模型扮演的角色色(程序员、数据分析师、讲解员、记者等等)
  • T-Task:任务,指的是你希望模型完成的具体任务
  • F-Format:格式,指的是你希望模型输出的结果格式(比如:表格、Markdown、英文等等)
  • 主要优点
  1. 简单、方便
  2. 指定Role角色,可以让大模型在当前的角色范围内回答知识,这在一些特定的领域中非常有效
  3. 指定Role角色也能让工程上检索知识能够确定边界范围,配合元数据所发挥的威力会更强
  4. 如果结合RAG知识内容检索,那么上下文回答的内容会让用户感觉更加是顺畅

2. 思考链模式

通过这种模式来逐步改善大模型的推理能力,非常适合一些复杂的任务处理。例如:

  • 分析型或者逻辑推理型的任务
  • 决策
  • 解决问题(比如程序员根据错误日志找Bug)

而要使用这种模式,只需要在末尾添加”让我们逐步思考”即可。例如:

python
# 数据源(与指令区分)
user_datasource = """XXX……""" 

prompt1 = """分析一下在人工客服服务场景下,'''{user_datasource}'''中客户有哪些诉求。用一句话概括。"""
prompt2 = """分析一下在人工客服服务场景下,'''{user_datasource}'''中客户有哪些诉求。用一句话概括。让我们逐步思考。"""

# 模型输出结果
output1:在人工客服服务场景下,客户主要诉求为:微信账号存在安全风险导致无法添加好友、单点拦截、下载安装微信出现问题等,寻求客服协助解决问题。
output2:在人工客服服务场景下,客户主要诉求为:微信账号存在安全风险导致无法添加好友,以及因违规行为被限制登录,客户希望客服能够尽快处理这些问题。

# 分析结果
output1中的”单点拦截”并不是用户的诉求,而output2显然更加正确

3. RISEN框架

  • R-Role:大模型扮演的角色
  • I-Instructions:指示命令,和Task-任务差不多
  • S-Steps:步骤
  • E-End Goal:最终目标
  • N-Narrowing(Constraints):缩小范围(约束条件),和RTF框架中的Format有异曲同工之妙,一个是格式的约束,而这里的约束可以是任意方面,比如回答的内容(特定领域)、字数限制等等方面

该框架主要适合:

  • 撰写具有特定约束的任务(例如博客文章)
  • 有明确指导方针的任务(例如商业计划)

4. RODES框架

  • R - Role:角色
  • O - Objective:目标
  • D - Details:详细的细节
  • E - Examples:示例
  • S - Sense Check:感官检查

5. 密度链模式

密度链模式Prompt是Salesforce、麻省理工学院和哥伦比亚大学的研究人员推出的一种新提示,它非常的高效,使用递归来创建越来越好的输出的提示,与普通提示生成的 GPT-4 摘要相比,它生成的摘要更加密集且更适合人们理解。

适合:

  • 总结
  • 改进您最喜欢的提示
  • 通过递归生成可用的长格式内容

14.3.3 打造高效 prompt 的两大核心原则

原则一:编写明确和具体的指令

为了让模型精准理解我们的意图,编写清晰、明确且具体的指令至关重要。这不仅能避免模型产生误解,还能显著提升输出结果的相关性和准确性。

  1. 使用分隔符清晰界定输入部分 在构建prompt时,使用分隔符将特定文本部分与提示的其他部分清晰隔开,能有效避免提示词冲突。任何能让模型识别出单独部分的符号都可作为分隔符,常见的包括:
  • 章节标题:通过不同层级的标题区分不同内容模块
  • 三重双引号""" 在代码编写中常用于包裹较长的文本字符串
  • 三重单引号''' 功能与三重双引号类似,适用于不同的语法环境
  • 三重破折号--- 在文本中起到明显的分隔作用
  • 角括号<> 常被用于标记特定元素
  • XML标签:利用结构化的标签形式区分不同内容
python
# 示例1:假设我们需要对一段产品描述进行总结,可通过如下方式使用分隔符:
product_description = f"""这是一款全新的智能手表,具备心率监测、睡眠追踪等健康功能,还支持多种运动模式记录,拥有高清显示屏和长达7天的续航能力。"""
prompt =  f"""请总结以下产品描述:'''{product_description}'''"""

# 示例2:如果要让模型对一段用户评论进行情感分析,示例如下:
user_comment = f"""这款手机的拍照效果真的太棒了,色彩还原度高,夜景模式也很出色,唯一不足的是电池续航有点短。"""
prompt = f"""分析以下用户评论的情感倾向:''' {user_comment}''' """

这种方式能够确保模型明确区分指令和待处理文本,避免因指令混淆而产生错误输出

  1. 要求结构化输出 为了便于后续对模型输出进行解析和处理,我们可以要求模型以特定的结构化格式输出,如HTML或JSON。这种方式能极大提高数据处理的效率,尤其是在Python编程环境中,结构化输出可直接读入字典或列表中,方便进一步的分析与操作。
python
# 示例 1:要求模型以 JSON 格式输出
prompt = "请以json格式列出每个nodeType所体现的用户诉求、客服方案。每一个json-value不超过20个字"

# 数据源(与指令区分)
user_datasource = """XXX……""" 

# 模型输出
{
  "IVR": {
    "用户诉求": "微信使用问题求助",
    "客服方案": "引导正常使用或自助处理"
  },
  "ASYNC": {
    "用户诉求": "账号封禁等相关申诉",
    "客服方案": "按规则处理或引导自助"
  },
  "AI": {
    "用户诉求": "支付相关问题咨询",
    "客服方案": "要求用户详细描述问题"
  }
}

# 示例2:以HTML格式输出一个简单的书籍

prompt = "请以HTML格式列出三本你推荐的科幻小说及其作者。"
# 模型输出
<ul>
    <li>《三体》 - 刘慈欣</li>
    <li>《基地》 - 艾萨克·阿西莫夫</li>
    <li>《银河帝国:机器人五部曲》 - 艾萨克·阿西莫夫</li>
</ul>
  1. 要求模型检查条件是否满足
    在面对复杂任务时,如果在一些假设条件,而这些条件并非总是成立,那么我们需要引导模型首先对这些假设进行检查。若条件不满足,模型应明确指示并停止继续执行任务,以避免无效计算和错误结果
python
# 示例:假设我们要求模型计算一个数学表达式,但前提是表达式所有都为正数。
expression = "5 + 3 - (-2)"
prompt = f"""首先检查表达式 '{expression}' 中的所有数字是否都为正数。如果是,请计算该表达式的值;如果不是,请输出'表达式中存在非正数,无法计算'。"""
# 模型输出
表达式中存在非正数,无法计算
  1. Few-shot prompting(少样本提示) 在要求模型执,提供成功完成任务的示例,能够帮助模型更好地理解任务要求和期望输出的格式
python
# 示例:要求模型按照特定格式将中文词汇翻译成英文并造句。
prompt = """
示例1:
中文词汇:苹果
翻译:apple
造句:I like to eat apples.

示例2:
中文词汇:学校
翻译:school
造句:I go to school every day.

中文词汇:图书馆
翻译:
造句:
"""
# 模型输出
翻译:library
造句:I often read books in the library.

原则二:予模型充足的思考时间

  1. 明确完成任务所需的步骤
python
# 示例:要求模型分析一首古诗,格式为“诗歌主题 - 主要意象 - 表达情感”
poem = "床前明月光,疑是地上霜。举头望明月,低头思故乡。"
prompt = f"""请按照“诗歌主题 - 主要意象 - 表达情感”的格式分析这首诗:{poem}"""
# 模型输出
思乡之情 - 明月 - 对故乡的深切思念
  1. 引导模型在得出结论前充分思考方案
python
# 示例:问模型“如何提高公司的员工满意度”
prompt = "在回答如何提高公司的员工满意度之前,请先思考至少三个方面的因素,然后综合这些因素给出全面的建议。"
# 模型输出
首先,从薪酬福利方面,可适当提高薪资水平、完善福利体系,如增加带薪休假天数等;其次,从职业发展角度,为员工提供更多培训机会和晋升通道;再者,从工作环境来看,营造舒适、和谐的办公氛围,加强团队建设活动。综合这些方面,提高公司员工满意度可以从优化薪酬福利、提供职业发展机会以及改善工作环境等措施入手。

原则三:模型的局限性与应对策略

模型“幻觉”
即使模型在训练过程中接触了海量知识,但它并不能完美记住所有信息,也难以精准把握自身知识的边界。这就导致在面对晦涩主题的问题时,模型可能会编造出看似合理但实际上错误的内容,这就是所谓的“幻觉” 解决幻觉的一种策略
为了有效应对幻觉问题,我们可以要求模型在回答问题前,首先从给定文本中寻找相关引用,并依据这些引用来构建答这种方式,模型的回答将基于可靠的信息来源,而非凭空臆测,从而大大提高回答的准确性和可信度。同时,这种方法还能够实现答案的可追溯性,便于对模型输出进行验证和审查

python
# 示例:给定一段关于历史事件的文本,要求模型回答相关问题。
text = """1861年,美国爆发了南北战争,这场战争是美国历史上的重要转折点,它主要围绕奴隶制的存废问题展开,北方主张废除奴隶制,南方则坚持保留。最终北方取得了胜利,为美国的工业化发展铺平了道路。"""
prompt = f"""请从上述文本中找出相关信息,回答南北战争主要围绕什么问题展开?"""
# 模型输出
南北战争主要围绕奴隶制的存废问题展开,北方主张废除奴隶制,南方则坚持保留。

14.3.4 不同需求类型的prompt设计

需求类型特点需求表达公式推理模型适配策略通用模型适配策略
决策需求需权衡选项、评估风险、选择最优解目标 + 选项 + 评估标准要求逻辑推演和量化分析直接建议,依赖模型经验归纳
分析需求需深度理解数据/信息、发现模式或因果关系问题 + 数据/信息 + 分析方法触发因果链推导与假设验证表层总结或分类
创造性需求需生成新颖内容(文本/设计/方案)主题 + 风格/约束 + 创新方向结合逻辑框架生成结构化创意自由发散,依赖示例引导
验证需求需检查逻辑自洽性、数据可靠性或方案可行性结论/方案 + 验证方法 +风险点自主设计验证路径并排查矛盾简单确认,缺乏深度推演
执行需求需完成具体操作(代码/计算/流程)任务 + 步骤约束 + 输出格式自主优化步骤,兼顾效率与正确性严格按指令执行,无自主优化

14.3.5 提示语设计案例

复杂任务的设计案例

语用意图分析(PIA):解码内容生成目的

PIA建立在语用学和言语行为理论的基础上,通过分析任务的语用意图,为AI设定明确的任务目标,并提出了以下分类:
陈述型(Assertive)指令型(Directive)承诺型(Commissive)表达型(Expressive)宣告型(Declarative)

  • PIA实施步骤
  1. 识别主要语用意图:确定任务的首要目的
  2. 分析次要语用意图:识别可能的辅助目的
  3. 评估语用意图的强度:量化每种意图的强度
  4. 构建语用意图矩阵:创建语用意图及其强度的矩阵
  • 示例: 假设需要撰写一篇关于“气候变化”的文章,目的是“增强公众意识并促进行动”:
plaintext
任务目标:创作一篇关于气候变化的文章,旨在提高公众意识并促进行动。
主要语用意图:
(1)陈述型(强度8):提供可靠的气候变化数据和科学发现。
(2)指令型(强度7):鼓励读者采取具体的环保行动。
(3)表达型(强度6):传达对气候变化威胁的紧迫感。
请确保文章:
包含来自权威来源的最新气候数据
解释气候变化的原因和影响
提供至少5个读者可以立即采取的行动建议
使用引人入胜的语言来激发读者的环保意识。

主题聚焦机制(TFM):锁定核心内容

TFM借鉴了认知语言学中的“原型理论”和“框架语义学”,可开发以下技巧:

主题原型构建:确定主题的核心特征和典型例子
语义框架设置:创建与主题相关的概念网络
重点梯度建立:设定主题相关性的层级结构

  • TFM实施步骤
  1. 定义主题原型:列出主题的关键特征和代表性例子
  2. 构建语义框架:创建与主题相关的概念图
  3. 设置重点梯度:按重要性排序相关概念和子主题
  4. 创建主题引导符:设计特定的关键词或短语来保持主题聚焦

细节增强策略(DES):深化内容质量

DES整合了认知叙事学和信息处理理论,开发了以下策略: 多模态描述微观—宏观连接对比强化时空定位数据可视化

跨域映射机制(CMM):激发创新思维

概念嫁接策略(CGS):创造性融合

知识转移技术(KTT):跨域智慧应用

随机组合机制(RCM):打破常规思维

极端假设策略(EHS):突破思维界限

多重约束策略(MCS):激发创造性问题解决

语体模拟机制(RSM):精准捕捉语言特征

情感融入策略(EIS):增强文本感染力

修辞技巧应用(RTA):提升语言表现力

元叙事提示框架:设计生成自反性文本的高阶提示