先预训练,然后用数据集微调模型的输出层,这是一种通用做法。实际微调多少层,多少参数等等都是可以变化的,甚至可以全参微调。微调有很多好处,缺点也很明显,依赖高质量标注数据,需要调试训练超参数,常常训练失败,甚至性能不如预训练模型。
这时候prompttuning出现了,不用训练模型,只需要调整提示词即可,由于模型参数不会更新,所以能充分利用预训练模型的泛化性。
提示词的编写还是处于手工业阶段,依赖人去完成。想象一下未来AGI实现,agents遍地的时候。我们必然要以工业的方式量产agents,这也就意味着写prompts这件事情需要由手工业,变成现代的标准化、自动化流水线生产的事情
LangGPT写出来的prompts层次清晰,工整有序,和人的简历很像。如果你曾经见过类似这样的提示词,尤其是中文提示词,那么很大概率这个作者受到过结构化提示词思想的启发和影响。
首先是内容结构的标准化。整体采用基于角色的框架。为agent角色编写简历,它的名字,背景,介绍,技能,需要遵守的规则,工作流程,初始化行为等几个部分。
为规范各个部分的编写同时借鉴编程思想,设计了轻量的语法,包含变量,作用域,逻辑流控制等。通过复用Markdown,json,yaml等成熟格式直接实现。为了进一步确保提示词质量,还设计了模板。模板层级结构清晰,可采用不同的格式。更重要的,封装了实践中最有效的提示词方法论确保质量。
Markdown确实很好用,我们可以看到OpenAI的系统预置词也采用同样方式编写,也是LangGPT提示词采用的主要格式。但实际上结构化!=格式化,可采用任何格式,实践中类似json,xml这类具有闭合结构的语法甚至性能更加稳定。
#Role:诗人##Profile-Author:YZFly-Version:0.1-Language:中文-Description:诗人是创作诗歌的艺术家,擅长通过诗歌来表达情感、描绘景象、讲述故事,具有丰富的想象力和对文字的独特驾驭能力。诗人创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。###擅长写现代诗:1.现代诗形式自由,意涵丰富,意象经营重于修辞运用,是心灵的映现2.更加强调自由开放和直率陈述与进行“可感与不可感之间”的沟通。###擅长写七言律诗1.七言体是古代诗歌体裁2.全篇每句七字或以七字句为主的诗体3.它起于汉族民间歌谣###擅长写五言诗1.全篇由五字句构成的诗2.能够更灵活细致地抒情和叙事3.在音节上,奇偶相配,富于音乐美##Rules1.内容健康,积极向上2.七言律诗和五言诗要押韵##Workflow1.让用户以"形式:[],主题:[]"的方式指定诗歌形式,主题。2.针对用户给定的主题,创作诗歌,包括题目和诗句。##Initialization作为角色
上面的例子都是使用Role模板编写的,Role模板是LangGPT的核心。
ChatGPT很擅长角色扮演,只要提供角色说明,角色行为,技能等描述,就能做出很符合角色的行为。
因此LangGPT设计了Role模板让ChatGPT更好的理解用户意图,并相应提供了一套角色设计方法。
下面是用markdown展示的Role模板:
同时如需要加入指令,记忆等功能编写复杂的prompt,只需添加相应的段落即可,可参考高级用法部分。
变量为Prompt的编写带来了很大的灵活性。使用变量可以方便的引用角色内容,设置和更改角色属性。
这是一般的prompt方法较难实现的。
Role模板里的Initialization部分则大量使用的了变量:
Asa/an
使用命令可以方便的设置一些默认动作,例如"/help"提供帮助文档,"/continue"续写文本等都是十分有用的命令
###3.4.3Reminder--缓解ChatGPT的遗忘问题使用Reminder可以缓解ChatGPT的遗忘问题。
在Role模板中添加Reminder即可:
##Reminder1.'Description:YouwillalwaysremindyourselfrolesettingsandyououtputRemindercontentsbeforerespondingtotheuser.'2.'Reminder:Theuserlanguageislanguage(
If[situation1happen],youwilltake[action1],else,youwilltake[action2]