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

第1课、LangChain 介绍

LangChain 介绍

LangChain 是一个以大语言模型(LLM, Large Language Model)为核心的开发框架,旨在帮助开发者高效地将如 GPT-4 等大型语言模型与外部数据源和计算资源集成,构建智能化应用。

1.1 工作原理

如上图所示,LangChain 通过三个核心组件提升了大型语言模型(LLMs)的能力:

  • Components(组件):为 LLMs 提供接口封装、提示模板和信息检索索引。
  • Chains(链):将不同组件组合,解决复杂任务,如在大规模文本中检索和处理信息。
  • Agents(代理):使 LLMs 能与外部环境交互,例如通过 API 请求执行操作。

1.2 主要特性

  • 支持多种数据源接入,如网页、PDF 文件、向量数据库等。
  • 允许语言模型与外部环境实时交互。
  • 封装了 Model I/O(输入/输出)、Retrieval(检索)、Memory(记忆)、Agents(决策与调度)等核心模块。
  • 通过链式结构灵活组装各组件,满足多样化应用需求。

1.3 核心概念

LangChain 由以下核心概念构成:

  • LLM Wrappers:对接主流大语言模型(如 GPT-4、Hugging Face 等)。
  • Prompt Templates:支持动态变量插入,提升 Prompt 工程灵活性。
  • Indexes:高效索引与检索大规模文本或数据库中的相关信息。
  • Chains:将多个组件串联,完成多步推理与复杂任务。
  • Agents:赋予模型自主决策能力,可调用外部工具或 API。

上图展示了一个复杂的自然语言处理系统,包括模型、提示、链、代理以及嵌入与向量存储:

  • Models(模型):负责理解和生成自然语言。
  • Prompts(提示):引导模型输出期望结果。
  • Chains(链):将多个步骤串联,完成复杂任务。
  • Agents(代理):实现模型与外部环境的动态交互,如 API 调用。
  • Embedding & VectorStore(嵌入与向量存储):用于数据表示和高效检索,为模型提供语义理解基础。

1.4 工作流程

LangChain 的典型工作流程如下:

  • 用户提出问题。
  • 问题被向量化,用于在向量数据库中进行相似性检索。
  • 检索到的相关信息与原始问题一同输入语言模型。
  • 语言模型基于上下文生成答案或执行操作。

1.5 应用场景

LangChain 的应用场景涵盖但不限于:

  • 智能个人助手:如自动预订、转账、缴税等。
  • 数据分析与数据科学:连接企业内部或外部数据源,提升数据分析效率。
  • 数据连接:将 LLM 与数据库、PDF、文档等私有数据源集成,实现专属知识检索。
  • 自动化行动执行:不仅能检索信息,还可根据检索结果自动执行操作(如发送邮件),无需硬编码。

LangChain 为 AI 应用开发带来了高度的灵活性和扩展性,使机器学习系统能够更好地贴合实际业务需求,推动智能应用的多样化和个性化发展。


LangChain 简介

LangChain 是一个以大语言模型(LLM)为核心的开发框架,旨在让开发者能够更方便地将如 GPT-4 这样的模型与外部数据源和计算资源结合起来。框架目前支持 Python 和 JavaScript(TypeScript)两大主流开发语言,极大地降低了 LLM 应用开发的门槛。


版本介绍

LangChain 目前主要有两个官方维护的版本,分别面向 Python 和 JavaScript/TypeScript 生态:

  • LangChain (Python)

  • 适用于数据科学、AI 应用、后端开发等场景。

  • 社区活跃,文档与案例丰富。

  • 支持主流 LLM(如 OpenAI、Anthropic、HuggingFace)、多种向量数据库(如 FAISS、Chroma、Weaviate),工具链和插件生态完善。

  • PyPI 包名:langchain

  • LangChain.js (JavaScript/TypeScript)

  • 适用于前端、全栈、Node.js 服务端开发。

  • 语法风格与 Python 版趋同,API 设计一致。

  • 支持主流 LLM、向量数据库,兼容浏览器和 Node.js 环境。

  • npm 包名:langchain

两个版本均在持续快速迭代,API 设计趋于统一,便于开发者跨语言迁移和经验复用。


类似框架对比

随着 LLM 应用开发的兴起,业界涌现出多款与 LangChain 类似的框架。下表对主流框架进行简要对比:

框架语言主要特点适用场景
LangChainPython/JS生态完善,组件丰富,支持链式组合、Agent、Memory、插件众多,社区活跃通用 LLM 应用开发
LlamaIndex(原GPT Index)Python/JS专注文档/知识库检索(RAG),文档加载与索引能力强,易与 LangChain 集成知识库问答、RAG
HaystackPython企业级,支持多种后端(Elasticsearch、FAISS、OpenSearch),可视化工具丰富检索增强问答、企业知识库
PromptFlowPython/JS微软出品,强调可视化流程编排和 Prompt 工程,集成 Azure AI 服务流程自动化、企业级集成
FlowiseJS/可视化基于 Node.js 的低代码/可视化 LLM 应用编排,拖拽式界面,易用性强快速原型、非程序员用户

简要分析

  • LangChain:适合需要高度自定义、复杂链路、Agent、插件扩展的开发者,生态最全,社区活跃。
  • LlamaIndex:专注于知识库检索和文档增强生成(RAG),与 LangChain 可无缝集成。
  • Haystack:偏向企业级生产环境,支持多种后端和可视化,适合大规模知识库和检索场景。
  • PromptFlow/Flowise:适合需要可视化、低代码开发的团队,尤其适用于 Prompt 工程和流程自动化。

LangChain 的核心组件

LangChain 的设计高度模块化,主要包括以下核心组件:

  • LLM Wrappers(模型包装器):无缝对接 OpenAI、Hugging Face 等主流大模型。
  • Prompt Templates(提示模板):支持动态变量插入,提升 Prompt 工程灵活性。
  • Indexes(索引):高效检索大规模文本或数据库中的相关信息。
  • Chains(链):将多个组件串联,完成多步推理与复杂任务。
  • Agents(代理):赋予模型自主决策能力,可调用外部工具或 API。
  • Memory(记忆):支持对话历史和上下文记忆,提升智能化水平。

LangChain 的结构设计使 LLM 不仅能处理文本,还能在更广泛的应用环境中进行操作和响应,极大扩展了其应用范围和有效性。

[图片]

LangChain 的工作原理

LangChain 的典型工作流程如下:

  1. 用户提出问题。
  2. 问题被向量化,在向量数据库中检索相关内容。
  3. 检索到的信息与原始问题一同输入 LLM。
  4. LLM 生成答案,或由 Agent 进一步调用外部工具执行操作。

这种设计让 LLM 不再是"黑箱",而是能够与外部世界实时互动的智能体。

举例:如上图所示,智能问答系统从用户提问开始,通过相似性检索在数据库或向量空间中找到相关信息,结合原始问题由模型分析生成答案,并可由代理执行后续操作,实现数据驱动的自动化决策流程。


LangChain 的应用场景

LangChain 的应用非常广泛,包括但不限于:

  • 智能问答系统(RAG,Retrieval Augmented Generation)
  • 企业知识库检索
  • 智能客服/个人助理
  • 数据分析自动化
  • 自动化办公(如自动发邮件、生成报告)
  • 多轮对话机器人
  • 代码自动生成与解释
  • 数据连接:将 LLM 与数据库、PDF、文档等私有数据源集成,实现专属知识检索。
  • 行动执行:不仅能检索信息,还可根据检索结果自动执行操作(如发送邮件),无需硬编码。

LangChain 为 AI 应用开发打开了全新可能,使机器学习系统更贴合实际需求,推动智能应用的多样化和个性化。


简单案例:用 LangChain 构建本地知识库问答

假设你有一段本地文本资料,希望让大模型基于这些资料进行智能问答。以下为最小可运行的 Python 示例:

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import RetrievalQA
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter# 1. 构建本地知识库
text = """
LangChain 是一个用于开发基于大语言模型(LLM)应用的开源框架。
它支持多种数据源接入,能够让 LLM 与外部世界无缝连接。
"""
# 文本切分
text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)
docs = text_splitter.create_documents([text])# 构建向量数据库
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(docs, embeddings)# 2. 构建问答链
llm = OpenAI(temperature=0)
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)# 3. 提问
question = "LangChain 有什么用?"
answer = qa.run(question)
print("答案:", answer)

说明

  • 需提前配置 OpenAI API Key(可通过环境变量 OPENAI_API_KEY 设置)。
  • 本案例将本地文本转为向量,用户提问后,LangChain 自动检索相关内容并调用大模型生成答案。
  • 可将 text 替换为自有知识库内容,或扩展为读取 PDF、网页等。

案例2:Prompt模版

from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAIoutput_parser = CommaSeparatedListOutputParser()format_instructions = output_parser.get_format_instructions()
prompt = PromptTemplate(template="列出五个 {subject}.\n{format_instructions}",input_variables=["subject"],partial_variables={"format_instructions": format_instructions},
)model = ChatOpenAI(temperature=0,model="gpt-4",api_key="xk-349774**********",base_url="https://**********/v1/")"""
这段代码定义了一个链式调用的过程,具体步骤如下:
prompt:生成初始提示。| model:将提示传递给模型进行处理。| output_parser:解析模型的输出结果。
"""
chain = prompt | model | output_parser
chain.invoke({"subject": "最喜欢的食物"})
for s in chain.stream({"subject": "最喜欢的食物"}):print(s)

相关文章:

  • 风控系统中常用的概念和架构学习
  • uni-app学习笔记三十三--触底加载更多和下拉刷新的实现
  • Linux性能调优:从内核到应用的极致优化
  • <3>-MySQL表的操作
  • unity ngui button按钮点击时部分区域响应,部分区域不响应
  • unity实现自定义粒子系统
  • 【无人机】地面站crazyfile-cfclient免安装方法,Python3.10的整体环境配置打包
  • 支付系统架构图
  • 【设计模式】1.简单工厂、工厂、抽象工厂模式
  • jmeter聚合报告中参数详解
  • 重新定义 AI 协同:三款开源 MCP 工具开启智能体从“聊天”到“操控”
  • Bootstrap Table开源的企业级数据表格集成
  • LLMs 系列科普文(12)
  • 七、Sqoop Job:简化与自动化数据迁移任务及免密执行
  • [深度学习]搭建开发平台及Tensor基础
  • AI书签管理工具开发全记录(十七):Sun-Panel书签同步实现
  • Spring Boot微服务架构(十四):传统架构与微服务架构的开发成本对比分析
  • 【资源分享】手机玩转经典游戏!小鸡模拟器1.9.0:PSP/NDS/GBA完美运行!
  • ⑤Pybullet之URDF文件说明及示例
  • MCP Tool模块详解
  • 公司做网站推广需要多少钱/企业宣传文案
  • 建设网站需要虚拟空间/宁国网络推广
  • 荆门网站建设公司/免费html网站模板
  • asp企业网站开发技术/邯郸seo优化
  • 无上光东莞网站/太原做网站哪家好
  • 湖州做网站公司哪家好/网站域名备案查询