在上一章中,我们系统性地讲解了大语言模型提示词的基础概念和核心框架,并深入解析了 LLM 的关键参数,这些知识对 LLM 应用的理解与开发至关重要。本章将重点介绍构建高效 Prompt 的两大核心原则。
一、打造高效Prompt核心原则
1:编写明确和具体的指令
为了让模型精准理解我们的意图,编写清晰、明确且具体的指令至关重要。这不仅能避免模型产生误解,还能显著提升输出结果的相关性和准确性。
策略1:使用分隔符清晰界定输入部分
在构建prompt时,使用分隔符将特定文本部分与提示的其他部分清晰隔开,能有效避免提示词冲突。任何能让模型识别出单独部分的符号都可作为分隔符,常见的包括:
● 章节标题:通过不同层级的标题区分不同内容模块。
● 三重双引号:""" ,在代码编写中常用于包裹较长的文本字符串。
● 三重单引号:''' ,功能与三重双引号类似,适用于不同的语法环境。
● 三重破折号:--- ,在文本中起到明显的分隔作用。
● 角括号:<> ,常被用于标记特定元素。
● XML标签:,利用结构化的标签形式区分不同内容。
示例1:假设我们需要对一段产品描述进行总结,可通过如下方式使用分隔符:
product_description = f"""这是一款全新的智能手表,具备心率监测、睡眠追踪等健康功能,还支持多种运动模式记录,拥有高清显示屏和长达7天的续航能力。"""
prompt = f"""请总结以下产品描述:'''{product_description}'''"""
示例2:如果要让模型对一段用户评论进行情感分析,示例如下:
user_comment = f"""这款手机的拍照效果真的太棒了,色彩还原度高,夜景模式也很出色,唯一不足的是电池续航有点短。"""
prompt = f"""分析以下用户评论的情感倾向:''' {user_comment}''' """
这种方式能够确保模型明确区分指令和待处理文本,避免因指令混淆而产生错误输出。
策略2:要求结构化输出
为了便于后续对模型输出进行解析和处理,我们可以要求模型以特定的结构化格式输出,如HTML或JSON。这种方式能极大提高数据处理的效率,尤其是在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>
策略3:要求模型检查条件是否满足
在面对复杂任务时,如果在一些假设条件,而这些条件并非总是成立,那么我们需要引导模型首先对这些假设进行检查。若条件不满足,模型应明确指示并停止继续执行任务,以避免无效计算和错误结果。同时,考虑潜在的边缘情况,并为模型设定相应的处理规则,能够有效减少意外错误,确保模型输出的稳定性和可靠性。
示例:假设我们要求模型计算一个数学表达式,但前提是表达式所有都为正数。
expression = "5 + 3 - (-2)"
prompt = f"""首先检查表达式 '{expression}' 中的所有数字是否都为正数。如果是,请计算该表达式的值;如果不是,请输出'表达式中存在非正数,无法计算'。"""
# 模型输出
表达式中存在非正数,无法计算
策略4:Few-shot prompting(少样本提示)
在要求模型执,提供成功完成任务的示例,能够帮助模型更好地理解任务要求和期望输出的格式。通过这些示例,模型可以学习到任务的模式和规律,从而在处理实际输入时生成更符合预期的结果。少样本提示尤其适用于处理一些复杂或具有特定格式要求的任务,能够显著提升模型的表现。
示例:要求模型按照特定格式将中文词汇翻译成英文并造句。
prompt = """
示例1:
中文词汇:苹果
翻译:apple
造句:I like to eat apples.
示例2:
中文词汇:学校
翻译:school
造句:I go to school every day.
中文词汇:图书馆
翻译:
造句:
"""
# 模型输出
翻译:library
造句:I often read books in the library.
2、给予模型充足的思考时间
当模型因急于得出结论而出现推理错误时,我们需要通过优化式,为模型提供更清晰的推理路径,引导其进行更深入、全面的思考。
策略1:明确完成任务所需的步骤
为模型详细指定完成任务所需遵循的步骤,能够帮助模型有条不推理和计算。通过这种方式,模型可以更清晰地理解任务的逻辑结构,避免因思路混乱而产生错误。例如,要求模型按照特定格式输出,能够引导其在处理过程中注重信息的组织和呈现方式。
示例:要求模型分析一首古诗,格式为“诗歌主题 - 主要意象 - 表达情感”。
poem = "床前明月光,疑是地上霜。举头望明月,低头思故乡。"
prompt = f"""请按照“诗歌主题 - 主要意象 - 表达情感”的格式分析这首诗:{poem}"""
# 模型输出
思乡之情 - 明月 - 对故乡的深切思念
策略2:引导模型在得出结论前充分思考方案
明确指示模型在得出最终结论前,先进行充分的推理和分析,往往能获得更优的结果。这种方式能够促使模型深入挖掘问题的本质,综合考虑各种因素,从而避免因片面或仓促的判断而导致的错误。
示例:问模型“如何提高公司的员工满意度”。
prompt = "在回答如何提高公司的员工满意度之前,请先思考至少三个方面的因素,然后综合这些因素给出全面的建议。"
# 模型输出
首先,从薪酬福利方面,可适当提高薪资水平、完善福利体系,如增加带薪休假天数等;其次,从职业发展角度,为员工提供更多培训机会和晋升通道;再者,从工作环境来看,营造舒适、和谐的办公氛围,加强团队建设活动。综合这些方面,提高公司员工满意度可以从优化薪酬福利、提供职业发展机会以及改善工作环境等措施入手。
二、模型的局限性与应对策略
尽管语言模型在大量数据的训练下展现出强大的能力,但它们并非完美无缺。其中,“幻觉”现象是模型面个重要挑战。
模型“幻觉”
即使模型在训练过程中接触了海量知识,但它并不能完美记住所有信息,也难以精准把握自身知识的边界。这就导致在面对晦涩主题的问题时,模型可能会编造出看似合理但实际上错误的内容,这就是所谓的“幻觉”。
解决幻觉的一种策略
为了有效应对幻觉问题,我们可以要求模型在回答问题前,首先从给定文本中寻找相关引用,并依据这些引用来构建答这种方式,模型的回答将基于可靠的信息来源,而非凭空臆测,从而大大提高回答的准确性和可信度。同时,这种方法还能够实现答案的可追溯性,便于对模型输出进行验证和审查。这就需要建立内容丰富、强大的RAG系统。
示例:给定一段关于历史事件的文本,要求模型回答相关问题。
text = """1861年,美国爆发了南北战争,这场战争是美国历史上的重要转折点,它主要围绕奴隶制的存废问题展开,北方主张废除奴隶制,南方则坚持保留。最终北方取得了胜利,为美国的工业化发展铺平了道路。"""
prompt = f"""请从上述文本中找出相关信息,回答南北战争主要围绕什么问题展开?"""
# 模型输出
南北战争主要围绕奴隶制的存废问题展开,北方主张废除奴隶制,南方则坚持保留。
原文地址:https://mp.weixin.qq.com/s/cswPA01laxTalkjNThdvWw