InternLM/Tutorial: LLM&VLM Tutorial 教程这里找
这一关的任务有点难度了。也能让人更理解提示词。大模型挺厉害,但是你会驾驭他吗?
我一度对提示词不以为然,觉得这也太没技术含量了吧。直到看到这一关。
一、提示词的概念
Prompt是一种用于指导以大语言模型为代表的生成式人工智能生成内容(文本、图像、视频等)的输入方式。它通常是一个简短的文本或问题,用于描述任务和要求。
Prompt可以包含一些特定的关键词或短语,用于引导模型生成符合特定主题或风格的内容。例如,如果我们要生成一篇关于“人工智能”的文章,我们可以使用“人工智能”作为Prompt,让模型生成一篇关于人工智能的介绍、应用、发展等方面的文章。
Prompt还可以包含一些特定的指令或要求,用于控制生成文本的语气、风格、长度等方面。例如,我们可以使用“请用幽默的语气描述人工智能的发展历程”作为Prompt,让模型生成一篇幽默风趣的文章。
总之,Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。
二、提示工程的概念
提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。
在模型回复的过程中,首先获取用户输入的文本,然后处理文本特征并根据输入文本特征预测之后的文本,原理为next token prediction,类似我们日常使用的输入法。
提示工程是模型性能优化的基石,有以下六大基本原则:
l指令要清晰
l提供参考内容
l复杂的任务拆分成子任务
l给 LLM“思考”时间(给出过程)
l使用外部工具
l系统性测试变化
在提示工程中,第一点给出清晰的指令是至关重要的。一个有效的指令通常包含以下要素:背景、任务、要求、限制条件、示例、输出格式和目标。通过提供这些详细信息,我们可以引导模型生成更符合我们期望的文本。
三、提示设计框架
lCRISPE,参考:
https://github.com/mattnigh/ChatGPT3-Free-Prompt-List
nCapacity and Role (能力与角色):希望 ChatGPT 扮演怎样的角色。
nInsight (洞察力):背景信息和上下文(坦率说来我觉得用 Context 更好)
nStatement (指令):希望 ChatGPT 做什么。
nPersonality (个性):希望 ChatGPT 以什么风格或方式回答你。
nExperiment (尝试):要求 ChatGPT 提供多个答案。
按这个框设计提示词的样例:
Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer. The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning. Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries. When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun.
CO-STAR,参考:https://aiadvisoryboards.wordpress.com/2024/01/30/co-star-framewor
lContext (背景): 提供任务背景信息
lObjective (目标): 定义需要LLM执行的任务
lStyle (风格): 指定希望LLM具备的写作风格
lTone (语气): 设定LLM回复的情感基调
lAudience (观众): 表明回复的对象
lResponse (回复): 提供回复格式
如果我们遇到一个复杂的任务,可以进行拆解,为可执行的计划完成的提示词如下:
# CONTEXT #
我是一名个人生产力开发者。在个人发展和生产力领域,人们越来越需要这样的系统:不仅能帮助个人设定目标,还能将这些目标转化为可行的步骤。许多人在将抱负转化为具体行动时遇到困难,凸显出需要一个有效的目标到系统的转换过程。
########
# OBJECTIVE
您的任务是指导我创建一个全面的系统转换器。这涉及将过程分解为不同的步骤,包括识别目标、运用5个为什么技巧、学习核心行动、设定意图以及进行定期回顾。目的是提供一个逐步指南,以无缝地将目标转化为可行的计划。
########
# STYLE
以富有信息性和教育性的风格写作,类似于个人发展指南。确保每个步骤的呈现都清晰连贯,迎合那些渴望提高生产力和实现目标技能的受众。
########
# Tone
始终保持积极和鼓舞人心的语气,培养一种赋权和鼓励的感觉。应该感觉像是一位友好的向导在提供宝贵的见解。
# AUDIENCE
目标受众是对个人发展和提高生产力感兴趣的个人。假设读者寻求实用建议和可行步骤,以将他们的目标转化为切实的成果。
########
# RESPONSE FORMAT
提供一个结构化的目标到系统转换过程步骤列表。每个步骤都应该清晰定义,整体格式应易于遵循以便快速实施。
############
# START ANALYSIS
如果您理解了,请询问我的目标。
四、一个结构化提示词工具:LangGPT
LangGPT 是 Language For GPT-like LLMs 的简称,中文名为结构化提示词。LangGPT 是一个帮助你编写高质量提示词的工具,提出的一套模块化、标准化的提示词编写方法论——结构化提示词。LangGPT社区文档:https://langgpt.ai
LangGPT框架参考了面向对象程序设计的思想,设计为基于角色的双层结构,一个完整的提示词包含模块-内部元素两级,模块表示要求或提示LLM的方面,例如:背景信息、建议、约束等。内部元素为模块的组成部分,是归属某一方面的具体要求或辅助信息,分为赋值型和方法型。
编写技巧
一个好的结构化 Prompt 模板,某种意义上是构建了一个好的全局思维链。如 LangGPT 中展示的模板设计时就考虑了如下思维链:
💡 Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用
一个好的 Prompt ,内容结构上最好也是逻辑清晰连贯的。结构化 prompt 方法将久经考验的逻辑思维链路融入了结构中,大大降低了思维链路的构建难度。
构建 Prompt 时,不妨参考优质模板的全局思维链路,熟练掌握后,完全可以对其进行增删改留调整得到一个适合自己使用的模板。例如当你需要控制输出格式,尤其是需要格式化输出时,完全可以增加 Output 或者 OutputFormat 这样的模块。
保持上下文语义一致性
包含两个方面,一个是格式语义一致性,一个是内容语义一致性。
格式语义一致性是指标识符的标识功能前后一致。最好不要混用,比如 # 既用于标识标题,又用于标识变量这种行为就造成了前后不一致,这会对模型识别 Prompt 的层级结构造成干扰。
内容语义一致性是指思维链路上的属性词语义合适。例如 LangGPT 中的 Profile 属性词,使之功能更加明确:即角色的简历。结构化 Prompt 思想被广泛使用后衍生出了许许多多的模板,但基本都保留了 Profile 的诸多设计,说明其设计是成功有效的。
内容语义一致性还包括属性词和相应模块内容的语义一致。例如 Rules 部分是角色需要遵守规则,则不宜将角色技能、描述大量堆砌在此。
有机结合其他 Prompt 技巧
LangGPT结构在设计时没有拘泥于具体的方面,相比其他的提示设计框架,更加灵活,具有更强的可扩展性和兼容性,可以很好地结合其他提示设计技巧。
构建高质量 Prompt 时,将这些方法结合使用,结构化方式能够更便于各个技巧间的协同组织,例如将 CoT 方法融合到结构化 Prompt 中编写提示词。汇总现有的一些方法:
细节法:给出更清晰的指令,包含更多具体的细节
分解法:将复杂的任务分解为更简单的子任务 (Let's think step by step, CoT,LangChain等思想)
记忆法:构建指令使模型时刻记住任务,确保不偏离任务解决路径(system 级 prompt)
解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
投票法:让模型给出多个结果,然后使用模型选择最佳结果 (ToT 等方法)
示例法:提供一个或多个具体例子,提供输入输出示例 (one-shot, few-shot 等方法)
上面这些方法最好结合使用,以实现在复杂任务中实现使用不可靠工具(LLMs)构建可靠系统的目标。
五、一个好玩的例子
在谱语大模型中输入这个问题:请问“strawberry”中有几个字母“r”?
这。。。都出错了,chatgpt也不例外。
那到底该怎么办呢?
我们用prompt尝试解决。
好像是变聪明了?
其实chatgpt并没有记住答案,再问他一遍,他还是回答出现2次
但是谱语大模型是真的变聪明了,今天再问他这个问题,他已经学会了
这阵子的感受是,大模型确实能帮助人们解决很多事情,只要你能想到,有创造力,并且能驾驭大模型,就能产生更多精彩的成果,门槛大大降低!
六、进阶任务
任选下面其中1个任务基于LangGPT格式编写提示词 (优秀学员最少编写两组),使用书生·浦语大模型 进行对话评测。
l公文写作助手
l商务邮件沟通
l温柔女友/男友
lMBTI 性格测试
l剧本创作助手
l科幻小说生成
进阶任务也挺有意思的。大家可以尝试一下,今天就先到这里吧。
l扫二维码报名一起学吧