什么是LangChain
LangChain是一个开源(github repo)的大语言模型应用开发框架,提供了一整套的工具、方法和接口去帮助程序员构建基于大语言模型的端到端应用。LangChain是长链(long chain)的意思,它的一个核心思想就是将应用的各阶段处理连成一条长串进行。
英语不错的朋友可以直接看这个文档:
python.langchain.com/docs/tutori…
LangChain技术架构
langchain的架构示意图
从下到上主要包含以下几个部分:
1)LangChain-Core,提供基础的抽象能力和LangChain表达语言(LCEL)。
2)LangChain-Community,提供三方集成能力,比如一些合作伙伴的包,通过community的接口和第三方服务交互。
3)LangChain,这一层提供的接口形成LangChain框架的基本认知架构,包括链,智能体和检索策略。
上面3个部分都提供了Python和JavaScript两个版本。下面是提供的工具:
1)Templates,用于构建和管理prompts模版,提供指令和上下文信息给到LLM。
2)LangServe,将LangChain的链部署为Rest Api服务。
3)LangSmith,一个用户debug、测试、评估和监控大模型应用的开发者平台工具。
LangChain核心学习要素
LangChain是一个大语言模型应用的开发框架,它的设计是围绕大语言模型的应用开发进行。简单说,基于大语言模型的应用在逻辑上划分为输入、模型处理、输出三个大的模块:
1)输入,包含prompt和retriever两部分内容,prompt包含Text、PromptTemplate以及ExamSelectors,retriever主要包括Document Loader、Text Splitter、Vector Store和Embedd。
2)大模型,核心处理模块,包括LLM和Chat Model两大块概念。围绕它们有集成三方大模型接口、流、和缓存,以及Message类型等概念。
3)组合,在伤处三个实体之外,还有一些组合的概念,包括代理、链、工具,旨在扩展大模型能力范围,提供更优的结果。
此外还有用于粘合的LCEL语言,提供链式和并行的处理机制。
LangChain的安装
pip install langchain
上面命令包含安装了langchain-core,如果需要单独安装langchain-core,可以执行:
pip install langchain-core
类似的,为了集成三方库,需要的langchain-community如下安装:
pip install langchain-community
安装langserver:
# 安装全部pip install "langserve[all]"## 仅安装client端#pip install "langserve[client]"## 仅安装server端#pip install "langserve[server]"
安装langsmith:
pip install langsmith
LangChain本地运行LLM
LangChain支持使用api_key调用类似OpenAI和Anthropic的三方LLM,这里为了实现的稳定性选择本地方式部署,通过Ollama封装调用本地LLM。
安装Ollama
Ollama之于LLM,就像Docker之于Image。从Ollama官网下载对应版本安装Ollama后,执行下面命令获取模型:
ollama pull deepseek-r1:14b
使用ollama list命令查看LLM是否已经拉取到本地:
LangChain的“Hello World!”
from langchain_ollama import OllamaLLM
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 加载llama3模型。
llm = OllamaLLM(model="deepseek-r1:14b")
# 生成prompt模板。
prompt = ChatPromptTemplate.from_template("帮我写一个关于{name}的简介,不超过100字")
# 输出解析。
output_parser = StrOutputParser()
# LCEL生成链。
chain = prompt | llm | output_parser
# 调用链,传入模板参数,注意传入的是字典对象。
response = chain.invoke({"name": "LongChain"})
# 打印响应结果
print(response)
下面是执行结果截图