天问青训营第二天 模型I/O:Prompt Engineering
往期链接!!天问青训营第一天
快马加鞭来到第4章--模型I/O,突然有很多想要与大家分享的内容,我将分成多期介绍~
以下内容不局限于掘金小册的知识,而是作为延申与扩充,帮助同学们更加了解LLM与LangChain!让我们开始吧!
一、什么是提示工程
在掘金小册中,提到了模型I/O的三个主要环节是:提示模板、语言模型、输出解析。
其中,提示模板是最重要的环节。创建一个好的提示模板,必将影响整个AGI应用的性能。那么问题来了,什么是提示词,提示工程又是什么?
大家在使用大模型的时候,通常情况下,用户将向模型提供一段话,然后模型产生输出作为响应。这段话对于模型而言,称为“提示”(prompt)。 这些提示可能是文字性的,比如:"如何入职字节?";也可能是其他形式,如图像、音频、视频或者它们的组合。
对大模型使用自然语言进行有效的提示,以此来构建、评估和执行任务,可以带来更好的结果。随着围绕使用提示来提高结果的研究与技术越来越多,“提示工程”(Prompt Engineering)这门学科便应运而生。
提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。(来自《提示工程指南》)
二、为什么要撰写一份好的提示
prompt被某些人戏称为咒语,不是没有道理的🤗
可能大家都听说过一句提示咒语:“Let’s think step by step”(让我们一步一步来)
把这句话加在提示词的最后,模型的输出质量有了显著提高。在Kojima et al.(2023)的实验中,附带这句prompt的text-davinci002模型,在MultiArith上的准确率从17.7%提高到了78.7%,详见 Large Language Models are Zero-Shot Reasoners
实际上这句咒语帮助模型构建了思维链,隐式地丰富了指令内容
究竟是什么造成了模型输出质量的巨大差别?
指令含糊、信息缺乏、歧义...
而我们要做的核心思想,就是要将LLM当人看。LLM不是神仙,不能知道你内心在想什么、你想要的是什么。
一个好的prompt,要求的是:指令具体、信息丰富、减少歧义...
- 低情商:帮我写一篇论文
- 高情商:请帮我写一篇800字的文章,主题是'人工智能对教育的影响',需要包含三个方面:课堂教学变革、个性化学习、教师角色转变。文章的语气要平实客观,适合在教育类期刊发表。
就像我们和人对话一样,不会提问的人,别人往往不能知道他的意图。强如人脑,也无法正常沟通。┑( ̄Д  ̄)┍
熟练prompt的人,和人的沟通能力也会提升!
三、如何撰写一份好的提示
说了这么多,能不能来点干货?
有很多人提出了结构化提示词框架:ICIO、CRISPE、BROKE框架,详见 四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF
Q:模板这么多,究竟用哪个?A:都不用,用你自己的!
不要套模板。每个人提倡的模板都不一样,模版的价值是提醒我们prompt需要什么,而不是prompt必须遵守什么。
一个好的prompt通常包含:角色、指示、上下文、例子、输入和输出,仅此而已。
为什么需要角色,实际上这是为模型设立语境,让其带着问题阅读下面的句子。我们通常见到一些模板,第一句话:“你是一个xxx”。
Liu et al.(2023) 发现,大模型常常对prompt开头和结尾的内容更敏感,对文本的感知大致呈现出以下的U曲线,详见 Lost in the Middle: How Language Models Use Long Contexts
因此,在prompt的开头与结尾放置更重要、更精确的信息确实是有必要的。
说了这么多,一份好prompt模板仍旧与所用模型、具体问题有关,需要用户不断撰写、测试、修改!没有一蹴而就的工作,好的prompt编撰者在以后甚至能成为专业的prompt工程师,与常规使用者拉开差距,走向人生巅峰!!
四、其他
提示工程还有更多先进的技术,如零样本/少样本提示、思维链(CoT)、思维树 (ToT)、检索增强生成 (RAG)、ReAct框架等等。
想知道更多关于提示工程的知识,可以参考这篇24年的综述:The Prompt Report: A Systematic Survey of Prompting Techniques。也欢迎大家关注我,请监督我持续更新!