掘金 人工智能 21小时前
LangChain 入门到进阶:掌握大模型开发的第一步
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了LangChain,一个旨在帮助开发者高效构建基于大语言模型(LLM)的复杂智能应用的开源框架。LangChain通过模块化设计和链式调用,统一了连接语言模型、提示模板、记忆机制、工具系统和外部数据源的方式,降低了AI应用开发的门槛。文章详细阐述了LangChain的框架组成、核心概念,如模型能力、对话管理、工具调用、知识库与RAG,以及编排与运行机制。此外,还对比了LangChain与其他类似框架的特点,并提供了一个快速入门的RAG问答聊天机器人搭建实例。

💡 LangChain是一个开源框架,旨在帮助开发者高效构建基于大语言模型(LLM)的复杂智能应用,通过模块化设计与链式调用理念,降低了AI应用开发的门槛。

📚 LangChain的核心概念包括:模型能力与输入输出机制(支持多轮对话、嵌入生成等)、对话管理与记忆机制(支持消息对象封装、上下文历史存储)、工具调用与智能代理(扩展语言模型的能力)、知识库与RAG(检索增强生成,提升上下文相关性与准确性)。

🛠️ LangChain提供灵活的运行接口与表达式语言,支持组件级组合与异步执行,帮助开发者搭建清晰高效的处理流程,同时还提供完善的链路追踪、回调钩子与测试评估工具,助力 AI 应用质量保障与问题定位。

🆚 LangChain与LlamaIndex、Haystack、DSPy等框架相比,具有通用性、模块化设计、多工具集成和活跃的插件生态等特点,适用于对话机器人、智能客服、工具调用、流程自动化等多种应用场景。

🤖 通过LangChain可以快速搭建RAG问答聊天机器人,主要包括索引构建(加载、分割、存储数据)和检索与生成(检索相关分片、生成答案)两个主要组件。

一、介绍

LangChain 是一个开源框架,旨在帮助开发者高效构建基于大语言模型(LLM)的复杂智能应用。通过模块化设计与链式调用理念,LangChain 提供了连接语言模型、提示模板、记忆机制、工具系统与外部数据源的统一方式,大幅降低了 AI 应用开发的门槛。

二、框架组成

LangChain 的架构由以下核心模块构成:

模块名称描述
LangSmith一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成
LangServe支持将 LangChain 构建的链部署为 REST API 的工具
LangChain 模板提供各类任务的参考架构模板,适合快速部署和二次开发
LangChain 库提供 Python 与 JavaScript SDK,包含组件接口、运行时引擎,以及预构建的链与代理

三、核心概念

1.模型能力与输入输出机制

LangChain 封装了多种模型接口与输入输出机制,帮助开发者更高效地使用 LLM 实现定制化任务,包括提示模板管理、结构化输出、嵌入生成、示例选择与多模态处理。

概念说明
Chat Models支持多轮消息输入输出的对话模型
Embedding Models将文本或多模态数据映射为向量表示
Prompt Templates模板化管理提示词,便于复用与版本控制
Few-shot Prompting通过示例提升模型在特定任务中的表现
Structured Output输出结构化数据,如 JSON,便于程序处理
Output Parsers将模型原始输出转换为规范格式
Example Selectors自动选择示例用于 few-shot 提示词生成
Multimodality支持处理文本、图像、音频、视频等多模态数据

2.对话管理与记忆机制

LangChain 提供丰富的对话管理能力,支持消息对象封装、上下文历史存储与调用,并通过记忆机制实现对长时上下文或状态的持续跟踪,使模型具备更强的连贯性与上下文理解能力。

概念说明
Messages聊天中的最小信息单元,支持角色与内容定义
Chat History对话消息序列记录,支持上下文管理
Memory长/短期记忆模块,支持跨轮调用历史信息

3.工具调用与智能代理

为了扩展语言模型的能力,LangChain 引入工具系统与智能代理架构。工具允许模型调用外部函数或 API,代理系统则支持模型根据任务自动规划行动步骤,逐步完成复杂指令。

概念说明
Tools具备结构化参数定义的外部函数或 API
Tool Calling支持 LLM 自动识别并调用工具的机制
Agents具备自主决策能力的智能体,可动态调用多个工具完成任务

4.知识库与 RAG(Retrieval-Augmented Generation)

LangChain 原生支持构建检索增强生成(RAG)系统,将外部知识引入大模型,提升上下文相关性与准确性。

概念说明
Document Loaders加载文本、PDF、网页等数据为文档对象
Text Splitters长文本分块,利于向量化与检索
Vector Stores文档向量与元数据的存储与搜索系统
Retrievers从知识库中返回最相关文档的接口
RAG 机制将检索结果注入 Prompt,提高模型对事实的掌握能力

5.编排与运行机制

LangChain 提供灵活的运行接口与表达式语言,支持组件级组合与异步执行,帮助开发者搭建清晰高效的处理流程。

概念说明
Runnable 接口LangChain 所有模块的统一运行接口
LangChain Expression Language(LCEL)通过链式语法组合各类组件,实现流程编排
Async Programming原生支持异步执行,适配大规模并发场景
Streaming支持流式输出,如 token 级实时生成

6.调试、测试与评估体系

LangChain 提供完善的链路追踪、回调钩子与测试评估工具,助力 AI 应用质量保障与问题定位。

概念说明
Callbacks自定义钩子函数,可用于日志、指标或流式输出
Tracing可视化链路分析工具,支持从输入到输出的全过程追踪
Evaluation对模型响应进行质量评估,包括准确性、一致性等指标
Testing验证链或代理在不同输入下的稳定性与正确性

四、LangChain与同类框架对比

在大语言模型应用开发领域,除了 LangChain,还存在如 LlamaIndex、Haystack、DSPy 等热门框架。它们在设计理念、功能侧重、易用性与扩展能力等方面各具特色。

框架核心定位核心特点典型应用场景开源与许可
LangChain通用 LLM 应用开发框架模块化设计,支持链式组合与智能代理,多工具集成,插件生态活跃对话机器人、智能客服、工具调用、流程自动化✅ MIT License
LlamaIndexLLM 的数据接口与索引框架聚焦数据连接与索引构建,支持多种检索器与索引结构,便于与 LLM 集成私有知识库问答、文档检索、RAG 系统✅ MIT License
Haystack面向生产的 NLP/RAG 应用框架支持端到端 NLP 管道,兼容传统与现代检索模型,集成 ElasticSearch、FAISS 等企业级问答系统、FAQ 管理、文档搜索引擎✅ Apache 2.0
DSPy声明式 Prompt 编排与优化框架以编程方式构建提示链,自动调整提示策略,注重提示质量与推理性能Prompt 研究、策略调优、复杂推理任务✅ MIT License

五、LangChain快速入门

下面开始通过检索增强生成 (RAG) 的技术构建一个问答聊天机器人,一个典型的RAG(检索增强生成)应用包含两个主要组件。

    索引构建:从数据源摄取数据并建立索引。

    检索与生成:实际的RAG链,在运行时接收用户查询,从索引中检索相关数据,然后将结果传递给生成模型。

搭建RAG问答聊天机器人

本次实战基于 Python 3.11.9 和 LangChain v0.3 实现一个简单的 RAG(检索增强生成)问答系统,将在 Jupyter Notebook 中进行。

    环境准备(可选)

若希望记录调用链信息,可设置 LangSmith 环境变量开启 LangSmith 追踪功能。可访问LangSmith生成LANGSMITH_API_KEY。

在终端中运行:

export LANGSMITH_TRACING="true"export LANGSMITH_API_KEY="..."

或在 Jupyter Notebook 中设置:

import getpass, osos.environ["LANGSMITH_TRACING"] = "true"os.environ["LANGSMITH_API_KEY"] = getpass.getpass()
    安装依赖项
pip install -qU "langchain[openai]"pip install -qU langchain-openaipip install -qU langchain-core
    初始化模型
import getpass, osif not os.environ.get("OPENAI_API_KEY"):    os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")from langchain.chat_models import init_chat_modelllm = init_chat_model("gpt-4o-mini", model_provider="openai")
from langchain_openai import OpenAIEmbeddingsembeddings = OpenAIEmbeddings(model="text-embedding-3-large")
    构建向量存储
from langchain_core.vectorstores import InMemoryVectorStorevector_store = InMemoryVectorStore(embeddings)
    加载和预处理文档

使用 WebBaseLoader 加载 Lilian Weng 的代理相关博客文章内容:

import bs4from langchain_community.document_loaders import WebBaseLoaderloader = WebBaseLoader(    web_paths=("https://lilianweng.github.io/posts/2023-06-23-agent/",),    bs_kwargs=dict(        parse_only=bs4.SoupStrainer(            class_=("post-content", "post-title", "post-header")        )    ),)docs = loader.load()

使用递归式文本切分器分割长文为可处理的段落:

from langchain_text_splitters import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)all_splits = text_splitter.split_documents(docs)

将文档块添加至向量存储中:

_ = vector_store.add_documents(documents=all_splits)
    构建 RAG 问答链
from langchain import hubprompt = hub.pull("rlm/rag-prompt")
from langchain_core.documents import Documentfrom typing_extensions import List, TypedDictclass State(TypedDict):    question: str    context: List[Document]    answer: str
def retrieve(state: State):    retrieved_docs = vector_store.similarity_search(state["question"])    return {"context": retrieved_docs}
def generate(state: State):    docs_content = "\n\n".join(doc.page_content for doc in state["context"])    messages = prompt.invoke({"question": state["question"], "context": docs_content})    response = llm.invoke(messages)    return {"answer": response.content}
from langgraph.graph import START, StateGraphgraph_builder = StateGraph(State).add_sequence([retrieve, generate])graph_builder.add_edge(START, "retrieve")graph = graph_builder.compile()
    执行问答任务

通过调用 graph.invoke() 发起问题并获取答案:

response = graph.invoke({"question": "What is Task Decomposition?"})print(response["answer"])

六、总结

LangChain 为大语言模型(LLM)应用的开发提供了模块化、可组合的能力支持,覆盖提示管理、记忆机制、工具集成、检索增强、流程编排与评估测试等核心环节。它已成为构建对话机器人、智能客服、搜索问答与 RAG 系统等应用的主流开发框架之一,具备良好的扩展性与工程落地能力。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LangChain 大语言模型 RAG AI应用开发
相关文章