Appearance
LangChain.js 模块分析 #5: 示例与社区组件(含流程图)
模块: examples, langchain-community, langchain-textsplitters, langchain-mcp-adapters 分析日期: 2026-02-13
目录
1. 示例项目
1.1 项目结构流程图
mermaid
graph TD
Start[用户输入] --> SelectExample{选择示例}
SelectExample --> |A[createAgent]|
SelectExample --> |B[llms]|
SelectExample --> |C[multi-agent]|
SelectExample --> |D[cache]|
SelectExample --> |E[document_compressors]|
A --> A1[创建 ReactAgent]
A --> A2[配置 LLM]
A --> A3[定义工具]
A --> A4[运行 Agent]
A1 --> Output[输出结果]
Output --> Final[完成]
B --> B1[配置 ChatOpenAI]
B --> B2[调用 LLM]
B --> B3[处理响应]
B1 --> Output[输出文本]
Output --> Final[完成]
C --> C1[创建研究 Agent]
C --> C2[创建摘要 Agent]
C --> C3[协作流程]
C1 --> Research[执行研究]
C2 --> Summarize[执行摘要]
Summarize --> Output[发送给摘要 Agent]
Output --> Final[完成]
D --> D1[配置缓存]
D --> D2[调用 LLM(带缓存)]
D --> D3[缓存命中验证]
D1 --> |A1[首次调用 - 缓存未命中]|
D2 --> |A2[第二次调用 - 缓存命中]|
D2 --> Output[返回缓存结果]
Output --> Final
A2 --> Output
A3 --> Final
E --> E1[加载文档]
E --> E2[分割文档]
E --> E3[生成嵌入]
E --> E4[添加到向量存储]
E --> F[创建 RAG 链]
F --> Query[查询向量存储]
F --> Output[返回相关文档]
Query --> Output
Output --> Final[完成]
style Start fill:#e1f5ff
style SelectExample fill:#fff4e6
style A fill:#d1fae5
style B fill:#d1fae5
style C fill:#d1fae5
style D fill:#d1fae5
style E fill:#d1fae5
style F fill:#f59e0b
style Output fill:#f59e0b
style Final fill:#f59e0b2. langchain-community
2.1 社区工具流程图
mermaid
graph TD
Input[用户请求] --> RegisterTool[注册工具]
RegisterTool --> |A[验证 Schema]|
RegisterTool --> |B[创建 Tool 实例]|
A --> |A1[检查 Zod Schema]|
A --> |A2[提取元数据]|
A1 --> Validate[验证通过]
A2 --> CreateInstance[创建工具实例]
B --> |B1[实现 call 方法]|
B --> |B2[错误处理]|
B --> |B3[返回结果]|
B1 --> |C1[同步调用]|
B1 --> |C2[异步调用]|
B --> |C3[回调处理]|
C1 --> |D1[try-catch 错误]|
C2 --> |D2[try-catch 错误]|
C3 --> |D3[记录日志]|
D1 --> Output[返回结果]
D2 --> Output[返回结果]
D3 --> Output[返回结果]
Output --> AddToRegistry[添加到工具注册表]
AddToRegistry --> Final[工具已注册]
B --> AddToRegistry
C --> AddToRegistry
D --> AddToRegistry
style Input fill:#e1f5ff
style RegisterTool fill:#fff4e6
style A fill:#d1fae5
style B fill:#82c91a
style C fill:#d1fae5
style D fill:#f59e0b
style AddToRegistry fill:#8ec5fc
style Final fill:#f59e0b2.2 向量存储集成流程图
mermaid
graph TD
Input[文档数组] --> SelectStore{选择向量存储}
SelectStore --> |A[ChromaDB]|
SelectStore --> |B[Pinecone]|
SelectStore --> |C[Qdrant]|
SelectStore --> |D[Weaviate]|
SelectStore --> |E[InMemoryVectorStore]|
A --> |A1[添加文档]|
A --> |A2[生成嵌入]|
A --> |A3[存储向量]|
A2 --> |B1[批量处理]|
A --> |B2[调用 Embeddings API]|
B --> |B3[返回嵌入向量]|
B --> |C1[构建索引]|
C --> SimilaritySearch[相似度搜索]
C --> MaxMarginalRelevance[MMR 搜索]
SimilaritySearch --> |D1[余弦相似度]|
SimilaritySearch --> |D2[返回 top-k 结果]|
MaxMarginalRelevance --> |E1[平衡相关性和多样性]|
E --> |F1[返回混合结果]|
F --> Output[返回文档列表]
Output --> Final[完成]
B --> C
D --> Output
C --> Output
style Input fill:#e1f5ff
style SelectStore fill:#fff4e6
style A fill:#d1fae5
style B fill:#82c91a
style C fill:#d1fae5
style D fill:#f59e0b
style E fill:#82c91a
style Output fill:#f59e0b
style Final fill:#f59e0b3. langchain-textsplitters
3.1 文本分割流程图
mermaid
graph TD
Input[文档文本] --> SelectSplitter{选择分割器}
SelectSplitter --> |A[RecursiveCharacterTextSplitter]|
SelectSplitter --> |B[MarkdownTextSplitter]|
SelectSplitter --> |C[CodeTextSplitter]|
A --> |A1[创建分割器实例]|
A --> |A2[配置参数]|
A --> |A3[分割文档]|
A2 --> |B1[字符级分割]|
B --> |B1[递归分割]|
B --> |B1[智能换行]|
B --> |C[生成文档块]|
C --> |C1[处理重叠]|
C --> |C2[保留元数据]|
C --> Output[返回块数组]
Output --> Final[完成]
B --> C
C --> Output
C --> |A1[Markdown 特定分割]|
A --> |B1[按标题级别]|
A --> |B1[保持结构]|
B --> |C2[分割文档块]|
C --> |C3[添加标题元数据]|
D --> Output[返回 Markdown 块]
D --> Final[完成]
A --> |A1[代码感知分割]|
A --> |B1[检测代码块]|
A --> |B1[按语法结构分割]|
B --> |C2[分割代码段]|
C --> Output[返回代码块]
C --> Final[完成]
A --> Output
B --> Output
D --> Output
style Input fill:#e1f5ff
style SelectSplitter fill:#fff4e6
style A fill:#d1fae5
style B fill:#d1fae5
style C fill:#d1fae5
style Output fill:#f59e0b
style Final fill:#f59e0b4. langchain-mcp-adapters
4.1 MCP 协议流程图
mermaid
graph TD
Start[初始化 MCP] --> CreateClient{创建客户端}
CreateClient --> |A[stdio 传输]|
CreateClient --> |B[SSE 传输]|
A --> |A1[启动子进程]|
A --> |A2[建立通信管道]|
A --> |A3[处理消息循环]|
A --> ListTools[列出可用工具]
B --> |B1[请求 tools/list]|
B --> |B2[获取工具列表]|
B --> |C1[解析工具 Schema]|
C --> |D1[注册工具到 LangChain]|
ListTools --> CallTool[调用工具]
CallTool --> |A1[准备参数]|
A --> |A2[创建 ToolCall 对象]|
A --> |A3[调用 MCP 客户端]|
A --> |B1[执行调用]|
B --> |B2[等待响应]|
B --> |C3[解析响应]|
C --> |D1[提取工具结果]|
D --> |E1[创建 ToolMessage]|
E --> |F1[返回给调用者]|
F --> |G[注册 MCP 适配器]|
G --> |H1[设置工具注册表]|
H --> |H2[添加到 LangChain 工具]|
I --> Final[工具已注册]
F --> Final
A --> B
B --> C
D --> E
E --> F
G --> H
B --> |B1[创建 HTTP 服务]|
B --> |B2[启动 SSE 服务器]|
B --> |B3[处理工具调用请求]|
B --> |C1[接收 SSE 连接]|
C --> |C2[解析 MCP 协议消息]|
C --> |C3[转发到客户端]|
C --> |D1[发送到 MCP 客户端]|
D --> |E1[获取响应]|
D --> |E2[返回给 HTTP 客户]|
E --> |F1[返回工具结果]|
F --> |G[注册 MCP 适配器]|
B --> C
C --> D
E --> F
G --> H
style Start fill:#e1f5ff
style CreateClient fill:#fff4e6
style A fill:#d1fae5
style ListTools fill:#82c91a
style CallTool fill:#f59e0b
style Final fill:#f59e0b4.2 工具注册流程图
mermaid
graph TD
Input[工具定义] --> RegisterMCP[注册到 LangChain]
RegisterMCP --> |A[提取工具名]|
RegisterMCP --> |B[创建 Tool 实例]|
RegisterMCP --> |C[实现 invoke 方法]|
A --> |A1[获取工具名]|
A --> |A2[获取描述]|
A --> |A3[获取 Schema]|
B --> |B1[创建 Zod 解析器]|
B --> |B2[实现调用逻辑]|
B --> |B3[错误处理]|
B1 --> |C1[实现 call 包装]|
C --> |D1[创建 ToolMessage]|
C --> |E1[返回结果]|
D --> |F1[添加到 LangChain 工具表]|
F --> |Final[工具已注册]
B --> C
D --> E
F --> Final
A --> B
B --> C
C --> D
E --> F
style Input fill:#e1f5ff
style RegisterMCP fill:#fff4e6
style A fill:#d1fae5
style B fill:#d1fae5
style C fill:#82c91a
style D fill:#f59e0b
style E fill:#82c91a
style Final fill:#f59e0b总结
示例与社区组件提供了:
- Examples - 丰富的使用示例(Agent、LLM、缓存、RAG)
- langchain-community - 社区工具、向量存储集成
- langchain-textsplitters - 灵活的文本分割策略
- langchain-mcp-adapters - MCP 协议完整支持
关键特性:
- 生产就绪的代码示例
- 多种向量存储集成
- 灵活的文本分割策略
- MCP 协议的完整实现
流程图亮点:
- Agent 创建和执行流程
- LLM 调用流程
- 缓存命中/未命中流程
- 向量存储添加和搜索流程
- MCP 客户端/服务器端通信流程
- 工具注册和调用流程
✅ 模块 5 分析完成: 示例与社区组件(含流程图)📊 总进度: 5/6 (83.3%)