LangChain入门学习笔记(一)——Hello World

什么是LangChain

LangChain是一个开源(github repo)的大语言模型应用开发框架,提供了一整套的工具、方法和接口去帮助程序员构建基于大语言模型的端到端应用。LangChain是长链(long chain)的意思,它的一个核心思想就是将应用的各阶段处理连成一条长串进行。

LangChain技术架构

官网中给出的LangChain架构图如下:

从图中不难看出,整个框架由以下几个库组成:

  • langchain-core:提供基础的抽象能力和LangChain表达语言(LCEL),这一层定义了LangChain的"协议"。
  • LangChain-Community:提供三方集成能力。比如一些合作伙伴的包,譬如langchain-openai / langchain-anthropic,通过LangChain-Community的接口与第三方服务进行交互。
  • LangChain:这一层提供的接口形成LangChain框架的基本认知架构,比如链、代理及检索策略(retrieval strategies)。

上面3个部分都提供了Python和JavaScript两个版本。下面是提供的工具:

  • Templates:用于构建和管理prompts模板,提供指令和上下文信息给到大模型。
  • LangServe:将LangChain的链部署为REST API服务。
  • LangSmith:一个用于debug、测试、评估和监控大模型应用的开发者平台工具。

LangChain核心学习要素

LangChain是一个大语言模型应用的开发框架,它的设计是围绕大语言模型的应用开发进行。简单说,基于大语言模型的应用在逻辑上划分为输入、模型处理、输出三个大的模块:

  • 输入:包含prompt和retriever两大块内容。前者有Text、PromptTemplate、以及Example Selectors这些,后者主要是Document Loader、Text Splitter、Vector Store和Embedding等。
  • 大模型:这是处理模块,包括LLM和Chat Model两大块概念。围绕它们有集成三方大模型接口、流化和缓存,以及Message类型等概念。
  • 输出:大模型处理之后的输出,涉及到应用的结果展示,因此有各种数据的Parser类型。
  • 组合:在上述三个实体之外,还有一些组合的概念,包括代理、链和工具,旨在扩展大模型的能力范围,提供更优的结果。

此外还有用于"粘合"模块的LCEL语言,提供了链式和并行处理机制。

LangChain版Hello World

LangChain的安装

安装LangChain库非常容易,以python版为例,只需执行如下命令:

bash 复制代码
pip install langchain

上面命令包含安装了langchain-core,如果需要单独安装langchain-core,可以执行:

bash 复制代码
pip install langchain-core

类似的,为了集成三方库,需要的langchain-community如下安装:

bash 复制代码
pip install langchain-community

安装langserver:

bash 复制代码
# 安装全部
pip install "langserve[all]"
## 仅安装client端
#pip install "langserve[client]"
## 仅安装server端
#pip install "langserve[server]"

安装langsmith:

bash 复制代码
pip install langsmith

LangChain本地运行LLM

LangChain支持使用api_key调用类似OpenAI和Anthropic的三方LLM,这里为了实现的稳定性选择本地方式部署,通过Ollama封装调用本地LLM。

安装Ollama

Ollama之于LLM,就像Docker之于Image。从Ollama官网下载对应版本安装Ollama后,执行下面命令获取模型:

bash 复制代码
#请结合本地硬件资源选择合适的模型
#可以参考Ollama官网介绍的模型参数规模来确定具体部署哪些模型
#https://ollama.com/library
ollama pull llama2

使用ollama list命令查看LLM是否已经拉取到本地:

LangChain的"Hello World!"

一个LangChain版本的"Hello World"代码如下:

python 复制代码
from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

#加载llama3模型。
llm = Ollama(model="llama3")

#生成prompt模板。
prompt = ChatPromptTemplate.from_template("Hello {name}!")

#输出解析。
output_parser = StrOutputParser()

#LCEL生成链。
chain = prompt | llm | output_parser

#调用链,传入模板参数,注意传入的是字典对象。
response = chain.invoke({"name": "World"})

#打印响应结果
print(response)

上面代码输入一个简单文本,经过llm处理后,输出经过解析后最终给出模型应用的结果:

llama3大模型回应了"Hello there, Human! It's great to see you! How can I assist or chat with you today?"

恭喜你!完成了第一个用LangChain编写的大模型程序!代码里的注释简单介绍了每句的作用,现在不理解其中的语法没关系,后面我们将陆续学习其中的概念。

相关推荐
量子-Alex32 分钟前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡37 分钟前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
CCSBRIDGE3 小时前
Magento2项目部署笔记
笔记
爱吃西瓜的小菜鸡3 小时前
【C语言】判断回文
c语言·学习·算法
小A1594 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
亦枫Leonlew4 小时前
微积分复习笔记 Calculus Volume 2 - 5.1 Sequences
笔记·数学·微积分
岁岁岁平安4 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
qq_589568104 小时前
数据可视化echarts学习笔记
学习·信息可视化·echarts
爱码小白4 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记