大模型这么火,你有没有想过如何基于大模型去创建自己的应用呢?作为技术人了不起相信很多小伙伴们都有过这种想法,但是不知道该如何着手。
其实业内已经有很多成熟的框架来帮助开发人员进行大模型应用开发的了,对于我们开发人员来说不需要理解很深层次的理论就可以进行实操了。
了不起最近就在学习大模型开发框架 LangChain
,基于官方文档和一些网上的资料来进行个人实践学习,欢迎小伙伴们一起学习。
LangChain
是什么
首先 LangChain
是一个框架,这个框架是用来让开发者进行 LLMs
(大语言模型)应用开发的。
可以理解是为各种 LLM
开发的脚手架,将 LLM
的各个组件进行封装和链接。把 LLMs
相关的组件“链接”在一起,简化 LLMs
应用的开发难度,方便开发者快速地开发复杂的 LLMs
应用。
举一个不是很恰当的栗子,从 Java
工程师的角度来看 LangChain
更像是 Spring
或者 SpringBoot
这种框架,帮助开发人员更快的进行应用开发。
LangChain
框架组件
一个 LangChain
应用是通过很多个组件实现的,LangChain
主要支持 6 种组件:
-
Models
:模型,各种类型的模型和模型集成,比如GPT-4
等大语言模型,LangChain
将各家公司的大模型进行了抽象,封装了通用的API
,我们只要使用对应的API
就可以完成对各个公司大模型的调用; -
Prompts
:提示,包括Prompts
管理、Prompts
优化和Prompts
序列化,大语言模型中提示词是很重要的,不管是聊天机器人还是AI
绘画,都少不了提示词; -
Memory
:记忆,用来保存和模型交互时的上下文状态,模型本身是不具备上下文记忆的,所以当我们跟模型进行交互的时候,是需要传递聊天内容上下文的; -
Indexes
:索引,用来结构化文档,以便和模型交互; -
Chains
:链,一系列对各种组件的调用; -
Agents
:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止;
Models
LangChain
为 GPT4
这些第三方的模型提供通用接口,目前支持三种类型的模型
-
LLMs
:LLMs
(大语言模型)接收文本字符作为输入,返回的也是文本字符 -
聊天模型
-
聊天模型基于
LLMs
,不同的是它接收聊天消息作为输入,返回的也是聊天消息 -
聊天消息是一种特定格式的数据,
LangChain
中支持四种消息AIMessage
,HumanMessage
,SystemMessage
,ChatMessage
,你需要按照它们的角色把数据传递给模型,这部分在后面文章里再详细解释。 -
文本嵌入模型 :文本嵌入模型接收文本作为输入,返回的是浮点数列表
Prompts
通常作为输入传递给模型的信息被称为 Prompts
提示,Prompts
可以是文本字符,也可以是文件、图片甚至是视频,LangChain
目前只支持字符形式的 Prompts
。
Prompts
一般不是硬编码的形式写在代码里,而是由模板和用户输入来生成,LangChain
提供多个类和方法来构建 Prompts
。
-
提示模板
-
提示模板是一种生成
Prompts
的方式,包含一个带有可替换内容的模板,从用户那获取一组参数并生成Prompts
; -
提示模板用来生成
LLMs
的Prompts
,最简单的使用场景,比如“我希望你扮演一个代码专家的角色,告诉我这个方法的原理{code}
。 -
聊天提示模板
-
聊天模型接收聊天消息作为输入,再次强调聊天消息和普通字符是不一样的,聊天提示模板的作用就是为聊天模型生成提示;
-
示例选择器
-
示例选择器是一个高级版的数据筛选器,举个例子,我们在实现一个提示模板时,有这么一组原始数据:
examples = [
{
"input": "happy",
"output": "sad"
},
{
"input": "tall",
"output": "short"
},
{
"input": "energetic",
"output": "lethargic"
},
{
"input": "sunny",
"output": "gloomy"
},
{
"input": "windy",
"output": "calm"
}
];
-
我们可以实现一个示例选择器,也可以使用内置的产品需求是根据用户提供的参数来筛选数据,参数是
number
类型, -
输出解析器
-
由于模型返回的是文本字符,输出解析器可以把文本转换成结构化数据;
Memory
模型是无状态的,不保存上一次交互时的数据,回想一下 OpenAI
的 API
服务,它是没有上下文概念的,而 ChatGPT
是额外实现了上下文功能。为了提供上下文的功能,LangChain
提供了 memory
组件,用来在对话过程中存储数据。
Indexes
为了更好的和 LLMs
进行交互,我们需要将一些数据进行存储,在 LLM
领域常用的索引存储对应的是向量数据库 VectorStores
。对应数据的存储通常会被称为索引,而对于数据的查询通常会被称为检索。在大部分情况下针对与 LLM
的场景都是一些非结构化的数据需要索引和查询,所以 LangChain
提供了下面的一些组件用于处理。
-
文档加载器
Document Loaders
-
负责加载各个来源的文档,比如
cvs
,音频,视频,document
等; -
文本分割器
Text Splitters
-
有时候需要把大的文档分割成小片段来和模型交互,比如
GPT3.5
只支持4,096 token
的输入,文本分割器负责这个工作 -
检索器
Retrievers
-
此接口公开了一个
get_relevant_documents
方法,该方法接受一个查询(一个字符串)并返回一个文档列表。 -
向量数据库
Vectorstores
-
最常见的索引类型是为每个文档创建嵌入(使用嵌入模型),
vectorstore
存储文档和关联的嵌入,并且提供查询相关文档的快速方式。
Chains
对于一些简单的应用 可以使用单个 LLM
就完成,但是对于很多复杂的应用就需要链接多个 LLM
来完成,LangChain
提供了 Chains
的标准接口,以及一些常见的 Chain
实现,方便使用。
Agents
有些应用并不是一开始就确定调用哪些模型,而是依赖于用户输入,代理就提供了一套工具,根据用户的输入来决定调用这些工具种的哪一个。LangChain
提供了下面的组件:
-
工具:用来方便模型和其他资源交互
-
代理:围绕模型的包装器,接收用户输入,决定模型的行为
-
工具集:解决特定问题的工具集合
-
代理执行器:代理和一组工具,调用代理
总结
LangChain
是一个让开发人员更方便进行 LLM
应用开发的一套框架,集成了很多家公司的 LLM
。将这些 LLM
进行抽象,提供了很多组件和扩展能力,支持更复杂的 LLM
应用。
那么,如何系统的去学习大模型LLM?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
篇幅有限,部分资料如下:
👉LLM大模型学习指南+路线汇总👈
💥大模型入门要点,扫盲必看!
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。
👉大模型入门实战训练👈
💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉国内企业大模型落地应用案例👈
💥《中国大模型落地应用案例集》 收录了52个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
💥《2024大模型行业应用十大典范案例集》 汇集了文化、医药、IT、钢铁、航空、企业服务等行业在大模型应用领域的典范案例。
👉LLM大模型学习视频👈
💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
👉640份大模型行业报告👈
💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
👉获取方式:
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓