LangChainJS 核心架构概述
LangChain JS(@langchain/core + 各 provider 包)把 LLM 应用拆成可组合的 Runnable 单元,在 Node / 浏览器 / Edge 等环境以统一异步 API 运行。
1. 定位
| 目标 | 手段 |
|---|---|
| 换模型、换向量库 | 抽象接口 + 独立 @langchain/openai 等包 |
| 可观测 | callbacks、LangSmith tracing |
| 可编排 | LCEL:prompt.pipe(model).pipe(parser) |
| 复杂 Agent | LangGraph(独立包,见 07) |
2. Monorepo 结构(概念)
| 包 | 职责 |
|---|---|
@langchain/core | Runnable、Message、Tool、基础 LLM 抽象 |
@langchain/langgraph | 有状态图编排 |
@langchain/openai 等 | 厂商实现 |
langchain | 聚合导出与高层 Agent API |
3. 核心抽象:Runnable
一切「可执行步骤」实现同一契约:
| 方法 | 用途 |
|---|---|
invoke | 单次输入 → 输出 |
batch | 批量 |
stream | 流式 chunk |
streamEvents | 细粒度事件(调试用) |
用 pipe 串联成链,配置经 RunnableConfig(callbacks、tags、runName)透传。
4. 关键组件关系
mermaid
flowchart TB
P[PromptTemplate] --> M[ChatModel]
M --> T[Tools / ToolNode]
T --> A[Agent / LangGraph]
M --> PAR[OutputParser]- Message:对话单元(Human / AI / System / Tool)
- Tool:模型可调用的函数,schema 描述参数
- Retriever:RAG 取文档,常
pipe进 prompt
5. 异步与流式
全链路 Promise / AsyncIterable;模型 token 经 stream 逐步吐出,链上各 Runnable 可转发或转换 chunk。
6. 错误与重试
Runnable 层支持 retry、fallback(withRetry、withFallbacks),与 provider 级限流错误配合使用。
7. 类型与 Schema
结构化输出常用 Zod(或 JSON Schema)约束模型返回;Tool 参数同样 schema 化。
8. 阅读顺序
02 Runnable → 03 Model → 04 Message → 05 Tool/Agent → 06 Stream → 07 LangGraph。
总结
LangChain JS 的心智模型:一切皆 Runnable,用 pipe 组链,用 Message 对话,用 LangGraph 管状态机。