一、LangChain 基础介绍
1.1 框架概述
LangChain 是由 Harrison Chase 于 2022 年 10 月推出的开源大模型应用开发框架,专门用于搭建基于大语言模型(LLM)的各类应用。
使用该框架具备多项核心优势:
- 降低开发门槛:开发流程更简洁、执行效率更高,落地效果更稳定。
- 统一模型调用:不同大模型的接口、调用逻辑差异较大,LangChain 提供标准化调用方式,模型迁移、切换更便捷。
- 模块化组合能力:内置成熟的链式逻辑组件,可快速拼装复杂业务流程,整体架构结构化强,便于迭代与拓展。
1.2 官方资源汇总
官网:https://www.langchain.com/langchain
官网文档:https://python.langchain.com/docs/introduction/
API文档:https://python.langchain.com/api_reference/
github地址:https://github.com/langchain-ai/langchain
1.3 核心产品体系
整套生态由多个组件构成,各司其职,共同支撑全流程开发与运维:
- langchain-core:框架底层核心,包含基础抽象能力与 LCEL 表达式语言,是所有功能的基石。
- LangChain 主体库:提供 Chains、Agents、检索策略等核心能力,搭建 AI 应用的核心架构。
- LangChain-community:社区拓展组件,涵盖模型交互、检索工具、各类插件工具箱等。
通俗理解:LangChain 就像一套标准化乐高零件,整体框架体量不大,但细分功能繁多,开发者可按需拼装组合,快速搭建应用。
- LangGraph:基于 LangChain 接口二次封装,可调度多个链路、智能体与工具,实现复杂业务逻辑,是高阶场景的核心组件。
- LangSmith:配套运维监控平台(https://docs.smith.langchain.com/),集成调试、沙盒测试、提示词管理、注释、自动化测试、运行监控六大能力,打通从原型开发到线上生产的全流程。
- LangServe:可将 LangChain 链路封装为 REST 接口,支持跨语言调用(如 Java),同时提升应用并发能力与运行稳定性。
总结:在整个生态中,LangGraph 和 LangSmith 是最具发展潜力的两大模块。当下不少框架都能实现 RAG 功能,LangChain 选择深耕智能体赛道,依托 LangGraph 实现复杂自主任务;而 LangSmith 则补齐了应用上线后的运维、监控短板,二者相辅相成。
二、开发环境准备
python
安装python或者VS.CODE扩展python
python安装对应的langchain包
三、LangChain 核心组件
框架主流核心模块包含:model I/O、chain、memory、agent、Retrieval
3.1 Model I/O
Model I/O:标准化各个大模型的输入和输出,包含输入模板,模型本身和格式化输出。
Format(格式化) :即指代Prompts Template,通过模板管理大模型的输入。将原始数据格式化成 模型可以处理的形式,插入到一个模板问题中,然后送入模型进行处理。Predict(预测) :即指代Models,使用通用接口调用不同的大语言模型。接受被送进来的问题,然 后基于这个问题进行预测或生成回答。
Parse(生成) :即指代Output Parser 部分,用来从模型的推理中提取信息,并按照预先设定好的 模板来规范化输出。比如,格式化成一个结构化的JSON对象。
这个模块使⽤最多,也最简单
以下是对每一块的总结:
Format(格式化) :即指代Prompts Template,通过模板管理大模型的输入。将原始数据格式化成
模型可以处理的形式,插入到一个模板问题中,然后送入模型进行处理。
Predict(预测) :即指代Models,使用通用接口调用不同的大语言模型。接受被送进来的问题,然
后基于这个问题进行预测或生成回答。
Parse(生成) :即指代Output Parser 部分,用来从模型的推理中提取信息,并按照预先设定好的
模版来规范化输出。比如,格式化成一个结构化的JSON对象。
3.2 Chain
Chain:"链条",用于将多个模块串联起来组成一个完整的流程,是 LangChain 框架中最重要的模块。 例如,一个 Chain 可能包括一个 Prompt 模板、一个语言模型和一个输出解析器,它们一起工作以处理 用户输入、生成响应并处理输出。
常见的Chain类型:
- RouterChain :自动分析用户的需求,引导到最适合的链
- RetrievalQA :结合向量数据库进行问答的链
3.3 Memory
Memory:记忆模块,用于保存对话历史或上下文信息,以便在后续对话中使用。
常见的 Memory 类型:
- ConversationBufferMemory :保存完整的对话历史
- ConversationSummaryMemory :保存对话内容的精简摘要(适合长对话)
- ConversationSummaryBufferMemory :混合型记忆机制,兼具上面两个类型的特点
- VectorStoreRetrieverMemory :保存对话历史存储在向量数据库中
3.4 Agents
Agents,对应着智能体,是 LangChain 的高阶能力,它可以自主选择工具并规划执行步骤。
Agent 的关键组成:
Tool :是一些内置的功能模块,如API调用、搜索引擎、文本处理、数据查询等工具。Agents通过这些工具来执行特定的功能。AgentExecutor :用来运行智能体并执行其决策的工具,负责协调智能体的决策和实际的工具执行。3.5 Retrieval
Retrieval:对应着RAG,检索外部数据,然后在执行生成步骤时将其传递到 LLM。步骤包括文档加载、切割、Embedding等
Source :数据源,即大模型可以识别的多种类型的数据:视频、图片、文本、代码、文档等。
Load :负责将来自不同数据源的非结构化数据,加载为文档(Document)对象
Transform :负责对加载的文档进行转换和处理,比如将文本拆分为具有语义意义的小块。
Embed :将文本编码为向量的能力。一种用于嵌入文档,另一种用于嵌入查询
Store :将向量化后的数据进行存储
Retrieve :从大规模文本库中检索和查询相关的文本段落
3.6 Callbacks
Callbacks:回调机制,允许连接到 LLM 应用程序的各个阶段,可以监控和分析LangChain的运行情
况,比如日志记录、监控、流传输等,以优化性能。
四. Langchain入门
代码略