ChatGPT Prompt Engineering for Developers 笔记+思考

date
May 6, 2023
slug
ChatGPT-Prompt-Engineering-for-Developers
status
Published
tags
ChatGPT
summary
自己对ChatGPT Prompt Engineering for Developers的一些思考与实践经验.
type
Post
Authors
Published
Published
其实很早之前就看到这一门吴恩达的课程了,但是当时观看意愿并不是很大.
 
一方面是因为我认为LangChain和AutoGPT的Prompt已经足够精巧,二是我认为LLM应该是自然语言与代码之间的桥梁,作为一个开发者我从Code的角度去学习会更快,三是因为看了大纲基本都是我已经掌握的东西,感觉会浪费不少时间.
 
但是和朋友交流了一下,大家评价都很高…..那么就学习一下吧!希望不会浪费时间
 
不太愿意支付过高的理解成本,所以直接看的B站中文字幕.那么让我们开始慢慢的把这门课程拆分一下.
 

1.课程介绍

 
第一节最开始说了一个观点,就是基于LLMs做应用开发依旧被严重低估.这和我的观点是一样的.(All in LangChain!!)
 
他也提到了,基于Base LLMs的fine tune 以后的LLM + RLHF做开发才是正道.这和我的思路也是一样的,但是其实大部分场景甚至不需要finetune,只需要做简单的Lora即可.(本质就是优质数据集做的BaseLLMs finetune在特定问题上的表现可以远大于BaseLLMs)
notion image
再接下来就是提到了一种RolePlay的Prompt技巧(扮演角色式的Prompt),也提到了应该让大语言模型做thought back和区分steps.嗯,不得不说干货确实很多,就这么一会儿就把我在群里说了很久的东西概括了……
 

2.使用准则

 
第二节似乎主打一个教你写提示.
 
哼哼,看看你葫芦里卖的什么药.

2-1 编写清晰的指令

 
清晰的指令大概算是一个最最最入门的要求了.
 

2-1-1 使用分隔符来明确指出输入的不同部分

这是一个我之前就已经知道的技巧(从langChain的slot式写法里学的),不过我注意到他似乎还提到了可以用<tag>xxxyyy</tag>这种方式来区分.
 
有点巧妙,学到了….
 
实际上手用GPT4做了一下测试,好像基于XML的理解能力确实比JSON好…虽然不理解原因,可能是因为大型LLM读取的XML文件更多?
 
和公司的算法大佬同事讨论了一下,他说“可能LLM更像人读取信息的方式而不是机器”.我觉得我好像get到了,LLM应该更偏向于人读取信息的方式,而不是机器.
 
群里讨论了一下,大家也纷纷表示MarkDown的表现会更好.emm…如果读者你看到这篇文章,希望你能评论一下教教我原因.
notion image
 
这个做法还有一个好处是可以用来避免提示词注入.嗯,确实非常不错,梦回前端XML注入了.
 

2-1-2.使用一个结构化的Output:HTML,JSON

略了,基本上是一个很normal的case,上面还详细试了一下.
 

2-1-3.要求模型执行前先检查假设

这个确实是学到了,算是一个非常非常巧妙的thought back技巧,还能同时减少大量的代码量.
 

2-1-4.在要求模型做实际任务之前给few-shot

也是一个很normal的case,所有的prompt template给few-shot应该是一个很普遍的经验了.这不仅有助于杀死hallucination,还可以巧妙的提高输出的质量.
 

2-2.给LLMs思考的时间

2-2-1.将你的问题拆成Steps.

也是一个广为人知的技巧.核心原理就是
 
使用Step拆分也是LangChain Agent的核心思路.
 

2-2-2.在你的模型急于得出结论之前,先给出自己的解决方案,寻求它的修正.

也算是一个one-shot的技巧吧,挺有用的,但是总的来说还是让模型thought back.看起来大部分的技巧都是让模型做thought back啊……
 
在最后提到了,在构建自己应用的时候,一定要想办法避免hallucination.hallucination确实是一个很严重的问题,其实想要具体了解可以看
 
 
我当时是看这篇帖子进行了解的.具体的Slove可以看
 
 
嗯,总之,hallucination这个问题确实比较麻烦,但是目前也不是没法解决.比较简单通用且langChain提供了现成方案的就是,给LLM以搜索能力或者走向量数据库.当然,我们无法完全避免hallucination,但是可以从工程的角度避免它.
 
 

3.工程迭代

3-1.prompt迭代

这一章的核心思想其实就是,提示词是靠迭代出来的,不是靠人一遍写出来的.也是已经了解的东西(警惕网上ChatGPT提示词割韭菜教程)
 
 
 
 
 
 
 
 
 
 
 

© CoderMageFox 2021 - 2024

Just For Fun