EasyAi:告别 Python 依赖,Java 程序员也能轻松搞定 AI 开发!

EasyAi:告别 Python 依赖,Java 程序员也能轻松搞定 AI 开发! 你的痛我懂场景一老板走过来说“咱们系统加个人脸识别吧。”你打开搜索引擎看到的全是 Python 项目、模型环境、依赖版本、显卡配置。再看看公司那台 8 核 16G 的老服务器它沉默你也沉默。场景二团队清一色 Java 程序员业务系统全是 Spring Boot。现在要做一个目标检测需求大家硬着头皮拆出一套 Python 推理服务然后就是接口调用、服务部署、模型版本对齐、日志排查、线上联调。本来只是想识别一张图片最后却像给系统加了个外地亲戚麻烦得很。所以今天这个 EasyAi 项目Java 程序员真的可以认真看看。它是 Dromara 社区下的原生 Java 人工智能算法框架目标很直接就是让 Java 程序员用 Java 的方式写 AI。EasyAi 不是 “大模型接口套壳”现在很多项目一说自己是 AI结果打开代码一看就是调接口、拼 Prompt、包一层 Controller然后起个热闹的名字。但 EasyAi 不是这个路子它不是某个大模型 API 的 Java 包装层而是原生 Java AI 算法框架。官网文档明确写着EasyAi 无任何依赖可以 Maven 一键引入 Java 项目不需要额外环境配置。项目当前文档版本是 V1.6.5接入方式也很 JavadependencygroupIdorg.dromara.easyai/groupIdartifactIdeasyAi/artifactIdversion1.6.5/version/dependency这段依赖一出来Java 程序员就舒服了不用先装 Python不用先配一堆环境也不用先把业务系统拆成“Java 写业务Python 跑模型”先引入再开干这就是 EasyAi 最讨喜的地方。它不是玩具能力是分层的看完项目和官方文档会感觉 EasyAi 不是只给你展示效果图的 demo它大概可以分成三层。第一层封装好的应用能力比如图像目标检测、图像抠图、人脸识别相关能力以及基于 EasyAi 封装的智能客服项目 sayOrder。这些适合想先跑起来的人不一定要一开始就研究底层网络先看看它怎么处理样本、怎么训练、怎么识别、怎么接进 Java 服务。第二层中层算法能力源码里能看到 yolo、unet、resnet、transFormer、naturalLanguage、randomForest、recommend、regressionForest、pso 等模块这说明它不是只停在“调用现成服务”确实在把一批 AI 算法能力放进 Java 工程里。第三层底层数学和工程基础比如矩阵运算、激活函数、神经网络管理器、图像三通道矩阵、求导/反向传播相关工具。这些东西不是每个业务开发都要马上碰但它们决定了一个框架有没有继续往下做的空间。可以把 EasyAi 理解成一张工作台上层能力直接用中层算法按需调底层工具留给真正想深挖的人。三个让 Java 程序员心动的点第一真的轻EasyAi 的主包没有第三方依赖这点对很多企业项目很重要。因为现实里不是每个团队都有算法平台也不是每台服务器都有显卡更不是每个业务系统都适合再挂一套 Python 推理服务。如果只是做垂直场景的小微模型Java 项目里直接跑会少很多工程摩擦。第二它盯的是业务小模型EasyAi 官方文档反复提到一个方向让开发者根据自身业务开发符合自己业务的小微模型。这个定位很实在不是每家公司都要造通用大模型更多公司需要的是识别货架上的商品、判断图片里有没有某类物体、把用户咨询分到正确的业务类型、从一句话里抓出时间、地点、诉求、做一个只懂自己业务的智能客服等。这些问题不一定需要巨大的模型但它们需要和业务系统靠得很近而 Java 的主场恰好就是业务系统。第三CPU 能跑GPU 也留了口子EasyAi 默认就是 Java 依赖引入如果你有 NVIDIA 显卡官方文档也提供 CUDA 12.0.0 扩展包注意这个是扩展不是前置条件。扩展依赖类似这样dependencygroupIdorg.dromara.easyai.extensions/groupIdartifactIdeasyai-extensions-cuda-12.0.0/artifactIdversion${CUDA扩展版本}/versionclassifier${平台架构}/classifier/dependency文档里也说明了版本对应关系EasyAI 版本大于等于 1.5.4 时对应 CUDA 扩展版本 1.0.1。这就比较灵活没有显卡先跑小模型有显卡再考虑训练加速。来点实在的代码FastYolo 怎么跑你给一张图能不能在 Java 里做目标检测EasyAi 文档里给出的路线是这样的。先准备图像检测配置YoloConfig yoloConfig new YoloConfig();// 示例具体参数要根据图片尺寸、目标大小、类别数量调整yoloConfig.setTypeNub(3);yoloConfig.setWindowWidth(120);yoloConfig.setWindowHeight(120);yoloConfig.setShowLog(true);然后初始化 FastYoloFastYolo fastYolo new FastYolo(yoloConfig);训练阶段准备好样本标注集合ListYoloSample yoloSamples new ArrayList();// yoloSamples 里需要放入标注好的训练样本// 每个样本包含图片信息和目标框标注// true训练类别网络fastYolo.toStudy(yoloSamples, null, true);YoloModel typeModel fastYolo.getModel();// 保存 typeModel 为 JSON下一步再加载后训练位置网络文档中特别提醒FastYolo 里有类别网络和位置网络所以训练要分两次一次训练类别一次训练位置。识别阶段服务启动时初始化并注入训练好的模型YoloConfig yoloConfig new YoloConfig();// 这里的配置必须和训练时保持一致FastYolo fastYolo new FastYolo(yoloConfig);// readYoloModel() 代表你从 JSON 中反序列化出来的 YoloModelfastYolo.insertModel(readYoloModel());真正识别图片时把图片解析成三通道矩阵再调用 lookThreeChannelMatrix matrix Picture.getThreeMatrix(D:/images/test.jpg, false);ListOutBox boxes fastYolo.look(matrix, System.nanoTime(), null);if (boxes ! null) {for (OutBox box : boxes) {System.out.println(类型 box.getTypeID());System.out.println(位置x box.getX() , y box.getY());}}这里有几个点要注意FastYolo 要单例识别前要先 insertModel训练时的配置和线上识别时的配置要一致look 的 eventID 要在本次识别生命周期里保持唯一保证线程安全。这不是那种“伪代码写得很爽跑起来全靠猜”的介绍而是真实框架会面对的工程细节。再看自然语言不是只能做图片EasyAi 也有自然语言方向比如语义分类、关键词抓取、问答训练、基于 TransFormer 的文本处理能力。如果只是做一个固定业务里的意图识别它的思路会比较适合。例如你有一批客服语句“我要退款。”“订单什么时候发货”“帮我改一下地址。”你不一定需要一个通用聊天大模型可能只需要识别用户属于哪个业务意图再把关键字段抓出来。EasyAi 生态里的 sayOrder 就是这类方向的封装项目它可以分析用户输入的语义通过 typeID 区分用户意图并抓取系统关心的关键词。这种能力在企业系统里很常见比如工单分类、售后分流、客服预处理、表单自动补全、内部流程引导等。它不追求“什么都能聊”追求的是在你的固定业务里把用户真正想办的事识别出来。EasyAi 和 Spring AI 是什么关系很多人容易把这两个混在一起其实它们不是一类东西。Spring AI 更像是 AI 集成框架擅长帮你接大模型、接向量库、做 RAG、做 ChatClient、做 Agent 相关集成。EasyAi 更像是 AI 算法框架强调的是本地小微模型、传统图像/自然语言能力、Java 原生算法实现。可以这么理解| 维度 | EasyAi | Spring AI || --- | --- | --- || 核心定位 | AI 算法框架 | AI 集成框架 || 主要对象 | 小微模型、图像/NLP/传统算法 | LLM、RAG、Agent、模型 API || 运行方式 | Java 工程内运行 | 对接外部模型和基础设施 || 适合场景 | 本地识别、业务定制模型、边缘/垂直场景 | 知识库问答、聊天应用、大模型编排 |所以它俩不是敌人更像两个不同工种一个负责把小模型嵌进业务一个负责把大模型接进应用。真要做复杂系统完全可以组合起来比如 EasyAi 做本地图像预处理Spring AI 再接大模型做文本解释和流程编排。写这种项目最重要的是别吹过头写开源项目推广文最怕一激动就写成万能神器。EasyAi 值得关注但它不是要替代所有 Python AI 生态更像是给 Java 开发者补上一条路线在业务场景明确、模型规模可控、团队主要技术栈是 Java 的情况下用更低的工程摩擦把 AI 能力塞进现有系统这已经足够有价值。官方 README 提到的图像检测、图像抠图、seeFace 人脸识别、sayOrder 智能客服已经能支撑一篇很有看点的文章。源码里能看到 yolo、unet、transFormer、randomForest、pso、matrixTools 等模块也能说明它不是一个只会调接口的壳。CUDA 扩展在官方文档里也有说明可以作为“可选增强”来写这些点都是真材实料真实反而更有说服力。如果你想试建议这样开始第一步先跑官方 Demo不要一上来就研究所有算法先看图像检测或者自然语言快速开始先让它在你的 Java 工程里跑起来。第二步选一个窄场景不要上来就做“通用智能客服”先做一个很小的问题比如识别某类商品、判断咨询类型、抓取一句话里的业务关键词、给某个流程做分类等越窄越容易成功。第三步再理解 DIO 模式EasyAi 文档里有一个 DIO 开发模式即数据、输入、输出、训练状态、执行状态。这个思路很适合 Java 程序员入门它会让你意识到AI 开发不是玄学也可以被拆成工程流程。写在最后过去很长一段时间里Java 程序员在 AI 领域的处境有点尴尬业务系统是 Java 写的权限、订单、支付、流程、消息、后台全是 Java 扛着但一涉及“智能”两个字就好像必须去另一个技术世界拜码头。EasyAi 想做的事情很朴素就是让 Java 程序员用自己熟悉的方式在自己熟悉的生态里解决一部分真实 AI 问题。不用一上来换语言不用一上来配一堆环境不用一上来拆一套跨语言服务先从 Maven 依赖开始先从一个小模型开始先从一个业务问题开始这就是 EasyAi 最值得关注的地方。它不是让 Java 程序员去蹭 AI 的热闹而是在告诉你别只把 AI 当成外部接口试着让 AI 能力长进你的 Java 业务系统里。项目地址 https://gitee.com/dromara/easyAi.git官方文档 https://www.myeasyai.cn/#/README案例 Demo https://gitee.com/ldp_dpsmax/easy-ai-demo