参考:
1.LangChain vs LangGraph vs Deep Agents技术对比详解
2.LangChain 核心抽象类 BaseLLM 详解
3.springboot集成langchain4j接入open AI和deepseek
4.LangChain中的向量数据库抽象基类-VectorStore
5.langchain runnables 概念指南
6.无限可能LangChain------概念指南之架构
LangChain 作为智能体框架(Agent Framework),其核心价值在于提供抽象(Abstractions)与集成(Integrations)。这两个概念是 LangChain 能够简化大模型应用开发、实现"快速上手"的关键。下面将分别详细阐述其具体所指,并结合实例进行说明。
一、抽象(Abstractions)
"抽象"指的是 LangChain 将复杂、多变的大模型应用开发模式,提炼成一系列标准化、可复用的接口和组件。它屏蔽了底层实现的复杂性,为开发者提供了统一的编程模型。其主要抽象包括:
1. 模型 I/O 抽象
这是最基础的抽象层,旨在统一不同大语言模型(LLM)和聊天模型(ChatModel)的调用方式。
-
BaseLLM/BaseChatModel:所有文本生成模型和聊天模型的基类。它们定义了如invoke、stream、batch等标准调用方法,无论底层是 OpenAI、Anthropic 还是本地部署的模型,对开发者而言调用方式都是一致的。这解决了不同供应商 API 差异大的问题。 -
PromptTemplate:提示词模板抽象。允许开发者将用户输入、上下文等信息动态地填充到预定义的提示词结构中,而无需手动拼接字符串。 -
OutputParser:输出解析器抽象。用于将模型返回的非结构化文本,解析成结构化的数据(如 JSON、Pydantic 对象),方便后续程序处理。
示例:使用统一接口调用不同模型
from langchain.chat_models import init_chat_model
# 抽象层使得切换模型提供商只需更改参数,无需重写调用逻辑
openai_llm = init_chat_model(model="gpt-4", model_provider="openai", api_key="sk-...")
anthropic_llm = init_chat_model(model="claude-3-sonnet", model_provider="anthropic", api_key="sk-...")
deepseek_llm = init_chat_model(model="deepseek-chat", model_provider="deepseek", api_key="sk-...") # [ref_1]
# 统一的调用方式
response = openai_llm.invoke("Hello, world!")
2. Runnable 协议
这是 LangChain 最核心的架构抽象,在 langchain-core 包中定义。Runnable 接口为链(Chain)、工具(Tool)、模型(Model)甚至整个智能体(Agent)提供了统一的调用规范。
-
价值 :任何实现了
Runnable接口的对象,都可以用相同的方式(invoke,stream,batch)进行调用、组合和流式处理。这极大地增强了组件的可组合性。 -
LCEL(LangChain Expression Language) :基于
Runnable构建的声明式组合语法,允许开发者像搭积木一样将多个Runnable组件连接成复杂的处理流程。
示例:使用 Runnable 和 LCEL 构建处理链
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt = ChatPromptTemplate.from_template("请将以下内容翻译成{language}: {text}")
model = init_chat_model(model="gpt-4")
parser = StrOutputParser()
# 使用 LCEL 将多个 Runnable 组件组合成一个链
chain = prompt | model | parser # 符号 `|` 代表"接着执行"
result = chain.invoke({"language": "法语", "text": "你好,世界"})
print(result) # 输出: Bonjour, le monde
# 此链抽象了提示词构建、模型调用和结果解析的完整流程 [ref_5]
3. 智能体与工具抽象
这是构建自主决策应用的关键抽象。
-
Agent:智能体抽象。它封装了"思考-行动-观察"的循环逻辑。在 LangChain 1.0 中,核心是create_agent函数,它接受模型、工具和系统提示词,返回一个可执行的智能体(其底层是一个 LangGraph 状态图)。 -
Tool:工具抽象。通过@tool装饰器,可以将任何一个 Python 函数转化为智能体能够理解和调用的工具。智能体会根据工具的描述自动决定在何时、以何种参数调用它。
示例:创建具有工具调用能力的智能体
from langchain.agents import create_agent
from langchain_core.tools import tool
@tool
def get_current_temperature(city: str) -> str:
"""获取指定城市的当前温度。"""
# 这里可以连接真实的天气API
return f"{city}的温度是22摄氏度。"
agent = create_agent(
model=llm,
tools=[get_current_temperature], # 工具被抽象为智能体可用的"技能"
system_prompt="你是一个天气助手,可以查询温度。",
)
# 智能体抽象了何时调用工具、如何解析模型输出以选择工具的复杂逻辑 [ref_1]
4. 记忆(Memory)抽象
用于管理智能体与用户对话的历史上下文,包括对话缓冲区、摘要记忆、向量存储记忆等多种模式,提供了统一的读写接口。
5. 检索器(Retriever)与向量存储(VectorStore)抽象
-
VectorStore:向量数据库的抽象基类。它定义了如add_texts、similarity_search等标准方法,使得 LangChain 可以对接 Chroma、Pinecone、Weaviate 等多种向量数据库,而业务代码无需改动。 -
Retriever:检索器抽象。它是一个返回与查询相关文档的接口,其背后可以是基于向量存储的检索,也可以是关键词检索或其他算法。
二、集成(Integrations)
"集成"指的是 LangChain 与外部丰富的生态系统进行连接的能力。它预置了与数百种第三方服务、API、数据库和工具的连接器,让开发者可以"开箱即用"。
1. 大模型提供商集成
这是最核心的集成。LangChain 集成了几乎所有主流和新兴的 LLM 服务,包括:
-
云服务:OpenAI, Anthropic (Claude), Google (Gemini), Cohere, DeepSeek, 百度文心一言,阿里通义千问等。
-
开源模型 :通过
ollama,vllm,huggingface等集成本地或自托管模型。 -
统一方式 :无论集成谁,都通过类似
init_chat_model的标准化接口调用,只需更换model_provider和model参数。
2. 工具与API集成
LangChain-community 包集成了海量的现成工具,涵盖搜索、计算、代码执行、文件操作等各个方面。例如:
-
搜索引擎:SerpAPI, Google Search, DuckDuckGo。
-
代码执行:Python REPL, Bash。
-
办公软件:Google Drive, Notion, Slack。
-
数据工具:SQL 数据库, Pandas DataFrame。
3. 向量数据库与检索系统集成
如前所述,通过 VectorStore 抽象,集成了 Chroma, Pinecone, Weaviate, Qdrant, Milvus, Elasticsearch 等数十种向量数据库和检索系统。
4. 其他中间件与基础设施集成
-
LangServe:用于将任何 LangChain 链或智能体快速部署为 REST API 的服务。 -
LangSmith:集成 LangChain 官方的调试、监控、测试和评估平台,帮助开发者追踪调用链、分析性能和质量。 -
LangGraph:深度集成其作为底层的智能体运行时,为复杂、有状态的工作流提供持久化执行能力。
总结:抽象与集成的关系
| 维度 | 抽象(Abstractions) | 集成(Integrations) |
|---|---|---|
| 核心目标 | 标准化与简化。定义统一的接口和模式,降低开发复杂度。 | 连接与扩展。提供丰富的即插即用组件,连接外部世界。 |
| 关注点 | "怎么做"(How)。提供构建应用的标准方法和组件。 | "用什么做"(With What)。提供可用的具体服务和数据源。 |
| 举例 | Runnable 协议、Agent 循环、Tool 接口。 |
OpenAI API 连接器、Chroma 向量库客户端、Google Search 工具。 |
| 关系 | 抽象定义接口,集成实现接口 。例如,VectorStore 是一个抽象,而 Chroma 类是该抽象的一个具体集成实现。 |
最终价值 :正是通过这种"上层抽象定义规范,下层集成提供实现 "的架构,LangChain 让开发者能够专注于业务逻辑本身,而非陷入适配不同API、调试底层通信的琐碎工作中。开发者利用抽象 来编写核心、稳定的业务链(如 prompt -> llm -> parser),同时利用集成 来灵活地切换底层组件(如将 llm 从 GPT-4 换成 Claude,或将向量存储从 Pinecone 换成 Milvus),从而实现高效、可维护的大模型应用开发。