第四节课开篇就强调了模型作为Langchain六大核心组件之一的重要性:
1.模型作为Langchain框架底层中最核心的元素
2.Langchain功能都由语言模型驱动
模型I/O三个组成部分:
1.输入(输入提示)
2.调用(语言模型)
3.输出(输出解析) 第一部分: 专门研究大语言的模型的提示建构,没有完美通用的模板,但是好的提示可以提高模型调用效率。接下来给了一个模板的例子,以及langchain支持的三类模板: 1.大语言模型(LLM); 2.聊天模型; 3.文本嵌入模型; 分别使用langchain和直接调用open ai的api实现同一功能,可以看出直接调用api输入特定内容时,内容是分散在代码中的,langchain则更集中,因为使用了template。所以langchain在大量重复使用中更高效,更方便维护管理,切换不同模型时不用修改template,更灵活。
(生成hugging face api之后也不能正常生成输出,报错)
使用LangChain和提示模板的优势:
1.代码的可读性 2.可复用性 3.维护: 4.变量处理 5.参数化 老师建议我们输出时使用结构化数据,便于后续处理和存储。 思考题:
langchain统一的接口在当今各ai模型发展更迭迅速的时期,使切换不同公司的模型更方便,不会因为应用一家公司模型需要切换时,重头再写一个框架
format_instructions = output_parser.get_format_instructions()
这行代码会生成一段格式指导文本,基于前文的response_schemas。
prompt = PromptTemplate.from_template(prompt_template, partial_variables={"format_instructions": format_instructions})
这行通过partial_variables将格式指导文本绑定给{format_instructions}占位符,创建一个只包含{flower_name}和{price}新提示模板。
提示工程(上)
两大原则: 第一条原则是写出清晰而具体的指示,第二条原则是给模型思考的时间。 提示框架包含四元素:指令;上下文;提示输入;输出指示器 langchain提供的提示模板基于string和chat,延申出fewershot和pipeline两个prompt template。(也可以自定义模板)
from langchain import PromptTemplate //使用这段代码导入
模板创建方式
prompt template使用“.from_template"方法自动识别变量(占位符)
使用构造函数,手动指定变量。
chat模型有三种角色类型: system/user/assistant
重头戏fewershot模型,提供少量示例学习,确立语言模型少量示例学习能力,发展fewershot模型可以帮助解决数据稀缺问题,提高模型对新概念的学习能力,为大语言模型提供理论基础 教学内容中包含fewershot使用的完整流程。 思考题1: 使用jinja2模板,f-string
输出:
是vip
不是vip
2.使用pipe模型