【AI 大模型】LangChain 框架 ① ( LangChain 简介 | LangChain 模块 | LangChain 文档 )

【AI 大模型】LangChain 框架 ① ( LangChain 简介 | LangChain 模块 | LangChain 文档 )

文章目录

在这里插入图片描述




一、LangChain 简介



1、LangChain 概念

LangChain是一款专为 构建基于 大语言模型 ( LLM ) 的 应用程序而 设计的 开源框架 ;

LangChain 可以理解为" 大模型应用 开发工具箱 " , 把 和大模型交互、处理数据、连接外部工具 的各种能力 封装成模块化的组件, 大模型 应用开发者 不用从零开始写所有代码 , 借助 LangChain 开发框架 就能 快速搭建 复杂的 AI 应用 ;

LangChain 提供了预构建 的 代理架构 和 模型集成, 可以快速启动 , 并无缝地 将 LLM 融入 智能体 或 大模型应用程序 , 借助 LangChain 可以使用不到 10 行代码 , 就可以连接并使用 OpenAI、Anthropic、Google 等 大语言模型 ;

下图是 LangChain 开发 Agent 智能体的 架构图 ,

每次 提问 , 都要将 历史对话数据 + 本地 RAG 知识库 的数据 输出到 提示词模板中 , 然后再将 拼接好的 提示词 输入到 LLM 大语言模型中 , 得到最终的 结果 ,

LangChain 就是将上述内容 封装起来, 开发者只需要 提前配置好 大模型 和 RAG 知识库 , 即可使用很少的代码 , 实现上述功能 ;

在这里插入图片描述

2、LangChain 定位

LangChain 框架 的 核心价值 在于打破单个 LLM 的能力边界,原生 LLM ( 大语言模型 ) 只能完成 简单的问答、生成任务, 而 LangChain 通过" 模块化 " 和 " 可组合性 ", 让开发者能够轻松整合 LLM 与 外部数据、工具、知识库, 构建出具备复杂逻辑、上下文感知、多步推理能力的 AI 应用,
如 : 智能客服、代码生成助手、知识库问答系统、自主智能体等 ;

如果把大语言模型 ( LLM , Large Language Model ) 比作汽车的 发动机 , 那么 LangChain 就是完整的 汽车底盘 + 传动系统 + 控制系统 ,LangChain 让 " 发动机 " 能适配不同的 " 车身 " ( 应用场景 ) ,实现更复杂的 " 行驶功能 " ( 业务逻辑 ) ;

3、LangChain 开发语言与应用场景

LangChain 支持Python 和 JavaScript / TypeScript 双语言开发, 生态丰富 ,兼容主流 大语言模型 LLM ( OpenAI、Anthropic、Google Gemini、开源的 Llama/GLM 等 ), 是当前 LLM 应用开发的主流框架之一 ;

LangChain 有如下应用场景 :

  • 知识库问答 ( RAG ) : 企业内部文档问答、产品手册问答、法律条文检索 , 核心是" Indexes + RetrievalQAChain " ;
  • 智能对话机器人 : 多轮上下文对话、个性化推荐 , 核心是" Memory + ConversationChain " ;
  • 自主智能体 ( AI Agent ) : 自动写代码、数据分析、科研辅助 ( 如调用 PubMed API 检索论文 + 总结 ) , 核心是" Agents + Tools " ;
  • 文本生成与摘要 : 长文档总结、多文档对比总结、个性化文案生成 , 核心是" LLMChain + Prompt Templates " ;
  • 代码辅助工具 : 代码解释、bug 修复、自动化测试 , 核心是" Agents + PythonREPL Tool " ;

4、LangChain 核心组件

LangChain 核心组件 : LangChain 框架 有 五大核心组件 分别是 LangChain ( 基础框架 ) 、LangGraph ( 多智能体编排 ) 、Deep Agents ( 智能体外骨骼 ) 、LangSmith ( 监控平台 ) ;

  • LangChain ( 基础框架 ) : 智能体系统 的 " 操作系统内核 " ,提供 统一模型接口 与 模块化开发基础 ;
    • 模型抽象 :统一接口 使用适配集成包连接 OpenAI、Anthropic 等 100 + 模型供应商 , 屏蔽差异 ;
    • 提示词工程 :模板化管理与优化, 提升输出质量 ;
    • 工具集成 :支持 API、数据库、向量存储等 数百种外部服务
    • 记忆管理 : 提供多种记忆策略, 解决 LLM 无状态性
    • 文档地址 :https://docs.langchain.com/oss/python/langchain/overview
  • LangGraph ( 多智能体编排 ) :运行时 编排引擎, 实现复杂状态管理与任务流控制 ;
    • 图结构建模 : 用有向图 表示 智能体系统, 支持条件分支、循环和状态持久化
    • 多智能体协作 : 让多个 Agent 智能体 协同完成复杂任务, 如 : 研究 -> 分析 -> 报告流程 ;
    • 可视化调试 :直观呈现 执行路径, 便于 问题定位 ;
    • 文档地址 :https://docs.langchain.com/oss/python/langgraph/overview
  • Deep Agents ( 智能体外骨骼 ) : 该组件专注长周期复杂任务处理 ;
  • LangServe ( 部署服务 ) : 将智能体转化为生产级 REST/gRPC API 的 部署平台, 支持流式输出、批处理 和 异步调用,兼容 FastAPI 生态便于扩展 ,一键部署 ,自动生成文档 ( Swagger/OpenAPI ) ;
  • LangSmith ( 监控平台 ) : 统一的可观测性与质量评估中心 ;

5、LangChain 学习路径

LangChain 学习路径 :

  • 入门阶段 : 先掌握Models、Prompts、LLMChain三个核心模块 , 实现简单的文本生成、问答 ;
  • 进阶阶段 : 学习Indexes、Memory、RetrievalQAChain, 搭建基础的RAG 知识库问答系统 ;
  • 高阶阶段 : 学习Agents、Tools, 构建具备自主决策能力的 AI Agent ;
  • 工程化阶段 : 结合 LangSmith 调试、LangServe 部署 ,实现生产级应用 ;




二、LangChain 模块


LangChain 框架 的架构遵循" 模块化设计 ", 每个模块解决特定场景的问题, 且模块间可灵活组合 ;

LangChain 框架 的 核心价值是模块化组合"LLM 大语言模型与外部资源" , 解决原生 LLM 大语言模型" 无记忆、无工具、无外部数据 " 的问题 ;

在下面 介绍 的 核心模块中 ,Models 是基础 ,Chains 是核心组合方式 ,Agents 是高阶能力 , Indexes 是 RAG 的关键 ;

1、模型输入 / 输出 ( Models )

模型输入 / 输出 ( Models ) : 是 LangChain 的核心层 ,负责与各类 LLM / 嵌入模型 ( Embedding Model ) 交互 , 不包括如下 子模块 :

  • LLMs :对接 大语言模型 的 基础接口,统一不同厂商 ( OpenAI、Anthropic、百度文心等 ) 的 API 调用方式; 例如 , 用 ChatOpenAI 调用 GPT-4 , 用 ChatAnthropic 调用 Claude , 开发者 无需修改核心逻辑 ,只需要修改配置即可切换模型 ;
  • Chat Models :针对 对话式 LLM ( 如 GPT-3.5/4 Turbo、Claude Chat ) 的专用接口, 支持结构化的对话消息( 用户消息、助手消息、系统消息 ) ;
  • Embeddings : 对接 文本嵌入模型 ( 如 OpenAI Embedding、BERT、智谱 AI 嵌入模型 ), 将 文本 转换为 向量表示 , 是知识库问答、文本检索的基础 ;
  • 参考文档 :https://docs.langchain.com/oss/python/langchain/models

下面是最 LangChain 最基本的 封装 OpenAI 大模型的代码示例 :

from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain_core.messages import HumanMessage, SystemMessage # 1. 初始化对话模型 chat_model = ChatOpenAI( model="gpt-3.5-turbo", api_key="你的OpenAI API密钥", temperature=0.7# 生成随机性 , 0-1之间)# 2. 构造对话消息并调用模型 messages =[ SystemMessage(content="你是一个专业的Python编程助手 , 回答简洁易懂 ; "), HumanMessage(content="请解释什么是装饰器?")] response = chat_model.invoke(messages)print(response.content)# 3. 初始化嵌入模型并生成文本向量 embeddings = OpenAIEmbeddings(api_key="你的OpenAI API密钥") text ="LangChain是LLM应用开发框架" vector = embeddings.embed_query(text)print(f"向量长度 : {len(vector)}")# OpenAI Embedding输出1536维向量

2、提示词模板 ( Prompts )

提示词模板 ( Prompts ) :提示词是 LLM 应用的核心,但 手写 提示词 易出错、难复用; LangChain 的 Prompts 模块提供 如下 功能 :

提示工程 Prompt engineering 参考文档 :https://docs.langchain.com/langsmith/prompt-engineering

3、索引 ( Indexes )

索引 ( Indexes ) : 当 LLM 需要处理 外部文档 ( 如 PDF、Word、知识库 ) 时 , Indexes 模块 负责将文档转换为 " 可检索 " 的格式, 核心流程是 :

  • 加载文档 ( Load ) : 通过DocumentLoaders 加载 PDF、TXT、网页、Excel 等格式的文件 ;
  • 分割文本 ( Split ) :将 长文档 分割为 短文本块( 避免超出 LLM 上下文窗口 ) ;
  • 嵌入文本 ( Embed ) :将 文本块 转换为 向量 ;
  • 存储向量 ( Store ) :将 文本向量 存入 向量数据库( 如 Chroma、Pinecone、Milvus ) ;
  • 检索文本 ( Retrieve ) :根据 用户问题 检索相关 文本块 ;

4、链 ( Chains )

Chains 是 LangChain 的 " 灵魂 “, 该模块 允许将多个 组件 ( LLM、Prompt、检索器等 ) 组合成一个 可执行的流程, 解决” 单步操作无法完成复杂任务 "的问题 ;

常见的 Chain 类型 :

  • LLMChain : 最基础的链 , 将Prompt Template + LLM 组合 , 实现" 输入参数 -> 生成提示词 -> 调用 LLM -> 输出结果 " ;
  • RetrievalQAChain : 检索增强生成 ( RAG ) 的 核心链 ,组合 " 检索器 + LLM " , 实现" 用户提问 -> 检索相关文档 -> 将文档和问题传入 LLM -> 生成基于文档的回答 " ;
  • SequentialChain :串行链 , 将多个 Chain 按顺序执行, 前一个 Chain 的输出作为后一个的输入 ;

5、记忆 ( Memory )

记忆 ( Memory ) : 原生 LLM 没有 " 记忆 " ,无法记住 多轮对话 的 上下文; Memory 模块解决这个问题 , 核心 模块 类型如下 :

  • ConversationBufferMemory :简单 缓存 所有对话历史 ;
  • ConversationSummaryMemory :对 对话历史 进行总结, 避免上下文过长 ;
  • ConversationTokenBufferMemory :按 Token 数 限制 缓存对话历史, 适配 LLM 的上下文窗口 ;

参考文档 :https://docs.langchain.com/oss/python/concepts/memory

6、代理 ( Agents )

代理 ( Agents ) : Agents 是 LangChain 的高阶能力 ,让 LLM 大语言模型 能 " 自主决策 ", 根据用户问题 , 选择调用哪些工具 ( 如 : 计算器、搜索引擎、代码解释器 ) , 完成多步推理任务 ;

  • Agent : 决策核心 , 负责判断 " 该调用哪个工具 "" 是否需要继续调用工具 " ;
  • Tool : 工具接口 ,LangChain 内置多种工具 ( Calculator、SerpAPI ( 搜索引擎 ) 、PythonREPL ( 代码执行 ) ) , 也支持自定义工具 ;
  • Executor : 执行器 , 负责执行 Agent 的决策 ,调用 工具并返回结果 ;

参考文档 :https://docs.langchain.com/oss/python/langchain/agents

7、 工具 ( Tools )

工具 ( Tools ) : 该模块是 Agents 的基础 ,提供 与 外部系统 交互 的接口; LangChain 内置工具包括 :

  • 计算类 : Calculator、PythonREPL ;
  • 检索类 : SerpAPI ( 谷歌搜索 ) 、DuckDuckGoSearch ;
  • 文件类 : FileBrowser、CSVLoader ;
  • API 类 : RequestsTool ( 调用 HTTP 接口 ) ;

开发者也可通过Tool类自定义工具 , 只需实现 func ( 工具逻辑 ) 和description ( 工具描述 , 供 Agent 判断是否调用 ) ;

参考文档 :https://docs.langchain.com/oss/python/langchain/agents

8、 文档加载器 ( Document Loaders )

负责加载外部文档 ,支持几乎所有主流格式 :

  • 文本类 : TXT、Markdown、JSON ;
  • 办公类 : PDF、Word、Excel、PPT ;
  • 网页类 : URL、HTML、Sitemap ;
  • 数据库类 : MySQL、PostgreSQL、MongoDB ;
  • 其他 : Notion、Confluence、GitHub ;

文档加载 参考文档 :https://docs.langchain.com/oss/python/langchain/knowledge-base#1-documents-and-document-loaders

适配 第三方 文档加载 模型 集成包 参考文档 :https://docs.langchain.com/oss/javascript/integrations/providers/all_providers#file-loaders

9、评估 ( Evaluation )

LLM 应用的效果难以量化 , Evaluation 模块提供评估工具 , 支持 :

  • 手动评估 : 人工打分 ;
  • 自动评估 : 用 LLM 自身评估回答质量 ;
  • 基准测试 : 对比不同模型 / 链的效果 ;

langsmith 评估 参考文档 :https://docs.langchain.com/langsmith/evaluation-quickstart#evaluation-quickstart

langsmith 部署 参考文档 :https://docs.langchain.com/langsmith/deployments




三、LangChain 文档



1、LangChain 功能模块文档

LangChain 功能模块文档 :https://docs.langchain.com/oss/python/langchain/overview , 该文档是LangChain 框架Python 语言的 总览文档 ,左侧章节标题可以跳转到

等文档 ;

在这里插入图片描述

2、LangChain API 参考文档

LangChain API 参考文档 : 这是 LangChain 开发具体对应的的 Python / JavaScript / TypeScript 语言对应的 API 文档 , 主要介绍LangChain 和 LangGraph 构建 大模型应用程序用到的 核心接口 ,每个部分涵盖 LangChain 生态系统中的不同方面 ,使用 顶部 或 左侧 的 导航栏 查看 LangChain 特定模块 的文档 ;

JavaScript / TypeScript 语言 API 文档 :https://reference.langchain.com/javascript/index.html

在这里插入图片描述

下面是 LangChain 框架的 Agents 开发文档 :https://reference.langchain.com/python/langchain/agents/

在这里插入图片描述

3、LangChain 适配第三方模型集成包

LangChain 框架提供了 丰富的适配第三方模型的集成包, 涉及到大语言模型 ( LLMs ) 、聊天模型、检索器、向量数据库、文档加载器 等多个类型的 AI 模型 ;

集成包 指的是 LangChain Python 生态中专门对接不同 AI 模型服务商的 程序模块, 其核心作用是让 开发者不用自己写复杂的 API 调用、参数适配代码, 只需几行简单代码就能在 LangChain 框架 中调用 对应服务商 的 大语言模型 ( LLMs ) 、聊天模型 ( Chat Models ) 等能力 ;

LangChain 框架 集成包 文档 :https://docs.langchain.com/oss/python/integrations/providers/overview

在这里插入图片描述



下面给出一个 集成包示例 ,langchain-openai 集成包是 LangChain 官方提供的、专门对接适配 OpenAI 生态 ( 包括 OpenAI 官方、Azure OpenAI ) 的 集成包 ;

  • 快速调用 OpenAI 的 GPT-3.5/4/4o 等聊天模型、Embedding 嵌入模型 ;
  • 封装了 OpenAI API 的参数 ( 如温度、最大令牌数、上下文窗口 ) , 适配 LangChain 的统一接口 ;
  • 支持流式输出、函数调用 ( Function Calling ) 等 OpenAI 核心特性, 无需手动处理 API 交互细节 ;

langchain-openai 集成包 文档地址 :https://reference.langchain.com/python/integrations/langchain_openai/

在这里插入图片描述

langchain-google-vertexai 集成包是 LangChain 官方适配对接 Google Cloud Vertex AI 平台的集成包( Vertex AI 是 Google 云的一站式 AI 开发平台 ) ; 文档地址 :https://reference.langchain.com/python/integrations/langchain_google_vertexai/

langchain-ollama 集成包是 LangChain 官方 适配对接 Ollama 工具的集成包 ( Ollama 是一款轻量级本地大模型运行工具 , 可一键部署 Llama 3、Phi 3、Mistral 等开源模型 ), 文档地址 :https://reference.langchain.com/python/integrations/langchain_ollama/

4、LangChain 教程指南

LangChain 教程指南文档 :https://docs.langchain.com/oss/python/learn , 在该文档中提供了 一系列教程、概念概述及补充资源 , 借助 LangChain 和 LangGraph 构建 功能强大 的 大模型应用程序 ;

在这里插入图片描述

Read more

Local Moondream2实战案例:独立开发者用其构建AI绘画灵感助手App

Local Moondream2实战案例:独立开发者用其构建AI绘画灵感助手App 你有没有遇到过这样的创作瓶颈?脑子里有个模糊的画面,却怎么也找不到合适的词语来描述它,AI绘画工具生成的图片总是差那么点意思。或者,在网上看到一张惊艳的图片,想学习它的构图和风格,却不知从何分析起。 对于独立开发者或小型创意团队来说,聘请专业的设计师或购买昂贵的创意工具往往成本高昂。今天,我要分享一个实战案例:如何利用一个名为 Local Moondream2 的超轻量级工具,快速构建一个完全运行在你个人电脑上的“AI绘画灵感助手”,彻底解决上述痛点。 1. 为什么选择Local Moondream2? 在开始动手之前,我们先搞清楚这个工具到底能做什么,以及它为何适合独立开发者。 简单来说,Local Moondream2 是一个给你的电脑装上“眼睛”的本地化应用。你上传任何图片,它都能“看懂”,并用英文告诉你图片里有什么。它的核心能力有三项,每一项都对创意工作者极具价值: * 详细描述图片:它能生成一段极其详尽的英文描述,远超简单的“一只猫在沙发上”。这段描述可以直接用作AI绘画(如S

芯片制造行业如何通过WebUploader+PHP加密传输工程文件的分片数据?

《一个码农的奇幻外包漂流记》 需求分析会:当甲方爸爸说出"简单"二字时… 各位老铁们好!我是辽宁沈阳一名"资深"前端码农(资深=头发少)。刚接到个外包需求,看完后我直接表演了个东北式懵逼: 甲方需求翻译大赛: * “要支持20G文件” → “希望你电脑硬盘够大” * “兼容IE9” → “希望你心态够好” * “1000+文件的文件夹结构” → “希望你记忆力超群” * “预算100元含3年维护” → “希望你家里有矿” * “7×24小时支持” → “希望你不需要睡觉” 技术选型:穷且益坚版解决方案 前端部分(Vue3+原生JS缝合怪版) // 文件夹上传器(贫困版)classDiaoSiFolderUploader{constructor(){this.chunkSize =5*1024*1024;// 5MB一片this.maxTry =99;// 最大重试次数(因为甲方网络是2G)this.

(附源码)基于Java web的在线考试系统的设计与实现-计算机毕设 33482

(附源码)基于Java web的在线考试系统的设计与实现-计算机毕设 33482

基于Java web的在线考试系统的设计与实现 摘  要 随着信息技术的迅速发展,教育行业对在线考试系统的需求不断增加,尤其是在数字化转型的背景下,传统的人工考试管理方式逐渐暴露出诸多问题,如效率低、资源浪费、信息滞后等。为了提升考试管理的效率和学生的学习体验,在线考试系统的开发显得尤为重要。 该系统的功能设计主要包括:学生在线报名、考试、成绩查询、错题管理等功能;教师可以发布、编辑试卷、批改作业、查看成绩分析等;管理员负责系统用户管理、考试资源调度、公告发布等。系统通过清晰的角色分配,确保各类用户能够高效使用系统,实现学习、教学和管理的数字化与智能化。 技术方案上,系统前端采用Vue.js框架构建,实现与用户的良好交互;后端使用SpringBoot框架,结合Java语言进行业务逻辑处理,确保系统的高性能和可扩展性;MySQL数据库用于存储用户数据、考试成绩、题库信息等,保障数据的高效管理和查询性能。 通过在线考试系统的实施能够大幅提升考试管理效率,减少人工干预,优化资源分配,增强学生的参与感和互动体验。该系统不仅能帮助教育机构实现信息化管理,还能为学生和教师提供便捷

微信小程序webview postmessage通信指南

微信小程序webview postmessage通信指南

需求概述 在微信小程序中使用 web-view 组件与内嵌网页进行双向通信,主要通过 postMessage 实现。以下是完整的配置和使用方法: 通信指南 微信小程序webview官方文档 1. 基础配置 小程序端配置 // app.json 或 page.json { "usingComponents": {}, "permission": { "scope.webView": { "desc": "用于网页和小程序通信" } } } 网页端配置 <!-- 内嵌网页需引入微信JS-SDK --> <script src="https://res.wx.qq.com/open/