1. 引言2024 年以来大模型应用的开发范式从「手工拼接 Prompt」快速演进为「框架驱动的工程化开发」。对于后端工程师尤其是 Java 技术栈团队选择一款合适的 AI 框架决定了项目初期的开发效率、中期的可维护性以及后期的扩展能力。市面上的 AI 框架数量不少但真正值得在后端工程中认真评估的主要有四个方向Spring AISpring 官方出品深度融入 Spring 生态适合传统 Java 企业级应用。LangChain4jLangChain 的 Java 移植版API 设计贴近 LangChain 思想生态活跃。AgentScope阿里巴巴开源的智能体Agent框架强调多智能体协作与可视化。Embabel轻量级嵌入式 AI 编排库追求零依赖、低侵入、易测试国内较新出现的小众方案。本文不会停留在「概念介绍」层面而是通过同一个业务场景——智能客服问题分流与回答——分别用四个框架实现并给出可运行的代码。最后从架构、性能、生态、学习曲线、生产落地等维度做横向对比帮助你做出选型决策。2. 四大框架速览在写代码之前先建立整体认知。维度Spring AILangChain4jAgentScopeEmbabel出品方Spring 官方社区LangChain Java 版阿里巴巴社区/轻量方案主要语言JavaJavaPython核心Java定位企业级 Spring 集成通用 LLM 应用开发多智能体系统嵌入式轻量编排依赖侵入高依赖 Spring Boot中独立可用低Python 包极低核心无外部依赖多模型支持OpenAI、Azure、Ollama、通义等非常丰富30阿里系模型优先适配主流 OpenAI 兼容接口RAG 能力内置内置且成熟可组合实现轻量实现智能体Agent基础支持支持 Function Calling核心能力基础编排学习曲线平缓Spring 开发者友好中等中等需 Python低生产成熟度高高中高中低较新一句话总结你已经是 Spring 深度用户希望无缝集成 →Spring AI。你想要 LangChain 同款理念、不受 Spring 绑定、生态最全 →LangChain4j。你的核心诉求是「多智能体协作 / Agent 编排」→AgentScope。你想要极致轻量、快速嵌入现有系统、方便测试 →Embabel。3. 统一实战场景与环境准备3.1 业务场景我们要实现一个「智能客服分流系统」需求如下用户输入一句话如我的订单什么时候发货。系统先做意图识别判断属于「物流查询」「退款咨询」「技术故障」中的哪一类。根据意图调用对应工具模拟查询订单、查询退款进度、查询系统状态。最后用大模型整理成自然语言答复返回给用户。这是一个典型的「意图识别 Function Calling 结果汇总」链路能充分体现框架的核心能力差异。3.2 通用环境模型服务本文统一使用 OpenAI 兼容接口可替换为 Ollama 本地模型、通义千问、DeepSeek 等。BASE_URLhttps://api.openai.com或本地 Ollama 的http://localhost:11434MODEL_NAMEgpt-4o-mini可替换为qwen-plus、deepseek-chatAPI_KEY你的密钥JDK17Spring AI 与 LangChain4j 建议 17 以上构建工具Maven后文代码中的密钥统一用环境变量注入避免硬编码。4. Spring AI 实战4.1 引入依赖dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai-spring-boot-starter/artifactIdversion1.0.0/version/dependency同时需要在pom.xml中添加 Spring AI 的里程碑仓库repositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/url/repository/repositories4.2 配置文件在application.yml中配置模型接入spring:ai:openai:base-url:${AI_BASE_URL:https://api.openai.com}api-key:${AI_API_KEY}chat:options:model:${AI_MODEL:gpt-4o-mini}temperature:0.34.3 定义工具函数Spring AI 通过Tool注解将普通 Java 方法暴露给大模型importorg.springframework.ai.tool.annotation.Tool;importorg.springframework.ai.tool.annotation.ToolParam;importorg.springframework.stereotype.Component;ComponentpublicclassCustomerServiceTools{Tool(namequery_order_status,description根据订单号查询物流状态)publicStringqueryOrderStatus(ToolParam(description订单号)StringorderId){// 模拟数据库查询return订单 orderId 已于 2026-10-06 发货预计 10-09 送达物流单号 SF1234567890;}Tool(namequery_refund_progress,description根据订单号查询退款进度)publicStringqueryRefundProgress(ToolParam(description订单号)StringorderId){return订单 orderId 的退款申请已审核通过预计 3 个工作日内原路退回;}Tool(namecheck_system_health,description检查系统当前运行状态)publicStringcheckSystemHealth(){return系统运行正常所有服务在线最近一次故障发生在 30 天前;}}4.4 编写服务类importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.stereotype.Service;ServicepublicclassCustomerServiceAgent{privatefinalChatClientchatClient;publicCustomerServiceAgent(ChatClient.Builderbuilder,CustomerServiceToolstools){this.chatClientbuilder.defaultSystem( 你是一名电商客服助手。请先判断用户意图属于以下三类之一 1. 物流查询用户询问发货、物流、配送。 2. 退款咨询用户询问退款、退货、金额退回。 3. 技术故障用户反馈系统异常、无法使用。 判断意图后调用对应工具并根据工具返回结果整理成友好、简洁的答复。 如果无法判断请直接询问用户补充信息。 ).defaultTools(tools).build();}publicStringchat(StringuserMessage){returnchatClient.prompt().user(userMessage).call().content();}}4.5 控制器与启动类importorg.springframework.web.bind.annotation.*;RestControllerRequestMapping(/api/chat)publicclassChatController{privatefinalCustomerServiceAgentagent;publicChatController(CustomerServiceAgentagent){this.agentagent;}PostMappingpublicStringchat(RequestBodyChatRequestrequest){returnagent.chat(request.message());}publicrecordChatRequest(Stringmessage){}}启动类使用标准的 Spring Boot 入口SpringBootApplicationpublicclassSpringAiDemoApplication{publicstaticvoidmain(String[]args){org.springframework.boot.SpringApplication.run(SpringAiDemoApplication.class,args);}}4.6 运行效果请求POST /api/chat携带{message:我的订单 A10086 什么时候发货}大模型会先判断为「物流查询」意图调用queryOrderStatus(A10086)最终返回类似您的订单 A10086 已于 2026-10-06 发货物流单号 SF1234567890 预计 10-09 送达请您留意物流信息。Spring AI 小结与 Spring Boot 的集成体验非常顺滑Tool注解让函数调用变得简单适合已深度使用 Spring 的团队。缺点是必须引入 Spring 全家桶对非 Spring 项目侵入性较大。5. LangChain4j 实战5.1 引入依赖LangChain4j 模块化程度很高本场景需要引入 OpenAI 集成和 CoredependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-open-ai/artifactIdversion1.0.0/version/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j/artifactIdversion1.0.0/version/dependency5.2 定义工具LangChain4j 使用Tool注解来自langchain4j核心包importdev.langchain4j.agent.tool.Tool;importdev.langchain4j.agent.tool.P;publicclassCustomerServiceTools{Tool(根据订单号查询物流状态)publicStringqueryOrderStatus(P(订单号)StringorderId){return订单 orderId 已于 2026-10-06 发货预计 10-09 送达物流单号 SF1234567890;}Tool(根据订单号查询退款进度)publicStringqueryRefundProgress(P(订单号)StringorderId){return订单 orderId 的退款申请已审核通过预计 3 个工作日内原路退回;}Tool(检查系统当前运行状态)publicStringcheckSystemHealth(){return系统运行正常所有服务在线最近一次故障发生在 30 天前;}}5.3 构建 Agent 服务LangChain4j 提供了 AI Services 这种声明式编程模型也可以使用链式 API。这里展示更灵活的链式 APIimportdev.langchain4j.memory.chat.MessageWindowChatMemory;importdev.langchain4j.model.openai.OpenAiChatModel;importdev.langchain4j.service.AiServices;publicclassCustomerServiceAgent{publicstaticStringchat(StringuserMessage){// 1. 构建模型OpenAiChatModelmodelOpenAiChatModel.builder().baseUrl(System.getenv(AI_BASE_URL)).apiKey(System.getenv(AI_API_KEY)).modelName(System.getenv(AI_MODEL)null?gpt-4o-mini:System.getenv(AI_MODEL)).temperature(0.3).build();// 2. 使用 AI Services 声明式绑定工具AssistantassistantAiServices.builder(Assistant.class).chatLanguageModel(model).tools(newCustomerServiceTools()).chatMemory(MessageWindowChatMemory.withMaxMessages(10)).build();returnassistant.answer(userMessage);}interfaceAssistant{dev.langchain4j.service.SystemMessage( 你是一名电商客服助手。请先判断用户意图属于以下三类之一 1. 物流查询用户询问发货、物流、配送。 2. 退款咨询用户询问退款、退货、金额退回。 3. 技术故障用户反馈系统异常、无法使用。 判断意图后调用对应工具并根据工具返回结果整理成友好、简洁的答复。 如果无法判断请直接询问用户补充信息。 )Stringanswer(StringuserMessage);}}5.4 运行入口publicclassLangChain4jDemo{publicstaticvoidmain(String[]args){StringreplyCustomerServiceAgent.chat(我的订单 A10086 什么时候发货);System.out.println(reply);}}5.5 LangChain4j 特色能力演示LangChain4j 在 RAG 方面非常成熟这里补一段极简的向量检索示例展示其生态优势importdev.langchain4j.data.document.Document;importdev.langchain4j.data.document.splitter.DocumentSplitters;importdev.langchain4j.data.segment.TextSegment;importdev.langchain4j.memory.chat.MessageWindowChatMemory;importdev.langchain4j.model.embedding.EmbeddingModel;importdev.langchain4j.model.openai.OpenAiEmbeddingModel;importdev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;importdev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;// 简易 RAG将知识库切片、向量化、检索增强EmbeddingModelembeddingModelOpenAiEmbeddingModel.builder().baseUrl(System.getenv(AI_BASE_URL)).apiKey(System.getenv(AI_API_KEY)).modelName(text-embedding-3-small).build();InMemoryEmbeddingStoreTextSegmentstorenewInMemoryEmbeddingStore();DocumentdocDocument.from(退换货政策支持 7 天无理由退货质量问题 15 天内可换新。);varsegmentsDocumentSplitters.recursive(300,50).split(doc);store.addAll(segments.stream().map(seg-embeddingModel.embed(seg).content()).map(embedding-dev.langchain4j.data.embedding.Embedding.from(embedding)).toList(),segments);EmbeddingStoreContentRetrieverretrieverEmbeddingStoreContentRetriever.builder().embeddingStore(store).embeddingModel(embeddingModel).maxResults(3).build();LangChain4j 小结API 设计贴近 LangChain 原版理念模块化极好既可以轻量使用也能构建复杂 RAG/Agent 链路。不强制绑定 Spring对纯 Java 项目和微服务都友好。缺点是配置项较多初次上手需要理解其模块划分。6. AgentScope 实战AgentScope 是阿里巴巴开源的智能体框架核心语言是 Python在 Java 生态中需要借助 Python 服务或网关调用。如果你的团队以 Java 为主这一点需要重点评估。6.1 安装pipinstallagentscope6.2 配置模型AgentScope 支持通过配置文件或代码注册模型。这里使用代码方式注册一个 OpenAI 兼容模型importagentscopefromagentscope.modelimportOpenAIChatModelfromagentscope.agentimportReActAgentfromagentscope.toolimportToolkit,ToolResponse# 初始化 AgentScopeagentscope.init()# 注册 OpenAI 兼容模型modelOpenAIChatModel(config_namemy_qwen,model_nameqwen-plus,api_key你的API_KEY,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)6.3 定义工具AgentScope 的 Toolkit 允许把普通 Python 函数包装成工具fromagentscope.toolimportToolkitdefquery_order_status(order_id:str)-str:根据订单号查询物流状态。returnf订单{order_id}已于 2026-10-06 发货预计 10-09 送达物流单号 SF1234567890defquery_refund_progress(order_id:str)-str:根据订单号查询退款进度。returnf订单{order_id}的退款申请已审核通过预计 3 个工作日内原路退回defcheck_system_health()-str:检查系统当前运行状态。return系统运行正常所有服务在线最近一次故障发生在 30 天前toolkitToolkit()toolkit.register_tool_function(query_order_status)toolkit.register_tool_function(query_refund_progress)toolkit.register_tool_function(check_system_health)6.4 构建多智能体AgentScope 的核心优势是多智能体协作。我们可以构建两个 Agent一个负责意图识别一个负责执行工具并回复fromagentscope.agentimportReActAgentfromagentscope.messageimportMsg# 意图识别智能体intent_agentReActAgent(name意图识别员,modelmodel,sys_prompt你是客服意图识别专家。 将用户输入归类为以下之一物流查询、退款咨询、技术故障。 只输出意图名称不要输出其他内容。,)# 工具执行智能体service_agentReActAgent(name客服执行员,modelmodel,toolkittoolkit,sys_prompt你是客服执行员。根据意图调用相应工具查询信息 并将结果整理成友好、简洁的答复返回给用户。,)# 编排意图识别 - 工具执行defhandle_user_message(user_input:str)-str:intent_msgMsg(user,user_input,roleuser)intent_resultintent_agent(intent_msg)intentintent_result.get_text_content().strip()prompt