LangChain框架

LangChain 是一个专为开发大语言模型(LLMs)应用而设计的框架。

该框架提供了一套完整的工具链和组件接口,使开发者能够便捷地将大语言模型集成到多样化应用场景中,包括但不限于智能客服、文档分析系统和信息检索平台等。

借助 LangChain,开发者可以高效处理大语言模型交互中的核心环节,包括提示工程、模型调用和结果解析等,显著提升开发效率。以智能客服系统为例,通过 LangChain 可以快速建立与大语言模型的交互通道,实现精准理解用户需求并生成恰当回复的功能

LangChain架构

LangChain 是一个由多个包组成的框架。以下是LangChain技术体系的核心构成示意图:

安装LangChain核心库

首先我们先安装langchain:

pip install langchain

LangChain包结构组成

如图所示,langchain 整个框架由多个部分组成,主要包括:​

  • langchain-core:  提供基础抽象和核心接口,是系统模块设计的根基,包括聊天模型(chat models)、工具(tools)、向量存储(vector stores)、链(chains)等接口。同时还包含表达式语言(LangChain Expression Language, LCEL);它会被langchain包自动安装,也可作为独立组件使用  。​

  • langchain:  基于 langchain-core 抽象之上,提供高级组件,如链(chains)、代理(agents)、检索策略(retrieval strategies)等,用于构建通用的认知架构,不依赖特定集成。该包依赖 langchain-core,但目前正在逐步去除对 langchain-community 的直接依赖(如 v0.4 后) ​

  • 集成类包(Integrationpackages):  为不同模型提供商提供轻量级连接器,如 langchain-openai、langchain-anthropic 等;在接入不同类型模型供应商的时候,需要`pip install langchain-xxx` 不同类型供应商的连接器。​

  • langchain-experimental:  用于研究或试验性质的新功能包,内容较新且可能不稳定 。​

  • langgraph:  设计用于构建带状态、多参与者(multi-actor)的复杂代理(agents)系统。通过图结构(nodes、edges)表示流程,适合复杂工作流的构建 。​

  • langserve:  用于将 LangChain 的链(chains)、代理(agents)或 Runnable 部署为 REST API 服务。​

  • langchain-cli:  提供命令行工具(CLI),用于操作模板、部署 LangServe 项目等 。​

  • langsmith-SDK:  提供一个可用于调试、监控、评估 LLM 应用性能的平台。默认随 langchain 安装,也可以独立安装使用 。

langchain⟶主包​
2├─ langchain-core⟶基础抽象与接口,LCEL​
3├─ langchain⟶高级组件:chains, agents, retrieval 泛型逻辑​
4├─ langchain-openai 等⟶官方集成包(独立依赖 langchain-core)​
5├─ langchain-community⟶社区整合的第三方工具、模型等​
6├─ langchain-experimental⟶实验特性​
7├─ langgraph⟶图结构的多代理工作流编排​
8├─ langserve⟶部署工具,将组件暴露为 REST API​
9├─ langchain-cli⟶命令行工具支持开发与部署​
10└─ langsmith SDK⟶监控、评估、调试平台(可独立使用)

“执行pip install langchain后,会自动安装langchainlangchain-corelangsmith-sdk。其中,langchain-core提供基础框架功能,langsmith-sdk用于模型监控和调试。然而,仅安装LangChain的核心包是不够的,因为依赖基础功能无法实现完整的LLM应用,因此需要额外安装大模型提供商的支持,例如OpenAI的openai包或Hugging Face的transformers。”

接入大模型供应商

不同大模型供应商在LangChain的集成包中提供了轻量级连接器。理论上,接入不同供应商时需要安装对应的库。例如,接入DeepSeek就需要安装特定的依赖库

pip install langchain-deepseek

面对不同大模型时的兼容性问题原本相当复杂,但随着OpenAI的ChatGPT API(/v1/chat/completions)成为行业事实标准,包括DeepSeek、Moonshot、智谱GLM、百度文心和通义千问在内的众多大模型厂商都开始提供与之完全兼容的接口。

这意味着:​

  • 开发者只需写一套基于 OpenAIAPI规范   的代码。​
  • 在接入不同模型时,仅需切换 base_url   和 api_key   配置。​
  • 不必为每个模型厂商单独安装或维护 langchain-xxx 集成包。​

因此,在大部分场景下,其实我们只需要执行:

pip install langchain-openai

就可以兼容大部分场景

搭建第一个ChatBot

基于 LangChain 的核心框架和 OpenAI 的大模型能力,现在我们可以着手开发第一个 ChatBot 了。首先需要初始化一个 ChatModel,但在编码前需配置必要的环境变量来存储敏感数据,包括:

  • 大模型 API 密钥
  • 模型配置参数
  • 基础 URL 等信息

请在新建的单元格中执行以下命令(请将 apikey、baseurl 和 model 参数替换为您自己的实际值):

import os​

os.environ["OPENAI_API_KEY"] = "your_api_key_here"​
os.environ["OPENAI_BASE_URL"] = "https://api.deepseek.com/v1"​
os.environ["OPENAI_MODEL"] = "deepseek-chat"

第一步,初始化第一个ChatModel:

from langchain_openai import ChatOpenAI​
或者
from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI(​
    model=os.getenv("OPENAI_MODEL", "gpt-4o-mini"),​
    api_key=os.getenv("OPENAI_API_KEY"),​
    base_url=os.getenv("OPENAI_BASE_URL"),  # 若走原生 OpenAI,可传 None/不传​
    temperature=0.2,                        # 稳定输出​
    timeout=30,                             # 超时保护(秒)​
    max_retries=2                           # 简单重试​
)

参数说明:

  • model:指定模型名称(如 gpt-4o-mini、deepseek-chat)
  • api_key:API 认证密钥
  • base_url:兼容 OpenAI API 的第三方模型需指定此地址,否则默认使用官方地址
  • temperature:控制输出随机性(值越低越稳定,越高越有创造性)
  • timeout/max_retries:网络容错配置,增强程序稳定性

ChatOpenAI有两种导入方式:from langchain.chat_models import ChatOpenAIfrom langchain_openai import ChatOpenAI。这两种方式在性能表现上基本没有差异,主要区别在于库版本更新和代码维护方面,不会影响实际运行效率。

具体分析:

  1. 本质是同一功能的不同路径langchain_openai 是 LangChain 官方拆分出的独立子库(用于集中维护与 OpenAI 相关的集成),而早期版本的 LangChain 会将 ChatOpenAI 放在 langchain.chat_models 中(通过内部导入关联到 langchain_openai)。两者最终指向的是同一个类的实现,因此导入后初始化实例、调用模型等操作的性能完全一致,不会有速度或资源占用的差异。

  2. 性能差异的来源不在这里与 OpenAI 模型交互的性能瓶颈主要在于:

    • 网络请求(API 调用的 latency)
    • 模型本身的响应速度(如 gpt-4 比 gpt-3.5-turbo 慢)
    • 本地数据处理逻辑(如 prompt 构建、结果解析)这些都与导入方式无关。
  3. 更推荐的方式从 LangChain v0.1 版本开始,官方推荐使用独立子库(如 langchain_openai)导入,因为:

    • 主库 langchain 逐渐轻量化,将第三方集成拆分到独立子库中,减少冗余依赖。
    • 子库的更新迭代更灵活,兼容性更好。因此,from langchain_openai import ChatOpenAI 是更符合当前最佳实践的写法。

综上,选择哪种导入方式主要看项目依赖的 LangChain 版本和代码规范,无需担心性能差异。

第二步,发起对话:

response = llm.invoke("你好")
print(response)

可以看到,AI 给出了他的回答;我们这里就使用的是 langchain 第一个核心方法invoke​ 

invoke 是 LangChain 的标准调用接口,几乎所有组件(模型、链、工具)都支持。​
它的特点是:​

  • 同步调用  :输入一次,得到一次完整的输出。​
  • 输入形式灵活  :既可以直接传字符串,也可以传字典(和 Prompt 模板配合)。​
  • 返回对象  :不是纯文本,而是一个 AIMessage,其中 .content 才是回答内容。​

他不光可以接受一个纯文本,也可以接受一个大模型支持的 Message 类型,比如:

from langchain_core.messages import SystemMessage,HumanMessage

response = llm.invoke(
    [
        SystemMessage(content = "你是一中英文个翻译助手"),
        HumanMessage(content = "翻译一下'你好'")
    ]
)
print(response)

这样一个初步的基于LangChain的ChatBot就完成了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐