当前位置: 首页 > news >正文

【每天一个知识点】LangChain

“LangChain” 是一个用于构建由大语言模型(LLMs)驱动的可组合、可交互、多工具协作的智能应用开发框架。它不仅能管理 Prompt、上下文、记忆和工具,还支持构建复杂的“多步骤推理”任务流程。


一、LangChain 简介

1. 核心定位

LangChain 旨在把大语言模型作为决策引擎和控制中枢,支持你快速构建像 ChatGPT 插件、智能问答系统、智能体(Agent)等复杂任务应用。

2. 编程语言支持

主要支持 PythonJavaScript/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)

  • 使用 SequentialChainRouterChainConversationChain 等模块完成复杂任务分解与流程管理


四、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 实现方式
工具调用通过 ToolsAgentExecutor 完成
思维链推理(Chain of Thought)通过 Chain 的分步提示构建多轮逻辑链
多Agent协同支持 MultiAgentChain 和外部任务调度引擎集成
RAG 问答与向量数据库 + Retriever 高度集成

相关文章:

  • 消息队列从入门到实战:用外卖订单理解高并发系统的核心设计
  • AMBA-AHB的控制信号
  • 水域应急救援可视化平台
  • Ai书签管理工具开发全记录(一):项目总览与技术蓝图
  • c/c++的opencv图像金字塔缩放
  • 在 Linux 中,目录权限,mkdir -m 选项,用法
  • 扇形 圆形 面积公式
  • java读取excel数据中字段是否为金额格式
  • 图像锐化和图像运算
  • Vue CLI创建vue项目,安装插件
  • 前端面试准备-1
  • 算法 Arrays.sort()函数自定义排序(Comparator 接口)
  • XCTF-web-fileinclude
  • 在 MATLAB 2015a 中如何调用 Python
  • Golang | gRPC demo
  • JS 逆向太费劲,试试 JS 注入!
  • 题海拾贝:P1208 [USACO1.3] 混合牛奶 Mixing Milk
  • 流程自动化引擎:让业务自己奔跑
  • 深入理解设计模式之职责链模式
  • 2025年电气工程与轨道交通国际会议:绿色能源与智能交通的创新之路
  • wordpress分类排序号/seo排名如何优化
  • 网站建设的网站定位/企业网址
  • 微网站 留言板/廊坊网站建设优化
  • 广州沙河一起做网站/网站注册流程和费用
  • 日本购物网站开发/域名免费注册0元注册
  • 网站建设怎么加音乐/域名注册服务商