回顾与复习
在前段时间,我学习了LangChain中的模型IO,它主要分为三个部分,分别是提示模板,语言模型与输出解析。 简要总结一下就是先写出一个提示模板,然后将它传入语言模型,最后再以指定的形式输出。
那么在今天,将要对其中的提示模板进行进一步的学习,也就是提升工程。
提示的结构
如果要写一个提示,我们要先知道提示一般的结构是什么,它主要包含这几个部分:
一、指令(Instruction)
告诉模型任务大概要做什么、怎么做,比如利用提供的外部信息、处理查询及构造输出的方式等,是提示模板中较固定部分。常见用例是告知模型 “你是一个有用的 XX 助手”,使其更认真对待自身角色。
二、上下文(Context)
作为模型的额外知识来源,信息可手动插入提示、通过矢量数据库检索或借助其他方式(如调用 API、计算器等工具)获取。常见用例是把从向量数据库查到的知识当作上下文传给模型。
三、提示输入(Prompt Input)
即具体问题或让大模型做的具体事,虽可与 “指令” 部分合二为一,但拆分成独立组件更结构化,便于复用模板。通常作为变量,在调用模型前传给提示模板以形成具体提示。
四、输出指示器(Output Indicator)
标记要生成文本的开始,类似数学考卷先写 “解”。生成 Python 代码时,可用 “import” 示意模型开始编写。在和 ChatGPT 对话时此部分可有可无,LangChain 中的代理构建提示模板时常用 “Thought:” 作引导词,指示模型开始输出推理过程。
知道了这些,我们就可以去使用模板写出提示了。下面是一个使用PromptTemplate模板的例子。
from langchain import PromptTemplate
template = """\
你是业务咨询顾问。
你给一个销售{product}的电商公司,起一个好的名字?
"""
prompt = PromptTemplate.from_template(template)
print(prompt.format(product="鲜花"))
FewShot
这个是今天学习的重点内容,简单地说。
- 在Few-Shot学习设置中,模型会被给予几个示例,以帮助模型理解任务,并生成正确的响应。
使用 FewShotPromptTemplate
使用它,主要分为四个步骤:创建示例样本,创建提示模板,创建 FewShotPromptTemplate 对象,调用大模型创建新文案。这里代码不再赘述。
另外,在发送示例时,有可能示例会较多,那么我们可以使用示例选择器来选取合适的样本来高效传输示例以此来提高效率。
总的来说,就是给模型一些示例做参考,模型才能明白你要什么。
今日总结
今天主要学习了几个提示模板的创建和使用,并且其中最为关键的就是FewShotPromptTemplate。通过这些操作,我们可以让AI返回我们所需要的东西。
在下次的学习中,将会学习思维链,也就是CoT(Chain of Thought)的概念来引导模型的推理,让模型生成更详实、更完备的文案。