LangChain 1.0 框架基础入门实战
LangChain 是一个构建 LLM 应用的框架,目标是把 LLM 与外部工具、数据源和复杂工作流连接起来 —— 支持从简单的 prompt 封装到复杂的 Agent(能够调用工具、做决策、执行多步任务)。它不仅仅是对LLM API的封装,而是提供了一套完整的工具和架构,让开发者能够更轻松地构建上下文感知和具备推理能力的AI应用。LangChain 1.0 版本把“Agent 的稳定化、结构化输出、可观测性与生产化”作为核心改进目标。
可以做什么
- 构建 Retrieval-Augmented Generation(RAG)问答系统
- 把 LLM 当作“Agent”去调用外部 API(搜索、数据库、文件系统)并返回任务结果
- 组织 prompt → 模型 → 后处理 的可复用流水线(Chains)
- 实现多轮对话带记忆(Memory)与长会话管理
- 在生产中管理可观测性与评估(配合 LangSmith/LangGraph)
LangChain 生态
LangChain 1.0 的统一模型抽象层,为所有模型提供标准化调用,覆盖文本、多模态、Embedding、Rerank 等多类型模型,实现跨供应商一致体验
- 统一抽象:init_chat_model() 适配20+模型厂商
- 异步/流式/批处理:ainvoke(),stream(), batch()
- 执行方式:完全兼容 LCEL 与 LangGraph
- 扩展能力:with_structured_output()、Tool Calling、多模态 Content Blocks
工具层
工具系统提供统一 Tool 抽象,支持所有主流模型的 Tool Calling,深度集成 LangGraph,构建可执行 agent 环境的关键能力层
- 内置工具:搜索、计算、代码执行等100+工具
- 自定义工具:@tool装饰器 / BaseTool / ToolNode
- 工具包:Toolkit(如GitHub、Slack集成)
记忆层
记忆层提供统一 State 管理、对话记录、长期检索、多模态 Memory 等能力,支持持久化与复杂工作流状态流转
Agent层
LangChain 1.0 Agents系统实现从碎片化到标准化升级,以create_agent为核心接口,基于LangGraph构建统一Agent抽象,10行代码即可创建基础Agent,封装"模型调用→工具选择→执行→结束"闭环流程
工作流层
Workflows 体系实现从 线性链式(Chain)到图结构(Graph) 的范式转移,以 StateGraph 为核心画布,将业务逻辑解耦为 “节点(Node)+ 边(Edge)+ 状态(State)”,原生支持循环(Loop)与条件分支,完美适配复杂任务编排、容错重试及长会话保持。
调试监控层
LangChain 1.0 调试监控层实现了从 日志黑盒到全链路可观测性(Observability) 的质变,深度集成 LangSmith 平台,自动捕获链(Chain)与图(Graph)的每一步骤状态、Token 消耗及延迟,支持"Trace → Playground"一键回放调试,彻底解决复杂 Agent 逻辑难以排查的痛点。
其他关键组件
- langgraph: 这是一个底层的Agent 调度框架 (Agent Runtime),是一个相对“低级”(Low-level)的编排框架,它专注于解决复杂的“控制流”问题,用于构建健壮且有状态的多角色 LLM 应用程序。LangChain 1.0 中的新 Agents (通过 create_agent()) 就是建立在 LangGraph 之上的。
- langserve: 用于将任何 LangChain chain 或 agent 部署为 REST API 的包,方便快速将应用投入生产环境。
底层运行结构
# 简化版架构示意图
┌─────────────────────────────────────────┐
│ LangChain 1.0 应用层 │
│ (create_agent, 工具和中间件) │
└──────────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ LangGraph 编排层 │
│ (StateGraph, Nodes, Edges, Checkpoints)│
└──────────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ LCEL 运行时层 │
│ (Runnable接口, |运算符, 流式/批处理) │
└──────────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 大语言模型API(OpenAI/DeepSeek) │
└─────────────────────────────────────────┘
Runnable底层执行引擎
Runnable 是 LangChain 1.0 的“统一接口标准”,任何可以运行的组件——模型、Prompt、工具、解析器、Memory、Graph 节点——在 1.0 中都被抽象为 Runnable。
Runnable 使所有 LangChain 组件能够以统一接口组合、执行、链式调用,并支撑 LCEL(LangChain Expression Language)的整个运行语义,支撑可组合、可并行、可路由的链式执行,是 LangChain 1.0 的核心底座之一。
核心思想:Runnable 抽象与可组合链(Composable Chains)
- LangChain 1.0 将所有链式元素统一为 Runnable(执行模型):
- LLM(OpenAI、vLLM、Ollama……)
- Prompt
- Parser
- Retriever
- Tool
- Agent
- 自定义函数
所有对象都可以 .invoke()、.batch()、.stream()、.astream_events(),这实现了真正的统一调用接口。
- 工程价值:
- 链路清晰。
- 任意组件之间可无缝组合。
- 所有执行方式(同步 / 异步 / 批处理 / 事件流)统一。
- 这是 LangChain 1.0 最具革命性的改变,使其成为“模型调用管道”的事实标准。
Prompt Runnable
from langchain_core.prompts import ChatPromptTemplate
# 1. 定义一个 Prompt (Runnable)
prompt = ChatPromptTemplate.from_template("Tell me a joke about {topic}")
# Prompt 也可以调用 invoke/stream
print(prompt.invoke({"topic": "ice cream"}))
messages=[HumanMessage(content=‘Tell me a joke about ice cream’, additional_kwargs={}, response_metadata={})]
Tool Runnable
from langchain_core.tools import tool
# 2. 定义一个简单的 Tool (Runnable)
@tool
def multiply(a: int, b: int) -> int:
"""Multiplies a and b."""
return a * b
# Tool 也可以调用 invoke/batch
print(multiply.invoke({"a": 2, "b": 3}))
# Tool 也可以调用 batch (自动并行)
print(multiply.batch([{"a": 2, "b": 3}, {"a": 4, "b": 5}]))
# 输出: [6, 20]
6
[6, 20]
Runnable = LCEL 的语法基础
LCEL(| 运算符)是由 Runnable 定义的组合语义:
chain = prompt | model | StrOutputParser()
output = chain.invoke({"topic": "LangChain"})
这三者本质都是 Runnable:
PromptTemplate → Runnable
Model → Runnable
Parser → Runnable
任何 LCEL chain = 多个 Runnable 的组合。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)