学习基于LangChain实战课(掘金小册) | 青训营X豆包MarsCode AI 刷题 - AI方向
主题:【第一部分】启程篇
类型:实践记录/学习体验/学习方法
学习目录路径:图源小册介绍
1开篇词|带你亲证AI应用开发的“奇点”时刻上次学到学习时长: 13分22秒
启程篇
Langchain 学习笔记 - 入门启程
一、引言
在人工智能技术飞速发展的当下,大语言模型的出现为我们带来了前所未有的机遇。ChatGPT 和 GPT-4 的横空出世,让全人类为之震撼,通用人工智能的奇点似乎即将来临。而 LangChain 作为一个以大模型为引擎的全新应用开发框架,几乎与 ChatGPT 同时面世,为程序设计者提供了便捷的工具,有望点燃 AI 应用开发的新热潮。
二、大语言模型简介
大语言模型是一种使用深度学习技术的人工智能模型,其参数数量庞大,能够理解和生成高度复杂的语言模式。它的训练过程类似于 “猜词”,通过大量的训练数据学习词语和词组的用法、含义以及组合方式,从而能够根据给定的文本开头预测下一个词。然而,大语言模型并不完全理解语言,只是通过复杂的数学函数学习到的语言模式进行预测,因此有时会犯错误或生成不合理的内容。
三、LangChain 的优势与特点
LangChain 是一个专为开发基于语言模型的应用而设计的框架,它的优势在于不仅可以通过 API 调用如 ChatGPT、GPT-4、Llama 2 等大型语言模型,还能实现更高级的功能。其核心特点包括数据感知和代理性,能够将语言模型与其他数据源连接起来,让模型与环境进行交互,从而最大限度地释放大语言模型的潜能。
四、LangChain 的安装与基础配置
- 基本安装:使用 pip install langchain 即可完成 LangChain 的基本安装,但默认情况下不会同时安装所需的依赖项,如与各种模型、数据存储库的集成等。
- 引入依赖项:可以使用 pip install langchain[llms] 在安装 LangChain 时引入常用的开源 LLM(大语言模型)库,安装完成后还需更新到最新版本。
- 学习渠道:LangChain 的 GitHub 社区非常活跃,是学习的重要渠道之一,同时官方也提供了详尽的 API 文档,但可能会存在一些错误。遇到问题时,可以在官方平台上提交问题反馈。
五、OpenAI API 的使用
- 模型介绍:OpenAI 提供了多种模型,其中 Chat Model 和 Text Model 是大语言模型的代表。Chat Model 用于产生人类和 AI 之间的对话,如 gpt - 3.5 - turbo(ChatGPT)和 GPT - 4;Text Model 则在 ChatGPT 出现之前被广泛使用,如 text - davinci - 003。
- 调用方式:
- Text 模型调用:先注册 API Key,然后使用 pip install openai 安装 OpenAI 库,通过代码导入 API Key,并创建一个 Client,最后指定模型并调用 completions 方法返回结果。
- Chat 模型调用:整体流程与 Text 模型类似,但输入(prompt)和输出(response)的数据格式有所不同,需要传入一个消息列表,包含 system、user 和 assistant 等角色的信息。
六、LangChain 调用 OpenAI 的 Text 和 Chat 模型
- 调用 Text 模型:先导入 LangChain 的 OpenAI 类,创建一个 LLM(大语言模型)对象,指定使用的模型和生成参数,使用创建的 LLM 对象进行文本生成。
- 调用 Chat 模型:导入 LangChain 的 ChatOpenAI 类,创建一个 Chat 模型对象,指定模型和参数,从 schema 模块中导入 SystemMessage 和 HumanMessage 类创建消息列表,最后使用创建的 chat 对象进行文本生成。
七、实战项目 - “易速鲜花” 内部员工知识库问答系统
- 项目介绍:“易速鲜花” 作为大型在线鲜花销售平台,内部信息分散不便查询,因此需要开发一个基于各种内部知识手册的 “Doc - QA” 系统,能够理解员工的问题并基于最新的员工手册给出精准答案。
- 开发框架:
- 数据源:包括 PDF、Word、Txt 等非结构化数据,以及 SQL 等结构化数据和代码。
- 大模型应用:以大模型为逻辑引擎生成回答。
- 用例:可构建 QA / 聊天机器人等系统。
- 核心实现机制:
- 数据的准备和载入:使用 LangChain 中的 document_loaders 加载各种格式的文本文件,注意需要安装相应的工具包。
- 文本的分割:使用 RecursiveCharacterTextSplitter 将加载的文本分割成较小的块,以便进行嵌入和向量存储。
- 向量数据库存储:将分割后的文本转换成嵌入的形式,并存储在向量数据库中,如使用 OpenAIEmbeddings 生成嵌入,Qdrant 存储嵌入。
- 相关信息的获取:通过将问题转换为向量,与向量数据库中的向量进行比较,提取最相关的信息,建议使用余弦相似度作为度量标准。
- 生成回答并展示:创建一个 Flask 应用接收用户的问题,使用之前创建的 RetrievalQA 链获取相关文档并生成答案,最后通过网页展示给用户。
八、总结
LangChain 作为新一代的 AI 开发框架,为开发者提供了强大的工具和便捷的接口,能够帮助我们快速构建基于大语言模型的智能应用。通过学习 LangChain 的安装、配置、模型调用以及实战项目的开发,我们可以更好地理解和掌握这一框架,为未来的 AI 应用开发打下坚实的基础。在这个崭新的历史节点上,让我们一同投身到 LangChain 的世界中,解锁 AI 的无限可能。