先做个广告:如需代注册ChatGPT或充值 GPT4.0会员(plus),请添加站长微信:gptchongzhi
推荐使用GPT中文版,国内可直接访问:https://ai.gpt86.top
我们提到了Prompt的源码分析,以及我们在LangChain开发中是如何使用Prompt,这一节课,我们继续研究Prompt,关注如何写好Prompt。
首先,我们再次说明,Prompt可就是我们给到大语言模型的输入,当前比较常用的Prompt有两种类型:
Zero-Shot Prompting,又称之为零样本提示;
Few-Shot prompting,小样本提示,或者样式提示,或者称之为案例提示都可以;
下面我们就分别就这两种类型进行阐述。
02 | Zero-Shot Prompting
Zero-Shot Prompting,零样本提示模型,也就是不需要给到大模型任何的示例,直接由大模型控制输出即可。
这种能力的原因在于大模型训练了大量的数据,具备一定的推理能力,因此,可以实现一些零样本任务,比如如下的示例:
你现在需要从如下的问题中抽取出城市名称和目的地信息。
输入:我想去北京的西三旗,怎么走
输出:北京,西三旗
在这个例子中,我们并不需要提供任何的示例,模型就可以从问题中解析出城市和目的地数据,这就是零样本的能力。
但是这种情况主要用于你要大模型分析的数据是常见的能力,或者大模型已经具备的能力,毕竟大模型并不具备创造的能力,它最擅长的就是归纳总结以及改写能力。
03 | Few-Shot Prompting
Few-Shot Prompting,样例提示主要是在大模型无法理解我们的问题,或者我们需要大模型按照我们的格式进行输出的时候,我们就要在提示中进行引导或者给出一定的样例,对模型进行一定的微调,来实现我们的业务要求。
先看第一个例子,也就是大模型无法理解我们的问题。如果是零样本提示,大模型回答如下:
请给下面的一句话分词:
输入:我一把把车把把住了
输出:我/一把把/车把/把/住/了
如果是样本提示,我们可以给出一些词语的含义,比如:
请给下面的一句话分词,可以参照下面的一些样例数据:
样例:
输入:我想过过儿过过的生活
输出:我/想过/过儿/过过的/生活
解析:我是主语,想过值得是想要尝试,过儿指的是《神雕侠侣》的杨过,过过
的生活指的是曾经生活过的生活
输入:我一把把车把把住了
输出:
这时候大模型就会按照我们的预想进行分词。
还有一种情况呢,就是我们想要大模型按照我们想要的格式进行输出,还是上面的零样本提示,如果我们需要大模型按照如下的json格式输出{"city":"北京","destination":"西三旗"},那么我们就需要给出一定的样例,从而让大模型按照我们的要求输出。
你现在需要从如下的问题中抽取出城市名称和目的地信息,以json格式输出。
样例:
输入:我想去深圳的深圳湾
输出:{"city":"深圳","destination":"深圳湾"}
输入:我想去北京的西三旗,怎么走
输出:
这时候大模型就会按照我们的要求输出了。
如果要写入代码中,我们怎么来写呢?很简单,直接将上面的两个内容当做prompt直接传入大模型即可:
template='''上面的两个prompt传入即可'''
prompt = PromptTemplate(template = template)
llm = OpenAI(temperature=0)
print(llm(prompt))
代码就是这么简单,就能够完成我们想要的能力了。
04 | 小结
上述两种提示的类型需要根据具体的业务要求进行选择,一般情况下,建议使用Few-Shot Prompt,更能够按照我们的要求进行输出。