【每天一个知识点】LangChain
“LangChain” 是一个用于构建由大语言模型(LLMs)驱动的可组合、可交互、多工具协作的智能应用开发框架。它不仅能管理 Prompt、上下文、记忆和工具,还支持构建复杂的“多步骤推理”任务流程。
一、LangChain 简介
1. 核心定位
LangChain 旨在把大语言模型作为决策引擎和控制中枢,支持你快速构建像 ChatGPT 插件、智能问答系统、智能体(Agent)等复杂任务应用。
2. 编程语言支持
主要支持 Python 和 JavaScript/TypeScript 两种语言版本,社区主要以 Python 为主。
二、LangChain 主要组成模块(Python版)
模块 | 作用描述 |
---|---|
PromptTemplates | 提示词模板构建与变量注入,适配不同任务语境 |
LLMs/ChatModels | 封装 OpenAI、Anthropic、Cohere 等模型 |
Chains | 把多个组件串联起来构成完整流程(如提问 → 搜索 → 回答) |
Agents | 引入“工具调用”能力,通过思考和行动完成任务(如 ReAct Agent) |
Tools | 第三方工具,如搜索引擎、Python 解释器、API 接口 |
Memory | 会话记忆,适用于多轮对话场景 |
Retrievers | 向量检索组件,支持 RAG 应用 |
Document Loaders & Text Splitters | 文档读取与分块,用于知识库构建 |
三、典型使用场景
1. 文档问答系统(RAG)
-
流程:文档 → 向量化 → 查询 → LLM 生成回答
-
模块:Document Loaders + FAISS/Chroma + Retriever + Chain
2. Agent 多工具智能体
-
通过 ReAct Agent 实现“观察-思考-行动”闭环
-
可调用:Google 搜索、Python 执行、网页抓取、数据库查询等
3. 任务编排(Multi-step Reasoning)
-
使用
SequentialChain
、RouterChain
、ConversationChain
等模块完成复杂任务分解与流程管理
四、LangChain 示例代码(RAG 简易文档问答)
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter# 加载文档并切分
loader = TextLoader("example.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)# 构建向量库
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(texts, embeddings)# 构建问答系统
retriever = db.as_retriever()
llm = ChatOpenAI(temperature=0)
qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)# 测试提问
query = "这篇文档讲了什么?"
response = qa.run(query)
print(response)
五、LangChain 与智能体系统的关系
特性 | LangChain 实现方式 |
---|---|
工具调用 | 通过 Tools 与 AgentExecutor 完成 |
思维链推理(Chain of Thought) | 通过 Chain 的分步提示构建多轮逻辑链 |
多Agent协同 | 支持 MultiAgentChain 和外部任务调度引擎集成 |
RAG 问答 | 与向量数据库 + Retriever 高度集成 |