ai4j — Java AI Agentic 开发套件
面向 JDK 8+ 的统一大模型接入 SDK,一站式覆盖 Tool Calling、MCP、A2A、RAG、Agent Runtime 与内置 Coding Agent。
证据显示:SECURITY.md 明确建议不要硬编码密钥、对用户输入做校验、并在启用 Coding Agent 扩展插件前审查,README 示例从环境变量读取 API key,来源归属(Maven Central 坐标、文档链接、Apache-2.0 全文)清晰。扣分点:未提供 least_privilege 的机制性证据(工具/沙箱权限模型仅在测试 YAML 中出现沙箱配置,无文档化的权限收敛设计);无用户确认流程(工具调用确认门)文档;数据流向透明度仅有泛泛的安全提醒;依赖清单与漏洞扫描流程未在证据中;外部副作用(Coding Agent 对本地工作区的写操作)仅有提醒无防护机制说明;完全未见回滚/撤销机制文档。
证据显示:invalid-* 测试资源表明蓝图校验对非法配置(compact ratio、sandbox 缺 provider、maxTurns=0)有负向测试,自洽性尚可;Maven Central 徽章与版本号(2.4.2)一致。扣分点:依赖可用性(重试、超时、降级策略)无文档;错误信息质量与可诊断性无直接证据。
证据显示:README 明确面向 JDK 8+ 的 Java 开发者,列出 13+ 平台、Rerank、AgentFlow、VectorStore 及 CLI/TUI/ACP,多平台切换示例清晰(换 PlatformType 即可),环境适配好。扣分点:能力边界未明示(哪些平台不支持 MCP/RAG 等);触发精度(工具选择/路由行为)无文档证据;feature map 未在证据中提供内容。
证据显示:安装说明完整(Gradle/Maven、首个请求示例、文档站、CHANGELOG/CONTRIBUTING 链接);LICENSE 为完整 Apache-2.0 全文,得满分;信息架构有 CI 强制校验(docs-build.yml 验证目录规范、防止孤儿目录与 i18n 遮蔽),维护责任有 SECURITY.md 的支持版本窗口与响应时间线。扣分点:已知限制无专门文档;命名稳定性仅能从包名 io.github.lnyocly 推断,无兼容性承诺文档;CHANGELOG 内容本身未在证据中。
证据显示:30 秒首个请求示例完整可复制、多平台统一抽象降低接入成本,输出(sample output)可用。扣分点:实际执行结果未验证(静态审查);对已有竞争 SDK(LangChain4j 等)的边际价值仅有声明,无对比证据。
证据显示:README 声明均带可追溯链接(文档站、feature map、CHANGELOG),事实(JDK 8+、Apache-2.0、Maven 坐标)与推断区分清晰。扣分点:跨来源印证有限——功能声明(13+ 平台、MCP、RAG)无法在本次证据内通过代码或测试交叉验证,且示例输出是编排的(orchestrated),非执行所得。
- 发布者身份未经企业注册库验证,本次静态审查置信度为低;未执行任何代码,功能声明(多平台、MCP、RAG、Coding Agent)未经验证。
- Coding Agent CLI 会对本地工作区执行工具操作,启用 --enable 扩展前请先审查插件;建议在沙箱或受限环境中运行。
- 不要在源码或提交的配置中硬编码 API key,始终通过环境变量或密钥管理器注入。
- 接入用户输入到 Tool Call 或 MCP 载荷前自行校验和清洗——SDK 仅提供提醒,未提供强制防护机制。
- 使用前核对依赖清单并自行做供应链审查(SBOM/漏洞扫描),本次证据中未包含依赖安全流程。
- 仅最新两个次版本(2.4.x/2.3.x)获得安全修复,旧版本应升级。
这个 Agent 能做什么,适合哪些场景?
ai4j(GitHub: LnYo-Cly/ai4j)是一款面向 JDK 8+ 的 Java AI Agentic 开发套件,以 Maven Central 依赖 io.github.lnyo-cly:ai4j 发布(当前版本 2.4.2),采用 Apache-2.0 许可证。它通过统一的 PlatformType 抽象接入多家模型平台,包括 OpenAI/兼容接口、Anthropic、DashScope、Doubao、DeepSeek、Moonshot、智谱、腾讯混元、零一万物、Ollama、MiniMax、百川等,并在 README 中演示了基于 AiService、IChatService 与 ChatCompletion 的调用方式。除基础对话外,它还提供 Tool Calling、MCP、A2A 协议、RAG(含 Jina/Ollama/Doubao 的 Rerank 与 Pinecone/Qdrant/pgvector/Milvus/Redis 的 VectorStore)、AgentFlow(Dify/Coze/n8n)以及 Agent Runtime。项目同时内置一个 Coding Agent,提供 CLI / TUI / ACP 三种交互形态。切换模型平台只需替换 PlatformType 与对应 Config,其余代码保持不变,适合希望在 Java 8 及以上环境中构建 AI 应用的团队。
开发者引入 ai4j 依赖后,通过 Configuration 设置各平台 Config(如 OpenAiConfig 的 apiKey),再经 AiService.getChatService(PlatformType.OPENAI) 获取服务实例,构造 ChatCompletion 请求(指定 model 如 gpt-4o-mini 与 ChatMessage)并调用 chatCompletion 方法,从 ChatCompletionResponse 中读取返回文本。SDK 支持切换到 DashScope、DeepSeek、Ollama 等平台,仅需替换 PlatformType 与对应 Config。它还提供 Tool Calling(函数调用)、MCP 集成、A2A 协议支持、RAG 流水线(Rerank 服务:Jina/Ollama/Doubao;向量库:Pinecone/Qdrant/pgvector/Milvus/Redis)、AgentFlow 对接(Dify/Coze/n8n)与 Agent Runtime,并附带内置 Coding Agent 的 CLI / TUI / ACP 入口。
- 使用 JDK 8 的存量 Java 企业应用希望以最小改动接入多家大模型(OpenAI、DeepSeek、DashScope 等),统一 API 而不重写代码。
- 需要构建检索增强问答的团队,可利用内置 RAG 能力搭配 Pinecone、Qdrant、pgvector、Milvus 或 Redis 等向量库。
- 希望在 Java 服务中让模型调用本地函数/工具(Tool Calling)或通过 MCP 连接外部工具生态的后端开发者。
- 需要多个 AI 智能体之间互操作(A2A 协议)或对接 Dify、Coze、n8n 等 AgentFlow 平台的架构师。
- 习惯终端工作的开发者,可直接使用内置 Coding Agent 的 CLI / TUI / ACP 界面完成编码任务。
这个 Agent 有哪些优点和局限?
- 同一套代码可通过替换 PlatformType 与 Config 在十余个模型平台间切换,降低供应商锁定。
- 能力覆盖面广:Tool Calling、MCP、A2A、RAG、Rerank、向量库与 AgentFlow 集成均在同一 SDK 内提供。
- 兼容 JDK 8+,适合无法升级运行时的存量 Java 项目,这在同类 AI SDK 中较为少见。
- 附带内置 Coding Agent(CLI/TUI/ACP),开箱即可获得终端编码助手。
- Java 生态外的团队(如 Python/Node 技术栈)无法直接使用,迁移意味着重写集成层。
- RAG、向量库、AgentFlow 等能力依赖外部服务(如 Pinecone、Milvus、Redis、Dify),引入这些组件会增加部署与运维成本。
- 各平台 API Key 需自行申请与付费,模型调用成本取决于所接入的供应商。
- 除 README 与文档站外,生产级案例与基准评测证据在源材料中未提供,采用前需自行验证。
如何安装或部署这个 Agent?
Gradle:implementation 'io.github.lnyo-cly:ai4j:2.4.2';Maven:<dependency><groupId>io.github.lnyo-cly</groupId><artifactId>ai4j</artifactId><version>2.4.2</version></dependency>。运行环境要求 JDK 8 或以上。详细文档见 https://lnyo-cly.github.io/ai4j/。
如何使用这个 Agent?
1) 设置环境变量 OPENAI_API_KEY(或对应平台的密钥);2) 创建 OpenAiConfig 并 setApiKey,装入 Configuration;3) 通过 new AiService(configuration).getChatService(PlatformType.OPENAI) 获取 IChatService;4) 用 ChatCompletion.builder().model("gpt-4o-mini").message(ChatMessage.withUser("...")) .build() 构造请求;5) 调用 chatCompletion(request) 并从 response.getChoices() 读取内容。README 提供完整的可运行示例代码。
这个 Agent 与同类方案有什么区别?
README 未直接点名竞品,但其定位(Java 8+ 统一大模型接入与 Agentic 能力)与 LangChain4j、Spring AI 等 Java AI 框架属于同一生态位;若团队已深度使用 Spring Boot,可结合 ai4j 的 spring-boot 相关 Topic 评估集成方式。