[智能体-118]:LangChain 核心组件、功能与 API 详解

发布时间:2026/5/28 4:24:10

[智能体-118]:LangChain 核心组件、功能与 API 详解 基于 LangChain 最新架构langchain-core 生态拆分按基础核心组件、对话记忆、检索 RAG、工具 Agent、流程编排、辅助生态六大类划分逐一说明组件作用、常用类、核心 API 与代码示例兼顾原理与落地用法。前置说明包结构LangChain 已模块化拆分核心能力在langchain_core模型 / 集成在langchain-*系列包统一范式绝大多数组件实现Runnable 协议支持invoke()/stream()/batch()、管道符|组合环境依赖pip install langchain langchain-openai langchain-community langchain-chroma一、基础核心组件框架底座1. Models 模型层负责对接各类大模型、嵌入模型分为LLM、ChatModel、Embeddings三大类是所有应用的基础。1.1 LLM 纯文本模型功能输入纯文本、输出纯文本适配传统文本生成模型。常用类langchain_openai.OpenAI、各类开源模型封装类核心 APIinvoke(input: str) - str同步调用返回完整文本stream(input: str)流式逐段输出batch(inputs: List[str]) - List[str]批量调用示例python运行from langchain_openai import OpenAI llm OpenAI(modelgpt-3.5-turbo-instruct, temperature0) # 同步调用 res llm.invoke(简单介绍 LangChain) print(res) # 流式调用 for chunk in llm.stream(简单介绍 LangChain): print(chunk, end)1.2 ChatModel 对话模型主流功能结构化消息交互system/user/assistant适配聊天类大模型支持多轮对话格式。常用类langchain_openai.ChatOpenAI核心数据结构消息对象SystemMessage系统人设 / 指令HumanMessage用户消息AIMessage模型回复核心 API同 Runnable 标准方法入参为消息列表示例python运行from langchain_openai import ChatOpenAI from langchain_core.messages import SystemMessage, HumanMessage chat ChatOpenAI(modelgpt-3.5-turbo, temperature0) messages [ SystemMessage(content你是技术讲解助手), HumanMessage(content什么是 ChatModel) ] res chat.invoke(messages) print(res.content)1.3 Embeddings 嵌入模型功能将文本转为向量用于相似度计算、检索、RAG 场景。常用类OpenAIEmbeddings、DashScopeEmbeddings等核心 APIembed_query(text: str) - List[float]单条文本向量化embed_documents(texts: List[str]) - List[List[float]]批量文档向量化示例python运行from langchain_openai import OpenAIEmbeddings embeddings OpenAIEmbeddings() vec embeddings.embed_query(AI Agent 介绍) print(len(vec)) # 输出向量维度2. Prompt 提示词模板统一管理提示词支持变量渲染、消息模板、少样本示例解耦提示词与业务代码。2.1 StringPromptTemplate 文本模板功能纯文本模板支持占位符{var}动态填充内容。核心 APIformat(**kwargs) - str传入变量渲染为完整提示词2.2 ChatPromptTemplate 对话消息模板最常用功能适配 ChatModel批量构建结构化消息列表。核心 APIfrom_messages()快速构造模板format_messages(** kwargs)渲染并返回消息列表完整示例python运行from langchain_core.prompts import ChatPromptTemplate # 定义模板 prompt ChatPromptTemplate.from_messages([ (system, 你是专业客服根据 {context} 回答用户问题), (human, 用户问题{question}) ]) # 渲染变量 input_data {context: LangChain 是大模型开发框架, question: LangChain 是什么} prompt_msg prompt.format_messages(**input_data) print(prompt_msg)2.3 FewShotPromptTemplate 少样本模板功能内置问答示例引导模型输出格式 / 逻辑提升稳定性。3. Output Parsers 输出解析器功能解析模型返回的文本转为结构化数据JSON、列表、对象解决模型输出格式不统一问题。常用组件 API3.1 StrOutputParser 字符串解析器最基础解析器直接提取文本内容管道组合标配。python运行from langchain_core.output_parsers import StrOutputParser parser StrOutputParser() # 链式组合模板 | 模型 | 解析器 chain prompt | ChatOpenAI() | parser res chain.invoke(input_data)3.2 JsonOutputParser JSON 解析器强制模型输出 JSON自动解析为字典。3.3 PydanticOutputParser 实体解析器结合 Pydantic 模型强类型校验输出结构企业级结构化输出首选。二、Memory 记忆组件多轮对话核心大模型无状态Memory 组件自动管理对话历史拼接上下文到提示词中实现 “记忆” 效果。所有 Memory 统一接口load_memory_variables()/save_context()1. ConversationBufferMemory 完整缓存记忆功能全量保存所有对话轮次不做压缩。适用短对话、轮次少场景核心 APIsave_context(inputs, outputs)保存一轮问答load_memory_variables({})读取历史对话示例python运行from langchain.memory import ConversationBufferMemory memory ConversationBufferMemory() # 保存对话 memory.save_context({input: 你好}, {output: 你好有什么可以帮你}) # 读取历史 print(memory.load_memory_variables({})[history])2. ConversationSummaryMemory 摘要记忆功能定期调用 LLM 把长对话压缩为摘要大幅减少 Token 占用。适用长时多轮对话、上下文窗口较小的模型。3. ConversationBufferWindowMemory 滑动窗口记忆功能只保留最近 N 轮对话丢弃早期内容防止上下文溢出。构造参数k保留轮数。4. VectorStoreRetrieverMemory 向量库长期记忆功能对话内容向量化存入向量库按语义检索历史突破窗口限制实现跨会话长期记忆。适用个人专属助手、历史会话回溯。三、Chain 链组件流程编排基础Chain 是 LangChain 最基础的流程组合单元将 提示词、模型、解析器、工具串联为完整业务流程。新版优先使用Runnable 管道|替代传统 Chain 类写法更简洁。1. LLMChain 基础问答链功能组合Prompt LLM/ChatModel最基础执行链路。传统写法python运行from langchain.chains import LLMChain chain LLMChain(llmChatOpenAI(), promptprompt) res chain.run(questionLangChain 用途)现代管道写法推荐python运行chain prompt | ChatOpenAI() | StrOutputParser() res chain.invoke({question: LangChain 用途})2. RetrievalQA 检索问答链RAG 核心功能结合「检索器 LLM」实现私有文档问答RAG 场景标配。核心参数retriever检索器从向量库召回文档chain_type文档拼接策略stuff/map_reduce/refineRAG 最简示例python运行from langchain.chains import RetrievalQA from langchain_chroma import Chroma # 假设已有向量库与检索器 vector_db Chroma(embedding_functionembeddings) retriever vector_db.as_retriever(search_kwargs{k: 3}) qa_chain RetrievalQA.from_chain_type( llmChatOpenAI(), chain_typestuff, retrieverretriever, return_source_documentsTrue # 返回引用文档 ) res qa_chain.invoke({query: 文档中提到了什么})3. ConversationChain 对话链功能内置 Memory快速实现带记忆的多轮对话机器人。4. 其他常用 ChainSequentialChain串行执行多个子链多步骤流水线任务RouterChain路由链根据输入分发到不同子链实现分支逻辑四、Document Loaders Text SplittersRAG 数据预处理属于 RAG 前置链路负责加载文档 文本切分。1. Document Loaders 文档加载器功能读取各类文件 / 数据源统一转为Document对象page_content正文 metadata元数据。常用加载器TextLoader纯文本文件PyPDFLoaderPDF 文档WebBaseLoader网页内容CSVLoader表格文件示例python运行from langchain_community.document_loaders import PyPDFLoader loader PyPDFLoader(test.pdf) docs loader.load() # 加载全部页面2. Text Splitters 文本分割器功能将长文档切分为小块适配模型上下文长度提升检索精度。常用组件RecursiveCharacterTextSplitter递归字符分割通用首选参数chunk_size块大小、chunk_overlap块重叠长度CharacterTextSplitter简单字符分割示例python运行from langchain.text_splitter import RecursiveCharacterTextSplitter splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) split_docs splitter.split_documents(docs)五、Vector Stores 向量数据库功能存储文本向量 原始文档提供相似度检索RAG 核心存储层。主流封装 APIChroma轻量本地向量库无需额外部署测试 / 小型应用首选FAISSFacebook 高效向量检索库速度快Milvus/Elasticsearch分布式企业级向量库核心通用 APIfrom_documents(docs, embeddings)从文档构建向量库as_retriever()转为检索器对接 RetrievalQAsimilarity_search(query, k)相似度检索返回 Top-k 文档python运行from langchain_chroma import Chroma # 构建向量库 vectordb Chroma.from_documents(documentssplit_docs, embeddingembeddings) # 相似度查询 search_docs vectordb.similarity_search(关键词, k2)六、Tools Agent 工具与智能体AI Agent 核心实现模型决策 外部工具执行让大模型从 “问答” 走向 “做事”。1. Tools 工具组件功能封装外部能力搜索、计算器、API、数据库、硬件接口等统一格式供 Agent 调用。内置常用工具TavilySearchResults联网搜索Calculator数学计算PythonREPL代码执行器自定义工具使用tool装饰器快速封装自定义函数。自定义工具示例python运行from langchain.tools import tool tool(加法计算器) def add_tool(a: int, b: int) - int: 计算两个数字相加入参为两个整数 return a b2. Agent 智能体功能基于 LLM 做决策自动选择、调用工具循环执行直到任务完成。主流 Agent 类型create_openai_tools_agent适配 OpenAI Function Calling工业界最稳定create_react_agentReAct 架构 Agent开源模型通用核心 APIAgentExecutorAgent 执行器调度整个工具调用闭环.invoke()接收用户问题自动完成决策 工具调用Agent 完整示例python运行from langchain_openai import ChatOpenAI from langchain.agents import AgentExecutor, create_openai_tools_agent from langchain_core.prompts import ChatPromptTemplate llm ChatOpenAI(modelgpt-3.5-turbo) tools [add_tool] # 加载工具 # 构造提示词 prompt ChatPromptTemplate.from_messages([ (system, 你可以使用工具完成计算任务), (user, {input}), (placeholder, {agent_scratchpad}) ]) # 创建 Agent 执行器 agent create_openai_tools_agent(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue) # 执行任务 res agent_executor.invoke({input: 计算 12 34}) print(res[output])七、高级编排组件1. LangGraph定位基于图结构的复杂工作流编排弥补传统 Chain 无法实现循环、分支、状态持久化的短板。核心能力状态管理、条件分支、循环执行、多智能体协作用于复杂长流程 Agent。核心概念State状态、Node节点、Edge连线、条件路由。2. Callbacks 回调组件功能监听全链路执行事件模型调用、工具调用、链路起止用于日志、监控、耗时统计、告警。适用场景生产环境可观测、自定义埋点。八、生态配套组件运维 / 部署 / 调试LangSmith功能全链路调试、追踪、评估 LLM 应用查看每一步 Prompt、模型输出、工具调用日志。LangServe功能将 Chain/Agent 快速发布为 REST API支持流式、批量调用对外提供服务。LangFlow功能可视化拖拽界面零代码 / 低代码搭建流程适合快速原型、业务人员使用。九、组件整体协作全景串联前文知识以「带记忆 RAG 工具 Agent」完整链路总结DocumentLoader TextSplitter加载并切分文档Embeddings VectorStore文档向量化入库构建检索库Prompt ChatModel Parser基础问答链路Memory接管多轮对话上下文RetrievalQA Chain实现私有文档问答Tools Agent扩展外部工具能力实现自主任务执行LangGraph编排复杂分支 / 循环流程LangSmith LangServe线上调试与服务部署十、快速选型参考表格业务场景推荐核心组件组合简单单轮问答Prompt ChatModel StrOutputParser多轮聊天机器人ConversationChain ConversationBufferMemory私有知识库问答 (RAG)Loader Splitter Embedding VectorStore RetrievalQA工具调用 / 自动化任务Tools AgentExecutor复杂流程 / 多分支 AgentLangGraph Agent State

相关新闻