Summerful的LangChain入门学习笔记(一)

200 阅读3分钟

什么是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)

下面是执行结果截图