“我正在参加「豆包MarsCode AI练中学体验活动」详情请看:掘金小册上线 AI练中学功能 | 你的 AI 编程助教喊你免费领小册啦!
引言
今天继续《LangChain实战课》的学习。
今天主要学习内容为如下两个方面。
- LangChain 快速开发开发基于本地知识库的智能问答机器人
- 相对应的AI学中练
正文
LangChain中的六大核心组件
- Models: 模型
- Chains
- Prompts
- Indexs
- Memory
- Agents
提示模板
- 语言模型: 无穷无尽的宝藏,quan人类的知识和智慧de“魔盒”。
- 解锁其中的奥秘: “提示工程”这个词特别流行,所谓Prompt Engineering,就是专门研究对大语言模型的提示构建。
我的观点是,使用大模型的场景千差万别,因此肯定不存在那么一两个神奇的模板,能够骗过所有模型,让它总能给你最想要的回答。然而,好的提示(其实也就是好的问题或指示啦),肯定能够让你在调用语言模型的时候事半功倍。
那其中的具体原则,不外乎吴恩达老师在他的提示工程课程中所说的:
- 给予模型清晰明确的指示
- 让模型慢慢地思考
说起来很简单,对吧?是的,道理总是简单,但是如何具体实践这些原则,又是个大问题。让我从创建一个简单的LangChain提示模板开始。
这里,我们希望为销售的每一种鲜花生成一段简介文案,那么每当你的员工或者顾客想了解某种鲜花时,调用该模板就会生成适合的文字。
这个提示模板的生成方式如下:
# 导入LangChain中的提示模板
from langchain.prompts import PromptTemplate
# 创建原始模板
template = """您是一位专业的鲜花店文案撰写员。\n
对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?
"""
# 根据原始模板创建LangChain提示模板
prompt = PromptTemplate.from_template(template)
# 打印LangChain提示模板的内容
print(prompt)
提示模板的具体内容如下:
input_variables=['flower_name', 'price']
output_parser=None partial_variables={}
template='/\n您是一位专业的鲜花店文案撰写员。
\n对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?\n'
template_format='f-string'
validate_template=True
在这里,所谓“模板”就是一段描述某种鲜花的文本格式,它是一个 f-string,其中有两个变量 {flower_name} 和 {price} 表示花的名称和价格,这两个值是模板里面的占位符,在实际使用模板生成提示时会被具体的值替换。
代码中的from_template是一个类方法,它允许我们直接从一个字符串模板中创建一个PromptTemplate对象。打印出这个PromptTemplate对象,你可以看到这个对象中的信息包括输入的变量(在这个例子中就是 flower_name 和 price)、输出解析器(这个例子中没有指定)、模板的格式(这个例子中为'f-string')、是否验证模板(这个例子中设置为 True)。
因此PromptTemplate的from_template方法就是将一个原始的模板字符串转化为一个更丰富、更方便操作的PromptTemplate对象,这个对象就是LangChain中的提示模板。LangChain 提供了多个类和函数,也为各种应用场景设计了很多内置模板,使构建和使用提示变得容易。我们下节课还会对提示工程的基本原理和LangChain中的各种提示模板做更深入的讲解。
下面,我将会使用这个刚刚构建好的提示模板来生成提示,并把提示输入到大语言模型中。
今天先记录到这,后续进行补充。