1、概述
在数字化浪潮的推动下,AI大模型以其卓越的自然语言处理能力和智能交互特性,迅速在很多领域中占据了重要地位。比如:与传统客服相比,AI大模型展现出了无可比拟的优势,通过精心设计的 prompt,能使我们在客服托管、智能客服等多个项目和业务场景中发挥显著作用,大幅提高工作效率,优化成果质量。
为了精进个人能力以及助力产研学习氛围的提升,本人在学习完吴恩达教授以及其他前辈们有关 prompt 的课程之后,整理了这份学习资料,以供大家学习交流。该笔记将深入探讨 prompt 的定义和撰写框架,详细阐述打造高效 prompt 的原则与策略,同时从技术原理层面剖析 prompt,助力读者更好地运用大模型,提升业务价值。
2、什么是Prompt
大模型 prompt 指在大语言模型应用中,用于 “提示” 模型唤起特定能力以解决实际问题的提问方式。早期它被称作 “输入形式” 或 “输入模板”,后来 “prompt”(提示)这一叫法因契合大语言模型语境,能准确体现其在调用模型能力方面的关键作用,成为公认术语。
大模型多数核心能力在预训练阶段形成,prompt 就像钥匙,引导模型从预训练积累的海量信息中,精准唤起如理解复杂文本、总结信息、生成内容、逻辑推理等能力,满足用户实际需求。它并非把模型当作单纯知识库,而是高效调用其能力,实现类似人类运用智能解决复杂问题的效果,是 prompt 工程的核心,对用好大语言模型意义重大。
3、撰写Prompt的基本框架
3.1、Prompt包含的要素
● 指令:想要模型执行的特定任务或指令。
● 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
● 输入数据:用户输入的内容或问题。
● 输出指示:指定输出的类型或格式。
3.2、Prompt五大框架
3.2.1 RTF框架
RTF(Role-Task-Format)框架是一个非常简单通用的Prompt提示框架,我们和任意大模型对话场景下都可以使用该规范进行改进输出。
● R-Role(角色):指定大模型担当固定角色(程序员、数据分析师、讲解员、记者等等)
● T-Task(任务): 任务,告诉大模型需要为我们做的事情
● F-Format(格式):大模型最终结果的返回格式(比如:表格、Markdown、英文等等)
主要优点:
● 简单、方便。
● 指定Role角色,可以让大模型在当前的角色范围内回答知识,这在一些特定的领域中非常有效。
● 指定Role角色也能让工程上检索知识能够确定边界范围,配合元数据所发挥的威力会更强。
● 如果结合RAG知识内容检索,那么上下文回答的内容会让用户感觉更加是顺畅。
3.2.2 思考链模式
通过这种模式来逐步改善大模型的推理能力,非常适合一些复杂的任务处理。例如:
● 分析型或者逻辑推理型的任务
● 决策
● 解决问题(比如程序员根据错误日志找Bug)
而要使用这种模式,只需要在末尾添加”让我们逐步思考”即可。例如:
# 数据源(与指令区分)
user_datasource = """XXX……"""
prompt1 = """分析一下在人工客服服务场景下,'''{user_datasource}'''中客户有哪些诉求。用一句话概括。"""
prompt2 = """分析一下在人工客服服务场景下,'''{user_datasource}'''中客户有哪些诉求。用一句话概括。让我们逐步思考。"""
# 模型输出结果
output1:在人工客服服务场景下,客户主要诉求为:微信账号存在安全风险导致无法添加好友、单点拦截、下载安装微信出现问题等,寻求客服协助解决问题。
output2:在人工客服服务场景下,客户主要诉求为:微信账号存在安全风险导致无法添加好友,以及因违规行为被限制登录,客户希望客服能够尽快处理这些问题。
# 分析结果
output1中的”单点拦截”并不是用户的诉求,而output2显然更加正确
3.2.3 RISEN框架
● R-Role:大模型扮演的角色
● I-Instructions: 指示命令,和Task-任务差不多
● S-Steps: 步骤
● E-End Goal: 最终目标
● N-Narrowing(Constraints): 缩小范围(约束条件),和RTF框架中的Format有异曲同工之妙,一个是格式的约束,而这里的约束可以是任意方面,比如回答的内容(特定领域)、字数限制等等方面
该框架主要适合:
● 撰写具有特定约束的任务(例如博客文章)
● 有明确指导方针的任务(例如商业计划)
3.2.4 RODES框架
● R-Role: 角色
● O - Objective: 目标
● D - Details: 详细的细节
● E - Examples: 示例
● S - Sense Check: 感官检查
3.2.5 密度链模式
密度链模式Prompt是Salesforce、麻省理工学院和哥伦比亚大学的研究人员推出的一种新提示,它非常的高效,使用递归来创建越来越好的输出的提示,与普通提示生成的 GPT-4 摘要相比,它生成的摘要更加密集且更适合人们理解。
适合:
● 总结
● 改进您最喜欢的提示
● 通过递归生成可用的长格式内容
4、LLM大语言模型参数
最后,我们来了解一下LLM的相关参数,这有助于你更好的进行LLM的AI项目开发。
使用提示词时,您通常会通过 API 或直接与大语言模型进行交互。你可以通过配置一些参数以获得不同的提示结果。调整这些设置对于提高响应的可靠性非常重要,你可能需要进行一些实验才能找出适合您的用例的正确设置。以下是使用不同LLM提供程序时会遇到的常见设置:
Temperature:简单来说,temperature 的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。(调小temperature)实质上,你是在增加其他可能的 token 的权重。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 temperature 值,以促使模型基于事实返回更真实和简洁的结果。对于诗歌生成或其他创造性任务,适度地调高 temperature 参数值可能会更好。
Top_p:同样,使用 top_p(与 temperature 一起称为核采样(nucleus sampling)的技术),可以用来控制模型返回结果的确定性。如果你需要准确和事实的答案,就把参数值调低。如果你在寻找更多样化的响应,可以将其值调高点。
使用Top P意味着只有词元集合(tokens)中包含top_p概率质量的才会被考虑用于响应,因此较低的top_p值会选择最有信心的响应。这意味着较高的top_p值将使模型考虑更多可能的词语,包括不太可能的词语,从而导致更多样化的输出。
一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。
Max Length:您可以通过调整 max length 来控制大模型生成的 token 数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。
Stop Sequences:stop sequence 是一个字符串,可以阻止模型生成 token,指定 stop sequences 是控制大模型响应长度和结构的另一种方法。例如,您可以通过添加 “11” 作为 stop sequence 来告诉模型生成不超过 10 个项的列表。
Frequency Penalty:frequency penalty 是对下一个生成的 token 进行惩罚,这个惩罚和 token 在响应和提示中已出现的次数成比例, frequency penalty 越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。
Presence Penalty:presence penalty 也是对重复的 token 施加惩罚,但与 frequency penalty 不同的是,惩罚对于所有重复 token 都是相同的。出现两次的 token 和出现 10 次的 token 会受到相同的惩罚。此设置可防止模型在响应中过于频繁地生成重复的词。如果您希望模型生成多样化或创造性的文本,您可以设置更高的 presence penalty,如果您希望模型生成更专注的内容,您可以设置更低的 presence penalty。
与 temperature 和 top_p 一样,一般建议是改变 frequency penalty 和 presence penalty 其中一个参数就行,不要同时调整两个。
原文地址:https://mp.weixin.qq.com/s/8q9qV3CqjSJ91OOpnvylxA