Agent 开发:Python 生态与 JVM 生态的抉择

Agent 开发:Python 生态与 JVM 生态的抉择

为什么写 Agent “天然”选择 Python?JVM 生态真的没有一席之地吗?


一、现状:Python 的压倒性优势

如果 2025-2026 年要写一个 AI Agent,绝大多数工程师的第一反应是 Python。这不是偏见,而是数据事实:

框架 语言 GitHub Stars 创建时间 定位
LangChain Python 137K+ 2022-10 Agent 工程平台
Dify TypeScript/Python 142K+ 2023-04 可视化 Agent 工作流平台
AutoGen Python 58K+ 2023-08 多智能体编程框架(微软)
CrewAI Python 52K+ 2023-10 角色扮演式多 Agent 编排
LlamaIndex Python 50K+ 2022-11 文档 Agent + RAG
PydanticAI Python 17K+ 2024-06 结构化 AI Agent 框架
Transformers Python 161K+ 2018-10 模型定义框架(HuggingFace)

对比 JVM 生态:

框架 语言 GitHub Stars 创建时间 定位
LangChain4j Java 12K+ 2023-06 JVM 版 LangChain
Spring AI Java 8.7K+ 2023-06 Spring 官方 AI 框架
Embabel Agent Kotlin 3.4K+ 2025-04 GOAP 规划式 Agent 框架(Spring 创始人)
JetBrains Koog Kotlin 4.2K+ 2025-05 JVM 企业级 Agent 框架
Agents-Flex Java ~1K 2024 轻量级 Java AI 框架

Python 生态在 Star 数量上是 JVM 的 10-30 倍,这不是偶然,而是由深层原因决定的。但 Star 数量≠生产适用性,这正是本文要探讨的核心。


二、为什么 Agent “天然”和 Python 绑定?

1. 模型基础设施几乎全部 Python-first

这是最根本的原因。所有主流 LLM 的参考实现和训练推理栈都建立在 Python 之上:

  • HuggingFace Transformers:161K⭐,事实上的模型加载和推理标准库
  • vLLM:高性能推理服务,Python 原生
  • PyTorch:所有主流模型训练框架
  • Ollama / llama.cpp 的 Python binding:本地推理的标准接口
  • MLX(Apple Silicon):Python API

这意味着:在 Python 里调用模型是一等公民,在其他语言里是二等封装

当模型能力每周都在迭代(新 API、新模态、新结构化输出格式),Python SDK 总是第一时间支持,其他语言只能等待社区封装。

2. Agent 框架的”马太效应”

LangChain (2022-10) 是最早的 Agent 编排框架,它选择了 Python,之后产生了连锁反应:

Python-first LLM SDK → LangChain 选择 Python → 社区贡献涌入 → 
更多工具/集成围绕 LangChain 构建 → 新框架(crewAI, AutoGen)也选 Python → 
生态飞轮转动 → JVM 社区只能做"跟随者"(LangChain4j)

这是一种典型的路径依赖——不是因为 Python 在工程层面更好,而是因为先入者选择了它。

3. Agent 开发的”实验性”特质

Agent 开发目前仍然高度实验性:

  • Prompt 需要反复调试
  • 工具调用需要试错
  • 多 Agent 交互行为难以预测
  • 评估指标尚未标准化

Python 的解释执行、REPL、Jupyter Notebook 天然适合这种”快速尝试→观察结果→修改”的工作流。而 JVM 的”编译→运行”循环在这个阶段是劣势。

4. 数据科学生态的天然延伸

Agent 经常需要处理数据(RAG、工具调用返回结构化数据、分析结果),Python 的 pandas、numpy、matplotlib 等构成了完整的”获取→处理→展示”链路。JVM 生态在数据处理上虽然有 Spark、Flink,但对单 Agent 场景来说太重了。

5. MCP 协议的 Python-first

Model Context Protocol(Anthropic 提出的 Agent 工具调用标准)的官方 SDK 是 TypeScript 和 Python 的。虽然有社区 Java 实现,但不是官方一等支持。


三、JVM 生态的可取之处

如果说 Python 赢在”快”和”先”,那 JVM 赢在”稳”和”深”。 以下是在生产环境中选择 JVM 生态的真正理由:

1. 企业级工程能力(JVM 的核心护城河)

这是 JVM 生态最不可替代的优势。对比 Python 和 JVM 在关键工程维度上的差异:

维度 Python JVM (Java/Kotlin)
类型安全 动态类型 + 可选 type hints 强类型系统,编译时检查
并发模型 GIL 限制,asyncio 复杂 真正的多线程,虚拟线程 (Java 21+)
依赖管理 pip/poetry/uv,生态碎片化 Maven/Gradle,成熟稳定
测试生态 pytest,够用但不统一 JUnit + Mockito + Testcontainers,工业级
部署 容器化后差异不大 GraalVM 原生镜像,秒级启动
监控 需要额外集成 Spring Boot Actuator + Micrometer,开箱即用
安全审计 需要手动配置 Spring Security 等企业级方案成熟
重构 IDE 支持有限 IntelliJ 重构,安全且大规模可用

对于银行、保险、电信、大型电商等对稳定性、可维护性、安全合规有严格要求的行业,这些不是”锦上添花”,而是准入门槛

2. Spring 生态的无缝集成

如果你的企业已经在用 Spring Boot,选择 Spring AI 意味着:

Spring AI + Spring Security (认证/授权)
         + Spring Data (数据库)
         + Spring Cloud (微服务治理)
         + Spring Boot Actuator (监控)
         = 零额外学习成本的 AI 能力集成

对比 Python 方案,你需要分别集成 FastAPI、SQLAlchemy、Celery、Prometheus 等多个独立项目,并自己处理它们之间的兼容性和运维。

这不是框架之争,而是基础设施复用率之争。

3. 高并发场景的性能优势

Java 21 引入的虚拟线程 (Virtual Threads) 让 JVM 在高并发 Agent 场景下有明显优势:

  • 一个 Agent 服务同时处理数百个并发用户会话
  • 每个会话可能阻塞等待 LLM API 响应(通常 2-10 秒)
  • Python 的 asyncio 需要显式异步编程模型,容易写出阻塞代码
  • JVM 的虚拟线程让你用同步代码风格获得异步性能

对于客服 Agent、交易 Agent、实时监控 Agent等需要高并发响应的场景,JVM 的工程优势会直接转化为基础设施成本的降低。

4. Kotlin 带来的现代语言体验

JetBrains 推出的 Koog(4.2K⭐,2025-05)是 JVM Agent 生态的重要新玩家:

  • Kotlin 的协程模型天然适合异步 Agent 工作流
  • DSL 语法让 Agent 编排代码可读性极强
  • 同时支持 Java 和 Kotlin,兼容现有企业代码库
  • 原生支持 MCP 协议
  • 由 IDE 巨头 JetBrains 背书,工程质量和文档水平有保障

Koog 的定位很清晰:不是 Python 的移植版,而是为 JVM 平台原生设计的 Agent 框架

5. LangChain4j 的快速追赶

LangChain4j(12K⭐)是目前最成熟的 JVM Agent 框架:

  • 统一的 LLM Provider API(OpenAI、Anthropic、Ollama、HuggingFace 等)
  • 内建 RAG(检索增强生成)支持,集成多种向量数据库
  • 工具调用(Function Calling)的完整实现
  • Memory 管理机制
  • 社区活跃,每周更新

虽然它是 LangChain 的跟随者,但在 API 设计上更简洁——它不需要兼容 Python 的历史包袱。

6. Embabel:Spring 创始人的 Agent 框架

如果说 LangChain4j 是”LangChain 的 Java 翻译版”,那 Embabel(3.4K⭐,2025-04)则是 JVM 生态中架构理念最激进、最有野心的 Agent 框架。它的 README 只写了一句话就足以让人震惊:

From the creator of Spring.

是的,Rod Johnson——Spring Framework 的创始人——在做 Agent 框架。这意味着 Embabel 从一开始就带着 Spring 级别的工程标准和架构思考。

核心理念:GOAP 规划引擎

Embabel 与所有主流 Agent 框架最大的区别在于它的规划机制

框架类型 编排方式 举例
链式/管道式 按代码定义顺序执行 LangChain, LangChain4j
图式/工作流 DAG 节点编排 Dify, AutoGen
规划式 (Planning) 动态生成执行计划 Embabel

Embabel 内置了 GOAP(Goal-Oriented Action Planning)——一种源自游戏 AI 的规划算法。工作流程是:

目标 (Goal) → GOAP Planner (A*搜索) → 生成行动计划 → 执行第一步 → 
重新评估状态 → 重新规划 → 继续执行 → 目标达成

这意味着:你可以给 Agent 定义一组动作和目标,但具体的执行顺序由框架在运行时动态决定。系统能在每个动作之后重新规划,适应新信息。这比硬编码的链式或图式工作流灵活得多。

关键概念

Embabel 用四个核心概念建模 Agent 流程:

  • Actions(动作):Agent 执行的具体步骤
  • Goals(目标):Agent 想要达成的状态
  • Conditions(条件):评估动作前置条件和目标是否达成
  • Domain Model(领域模型):强类型的对象体系

这些概念支撑了三个差异化优势:

  1. 真正的规划而非有限状态机:使用非 LLM 的 AI 规划算法(GOAP),系统能完成它”没被显式编程”的任务——把已知步骤以新顺序组合
  2. 动态可扩展性:添加新的动作、目标、条件就能扩展能力,不需要修改现有的编排定义
  3. 强类型 + 面向对象:所有东西都有类型,支持完整的 IDE 重构,告别”魔法 Map”

技术特性

  • 两种编程模型:注解驱动(类似 Spring MVC 的 @Agent@Goal@Action)和 Kotlin DSLagent { } 块)
  • 同时支持 GOAP 和 Utility AI(效用系统,适合探索性任务)
  • OODA Loop(观察→判断→决策→行动)架构,每步动作后重新规划
  • 原生 Spring 集成:Spring 可以注入和管理 Agent,用 AOP 装饰函数
  • 内建 MCP、RAG、多 LLM 混合调用支持
  • 从设计之初就支持测试——单元测试和 Agent 端到端测试都很简单
  • 2026-05-18 刚发布 v0.4.0,每周迭代

为什么说 Embabel 值得关注?

在 JVM Agent 生态中,Embabel 是唯一一个在架构层面与 Python 框架拉开差距的项目。它不是在做”Java 版 LangChain”,而是在回答一个更根本的问题:Agent 的编排机制应该是什么样的?

GOAP 的思路本质上把 Agent 从”编程”变成了”声明”——你声明目标、动作、条件,框架负责找出达成目标的路径。这种范式如果成熟,可能代表 Agent 开发的下一个阶段。

当然,Embabel 目前仍处于早期(v0.4.0),社区规模和文档深度远不及 LangChain4j。但考虑到创始人的履历和对架构的深度思考,它是最值得关注的 JVM Agent 项目。

7. 已有技术栈的沉没成本

这是最务实的理由。如果一个团队:

  • 90% 的代码是 Java/Kotlin
  • CI/CD、监控、安全审计全基于 JVM 生态
  • 运维团队对 Python 不熟悉
  • 合规部门要求代码必须经过静态分析

那么在 JVM 上构建 Agent 是降低整体风险的选择。强行引入 Python 意味着两套技术栈的运维成本。


四、什么时候选 Python,什么时候选 JVM?

选 Python 的场景

场景 原因
原型验证 / POC 快速实验,Jupyter 交互式调试
需要调用最新模型能力 Python SDK 第一时间支持
数据密集型 Agent pandas/numpy 无缝衔接
个人项目 / 创业初期 生态丰富,开发速度最快
需要自定义模型 / 微调 PyTorch + Transformers 无可替代
团队以 Python 为主 学习成本最低

选 JVM 的场景

场景 原因
企业级生产系统 类型安全、监控、安全合规
已有 Spring Boot 技术栈 无缝集成,无需引入新语言
高并发 Agent 服务 虚拟线程 + 成熟连接池
金融 / 电信 / 政务 审计、合规、长生命周期维护
大规模微服务中的 Agent 节点 与现有服务治理体系一致
团队以 Java/Kotlin 为主 利用已有工程能力

五、混合架构:两全其美的实践模式

现实中,越来越多的团队采用混合架构

┌─────────────────────────────────────────┐
│           用户请求 (HTTP/gRPC)            │
└──────────────────┬──────────────────────┘
                   │
┌──────────────────▼──────────────────────┐
│        JVM 层 (Spring Boot)              │
│  ┌─────────────────────────────────────┐ │
│  │  路由 / 认证 / 限流 / 监控           │ │
│  │  Spring AI / Koog (轻量编排)         │ │
│  └────────────────┬────────────────────┘ │
└───────────────────┼──────────────────────┘
                    │ 内部 RPC / HTTP
┌───────────────────▼──────────────────────┐
│        Python 层 (FastAPI / gRPC)         │
│  ┌─────────────────────────────────────┐ │
│  │  模型推理 (vLLM / Transformers)      │ │
│  │  复杂 Agent 编排 (LangChain/AutoGen) │ │
│  │  数据处理 (pandas / numpy)          │ │
│  └─────────────────────────────────────┘ │
└──────────────────────────────────────────┘

分工原则:

  • JVM 层:处理流量入口、业务逻辑、服务治理、数据持久化——发挥企业级工程优势
  • Python 层:处理模型调用、Agent 编排、数据分析——发挥 AI 生态优势
  • 通信:gRPC 或 HTTP API,清晰的服务边界

这种架构下,两边各取所长,避免了”用 Python 写生产服务”和”用 Java 折腾最新模型 API”的双重痛苦。


六、未来展望

Python 生态的趋势

  • 标准化加速:OpenAI SDK、Anthropic SDK 趋于稳定
  • Agent 框架收敛:LangChain、CrewAI、AutoGen 的功能边界逐渐清晰
  • 评估体系成熟:更多的 benchmark 和评估工具出现

JVM 生态的趋势

  • 官方重视度提升:Spring AI 是 Spring 官方项目,不再是社区插件
  • Kotlin 异军突起:JetBrains Koog 代表了 JVM Agent 框架的新方向
  • 规划式 Agent 崛起:Embabel 的 GOAP 思路如果成熟,可能代表 Agent 编排的下一个范式——从”编程流程”到”声明目标”
  • MCP for Java:随着 MCP 协议普及,JVM 官方 SDK 迟早会来

一句话总结:Python 在”前沿探索”上遥遥领先,JVM 在”生产落地”上有不可替代的价值。选择哪个生态,取决于你处于 Agent 开发的哪个阶段、以及你的团队基因是什么。

对于大多数企业团队,我的建议是:先用 Python 快速验证 Agent 是否真的能解决业务问题,确认价值后再用 JVM 做生产级重写或构建混合架构。 不要在验证阶段就追求工程完美,也不要在生产阶段裸奔。


参考资料

资源 链接
LangChain https://github.com/langchain-ai/langchain
LangChain4j https://github.com/langchain4j/langchain4j
Embabel Agent https://github.com/embabel/embabel-agent
Spring AI https://github.com/spring-projects/spring-ai
JetBrains Koog https://github.com/JetBrains/koog
AutoGen https://github.com/microsoft/autogen
CrewAI https://github.com/crewAIInc/crewAI
LlamaIndex https://github.com/run-llama/llama_index
PydanticAI https://github.com/pydantic/pydantic-ai
Dify https://github.com/langgenius/dify
Agents-Flex https://github.com/agents-flex/agents-flex