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编写的大模型程序!代码里的注释简单介绍了每句的作用,现在不理解其中的语法没关系,后面我们将陆续学习其中的概念。

相关推荐
摇滚侠2 小时前
Spring Boot 3零基础教程,IOC容器中组件的注册,笔记08
spring boot·笔记·后端
bnsarocket3 小时前
Verilog和FPGA的自学笔记2——点亮LED
笔记·fpga开发·verilog·自学
shut up5 小时前
LangChain - 如何使用阿里云百炼平台的Qwen-plus模型构建一个桌面文件查询AI助手 - 超详细
人工智能·python·langchain·智能体
Larry_Yanan6 小时前
QML学习笔记(三十四)QML的GroupBox、RadioButton
c++·笔记·qt·学习·ui
im_AMBER6 小时前
杂记 14
前端·笔记·学习·web
liliangcsdn6 小时前
如何基于ElasticsearchRetriever构建RAG系统
大数据·elasticsearch·langchain
东方佑6 小时前
基于FastAPI与LangChain的Excel智能数据分析API开发实践
langchain·excel·fastapi
oe10197 小时前
好文与笔记分享 Paris, A Decentralized Trained Open-Weight Diffusion Model
人工智能·笔记·去中心化·多模态
立志成为大牛的小牛7 小时前
数据结构——十七、线索二叉树找前驱与后继(王道408)
数据结构·笔记·学习·程序人生·考研·算法
大筒木老辈子7 小时前
MySQL笔记---C/C++访问MySQL数据库
数据库·笔记·mysql