平台的 LangChain 组件抽象
如果把 LangGraph 看成“流程骨架”,那 LangChain 在这个项目里更像“标准零件库”。
它不直接决定整个平台怎么编排,但模型接入、提示词模板、输出解析、工具协议、消息对象、RAG 文本链路,几乎都靠 LangChain 这一层收口。
这是一篇补充理解文档,不是主线入口。更适合在读完总览、运行时、工具层和知识库之后回看。
先建立阅读坐标
- 这篇在主线里的位置:补充篇,用来解释 LangChain 在平台里承担的“组件协议层”角色。
- 带着这两个问题读:
- 平台为什么大量复用 LangChain,但没有把整条执行控制完全交给它。
- LangChain 到底在哪些地方提供了可复用的标准零件。
- 先记住的对象:
BaseLanguageModel、ChatPromptTemplate、BaseTool、Retriever、Runnable。
LangChain 在这里不是一个大一统 Agent 框架
这类项目里最容易混淆的一点,是把 LangChain 和 LangGraph 当成一回事。
放回这个项目里看,更准确的分工是:
- LangChain 负责组件抽象和统一协议
- LangGraph 负责状态和控制流编排
- 平台自己的 service 和 runtime 再把两者包成真正可运行的产品能力
可以把它拆成六个部分
1. 模型接口
- 平台没有直接把各家模型 SDK 散着调用,而是基于 LangChain 的
BaseLanguageModel统一模型协议 - Provider 差异先在适配层吸收,平台再往上补
features、metadata、价格、上下文等治理信息 - 这样上层拿到的始终是统一模型对象,而不是一堆厂商特例
2. Prompt 与输出链
- 很多 AI 小能力本质上都是
Prompt | LLM | Parser这样的LCEL链 ChatPromptTemplate负责把提示词从字符串拼接提升成标准消息模板StrOutputParser负责落纯文本,with_structured_output负责落结构化对象- 这让摘要、命名、建议问题、配置生成这类能力能复用同一套装配方式
3. 工具协议
- 这个项目最重要的 LangChain 落点之一,是把外部能力统一收敛到
BaseTool - Builtin Tool、API Tool、MCP Tool、Workflow Tool、Dataset Retrieval Tool 最终都变成同一种可调用对象
- 统一之后,Agent、App 和 Workflow 才能共享同一套工具注入方式
4. 消息协议
- Agent 不是普通字符串问答,而是
SystemMessage、HumanMessage、AIMessage、ToolMessage共同参与的消息状态 - 多模态输入、工具结果回传、上下文重写都建立在这层协议之上
- 这也是平台后面能做事件流、会话记忆和调试回放的基础之一
5. RAG 文本链
- 文档进入平台后,不是直接丢给模型,而是沿着
Document -> Loader -> Splitter -> Embeddings -> VectorStore -> Retriever这条标准链路往下走 langchain_community承担多格式加载,langchain_text_splitters负责切分,langchain_weaviate和FAISS承担索引,EnsembleRetriever负责融合召回- 这样知识库能力就不是一堆零散脚本,而是一套可替换、可组合的文本处理管道
6. 可组合运行单元
Runnable、LCEL、RunnableParallel让平台不只能写直线链,还能写并行链、可复用链和统一执行对象- 这也是为什么 Agent、Workflow 节点、AI 小功能都能用比较一致的调用方式
- LangChain 在这里提供的不是“神奇能力”,而是低摩擦的组合能力
这个项目为什么没有直接用 LangChain 内置 Agent
因为平台真正难的,不是“能不能跑一次工具调用”,而是:
- 状态怎么保存
- 条件分支怎么控制
- 循环怎么退出
- 事件流怎么统一
- 调试、发布、中断和治理怎么补齐
这些更像 LangGraph 和平台 runtime 要解决的问题。
所以这个项目的路线不是“抛弃 LangChain”,而是:
- 继续大量复用 LangChain 组件层
- 不把执行控制权完全交给 LangChain 内置 Agent
- 用平台自己的编排层把这些零件重新装成更可控的系统
最值得学的工程判断
1. 以 langchain_core 为协议中心
不是绑定某一家模型 SDK,而是先拿统一协议做底座。
2. 把外部能力优先做成 BaseTool
一旦统一成工具,对 Agent、Workflow、App 的复用价值会立刻上来。