提示词工程
这个本质就是教我们怎么和gpt对话能获得更好的效果。
# 理解大模型
大模型的本质就是生成词语的预测,他会在下一个可能的词里面选择出最可能的那个词语,然后不断的构成一句话。他最关键的地方,就是训练了很多数据,让模型的能力有了质变。 所以,大模型对生成结果的正确性,没有任何的把关措施,他是依赖训练和输入的数据生成的。我们知道,无论概率有多低,他总是有一个概率的,所以,大模型可能会产生幻觉,也是说,他可能会说一些完全没有依据的内容。所以我们要告诉大模型,如果他不知道的事情就直接说不知道。 AI大模型最关键的能力是由我们的想象力和提示词工程的能力构建的。
# 模型设置
gpt会提供一些参数让我们对大模型进行微调。
Temperature
temperature 的参数值越小,模型就会返回越确定的一个结果。对于创造性任务,可以调整高一些,希望结果毕竟确定的可以调低一些,尤其是贯穿在代码里面的,不然很难控制,甚至你可以设置为0,保证每次输出都是一样的。
max length
这个是控制token长度,生成的token长度,主要是控制成本。
stop sequences
当模型输出xxx字符串的时候,停止生成
Frequency Penalty
防止模型输出相同类似的内容
# 角色
system、user 和 assistant。其中 system 不是必需的,但有助于设定 assistant 的整体行为,帮助模型了解用户的需求,并根据这些需求提供相应的响应。 system:你是一个专业的Java工程师,你会xxxx。 user:就是我们 assistant:就是ai
# 提示词要素
指令:想要模型执行的特定任务或问题。 输出指示:指定输出的类型或格式。 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。 不同的部分尽可能的区分开,上下文尽可能放在最后,用换行隔开。
# 技巧
以下的这些技巧除了和gpt交流,其实人与人之间的交流也是非常需要下面技巧的。
# 子任务划分
大模型的输出能力是有限的,所以我们可以把一个大的任务划分为子任务,可以人为的划分,也可以通过gpt来划分。
# 给出实例
给gpt一些实例,可以大幅度的简化我们的语言描述,而且可以使输出的结果更符合我们预期的结果。
# 不用模糊词
不要用几个,不要用过于等等这种不精确到词,可以具体到数量2-3个这样,gpt是可以理解这些数量的。
# 做什么&不做什么
除了告诉gpt要做什么以为,还要告诉gpt不要做什么。通常,做什么对于gpt来说更关键,和我们人一样,需要知道做什么才能具体的去做。 此外,最好尽可能详细的告诉他怎么完成这件事情,按1,2,3这样的步骤来完成。
# 角色提示
你是一个xxx,你xxxx。 通过对gpt的角色提示,能让他的回答更加贴切。
# 思考过程
让我们逐步思考,给出思考的过程。 对于推理性质比较强的问题,我们可以让gpt给出思考的过程,我们可以学习思考的方式,最关键的时候,这可以加强gpt的思考能力,而且让我们更容易发现gpt的错误。
# RAG
大模型的输入能力是有限的,可以我们就是想输入这么多东西怎么办? 可以把全部内容存在特殊的数据库里面,然后筛选出最接近的几块内容,来组成大模型的输入。同样的,不可能是所有的内容都和这个问题有关。
# 数据输入
不是所有的数据都被大模型训练过的,如果他不知道这些数据,你就必须采用输入数据的方式来让大模型知道这些东西,比如一个比较新的库的文档。
# 不知道就不说
大模型可能会说一些没有依据的话,尤其我们在编写利用知识库回答用户问题的应用时,一定要告诉gpt,没有依据的事情不要说。
# 引导词
我们想让gpt说出以xxx开头的内容,那么我们可以在结尾的时候,写xxx