尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Spring AI、LangChain4j、AgentScope、Embabel 四大 AI 框架深度对比与代码实战

Spring AI、LangChain4j、AgentScope、Embabel 四大 AI 框架深度对比与代码实战 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
返回列表