LangChain 和 LangGraph 是什么
LangChain 是采用 MIT 许可证的 Python 和 JavaScript 框架,用于构建 LLM 应用。LangGraph 出自同一团队,是面向有状态智能体的底层编排框架:你用代码定义图,它提供可在故障后恢复的持久化执行,以及可检查和修改智能体状态的人工介入检查点。LangSmith 是用于追踪、评估和可观测性的商业产品,LangSmith Deployment 则托管长时间运行的智能体。其集成范围是整个生态中最广的。
这是代码库与平台之间的取舍
EDDI 并不是竞争性的框架。EDDI 内部使用 LangChain4j,即 LangChain 的 Java 对应项目。真正的问题不是哪种抽象更好,而是控制流究竟存在于你编写的代码中(即 LangGraph 图),还是存在于你部署的声明式配置中,以及由谁来构建并负责其周边的一切:REST 层、身份认证、多租户、状态、审计,以及非开发人员使用的界面。
自行构建与直接部署
| 维度 | LangChain / LangGraph | EDDI |
|---|---|---|
| 形态 | 导入到你的应用中的代码库 | 可部署的中间件;能运行 Docker 的地方就能运行 |
| 编排逻辑 | 位于你代码仓库中的 Python 或 TypeScript 图 | JSON 配置和确定性的行为规则(behavior rules),无需重新部署即可修改 |
| 人工介入 | 中断机制可让你检查和修改状态;审批界面和策略需要自行构建 | 对话轮次、工具调用和群组阶段均可设置审批关卡,带超时策略,并支持 Manager 和 Slack 审批 |
| 持久性 | 持久化执行,持久化方案由你配置 | 对话记忆由平台持久化,并带有 AWAITING_HUMAN 等明确的状态 |
| REST API 与路由 | 自行构建,或托管在 LangSmith Deployment | 内置,另含 OpenAPI 3.1、A2A 协议和 SSE 流式传输 |
| 身份认证与 RBAC | 自行构建 | 可选的 OIDC/Keycloak,含 eddi-admin 和 eddi-approver 角色 |
| 面向非开发人员的界面 | 自行构建(LangSmith Studio 面向开发者) | EDDI Manager,支持 11 种语言的生产级 React 界面 |
| 密钥管理 | 自行构建,或接入外部保险库 | 内置 AES-256-GCM Secrets Vault,以 ${vault:key} 引用 |
| 可观测性 | LangSmith(商业产品)或自行埋点 | Prometheus 指标和自动配置的 Grafana 仪表盘 |
| 审计与合规 | 自行构建 | HMAC 签名、仅追加、带序号校验的审计账本,数据主体权利 API,涵盖 15+ 个合规框架 |
| 迭代流程 | 修改代码、评审、测试、部署 | 在界面或 API 中修改配置,即时生效 |
| 控制能力上限 | 没有上限。凡是代码能表达的都可以实现 | 设计上受限于配置所能表达的范围 |
关于对方工具的信息,已于 2026 年 10 月对照其官方文档和代码仓库核实。这些项目更新很快,决策前请向厂商确认当前行为。
如何在两者之间选择
LangChain 和 LangGraph 更合适的场景
- 编排本身就是你的竞争优势,应当放在你的代码库中,而不是配置存储里。
- 你需要声明式配置无法表达的控制流:自定义图拓扑、定制的重试语义、特殊的状态机。
- 你们是 Python 或 TypeScript 团队,希望智能体运行在现有服务内部,而不是旁边。
- 你需要在新集成出现的当周就用上它。LangChain 的更新速度快于任何平台。
- 团队只有一两名工程师,没有合规官,没有多租户需求,也没有需要访问的非开发人员。
EDDI 更合适的场景
- 你发现 Day 2 运营清单上的事项,正在占用团队本该用于交付产品的时间。
- 提示词工程师和运营人员需要在不提交 pull request 的情况下修改智能体行为。
- 多个团队或客户共用一套部署,并需要隔离、配额和成本归属。
- 采购方要求在上线前就审计追踪、数据驻留和框架覆盖范围给出答复。
- 你希望编排层是一个可以升级的依赖,而不是需要自己维护的代码库。
从 LangChain 或 LangGraph 迁移应用
逻辑通常可以保留;你不再需要维护的是周边的基础设施。请从链或图的定义开始,由内向外推进。依赖任意 Python 代码的控制流,需要改写为行为规则或声明式工具。
| LangChain / LangGraph | EDDI |
|---|---|
| 链或 LangGraph 图 | EDDI 管道配置和行为规则 |
| 工具和函数调用 | MCP 工具定义或 httpCall 声明 |
| 用于人工审核的中断 | PAUSE_CONVERSATION 规则或 toolApprovals glob 模式,在 Manager 或 Slack 中审批 |
| 检查点器和记忆类 | 具有 step、conversation 和 longTerm 作用域的对话记忆 |
| 检索器和向量存储设置 | 涵盖 8 个嵌入提供商和 6 个向量存储的 RAG 配置 |
| 提示词模板 | 带版本的提示词片段,按名称引用 |
| FastAPI 封装 | 内置 REST API、OpenAPI 3.1 和 SSE 流式传输 |
| LangSmith 追踪 | Prometheus 指标、Grafana 仪表盘和审计账本 |
常见问题
EDDI 使用 LangChain 吗?
EDDI 内部使用 LangChain4j,即其 Java 实现。这并不是竞争性的抽象。EDDI 是围绕这类代码库构建的可部署平台,提供代码库有意留给你自行解决的 API 层、身份认证、状态管理、管理界面和合规基础设施。
LangChain 和 LangGraph 有什么区别?
LangChain 为 LLM 应用提供组件和集成。LangGraph 是更底层的一层,用于以图的形式定义有状态、长时间运行的智能体,具备持久化执行和人工介入检查点。两者都是嵌入到你自己服务中的代码库。与 EDDI 的对比对两者都适用。
什么是 Day 2 运营差距?
Day 1 是让智能体给出正确的响应,代码库在这方面做得很好。Day 2 则是之后的一切:身份认证、多租户、跨重启的对话状态、审计日志、密钥轮换、水平扩展、成本跟踪,以及面向不写 Python 的人员的界面。团队在 Day 2 上花费的时间往往超过智能体本身。
配置的能力比代码弱吗?
是的,而且这是有意为之的取舍。配置无法表达代码能表达的一切。作为交换,你可以无需重新部署即可修改,非工程师也能评审行为,并且在安全评审中无需为运行时代码执行辩护。如果你需要代码提供的控制上限,请使用代码库。
我们能在保留 LangChain 的同时使用 EDDI 吗?
可以。EDDI 提供 MCP 服务器和 REST API,因此 LangChain 应用可以把 EDDI 智能体当作工具调用,EDDI 也可以通过 httpCall 调用你的 LangChain 服务。按“差异化部分”与“基础设施部分”的界线来拆分,是合理的设计。
