☰
Spring AI、LangChain4j、AgentScope、Embabel 四大 AI 框架深度对比与代码实战
2026/10/8 7:04:42 网站建设 项目流程

1. 引言

2024 年以来,大模型应用的开发范式从「手工拼接 Prompt」快速演进为「框架驱动的工程化开发」。对于后端工程师,尤其是 Java 技术栈团队,选择一款合适的 AI 框架决定了项目初期的开发效率、中期的可维护性以及后期的扩展能力。

市面上的 AI 框架数量不少,但真正值得在后端工程中认真评估的,主要有四个方向:

  • Spring AI:Spring 官方出品,深度融入 Spring 生态,适合传统 Java 企业级应用。
  • LangChain4j:LangChain 的 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 业务场景

我们要实现一个「智能客服分流系统」,需求如下:

  1. 用户输入一句话(如"我的订单什么时候发货?")。
  2. 系统先做意图识别,判断属于「物流查询」「退款咨询」「技术故障」中的哪一类。
  3. 根据意图调用对应工具(模拟查询订单、查询退款进度、查询系统状态)。
  4. 最后用大模型整理成自然语言答复返回给用户。

这是一个典型的「意图识别 + Function Calling + 结果汇总」链路,能充分体现框架的核心能力差异。

3.2 通用环境

  • 模型服务:本文统一使用 OpenAI 兼容接口(可替换为 Ollama 本地模型、通义千问、DeepSeek 等)。
    • BASE_URL:https://api.openai.com(或本地 Ollama 的http://localhost:11434)
    • MODEL_NAME:gpt-4o-mini(可替换为qwen-plus、deepseek-chat)
    • API_KEY:你的密钥
  • JDK:17+(Spring AI 与 LangChain4j 建议 17 以上)
  • 构建工具:Maven

后文代码中的密钥统一用环境变量注入,避免硬编码。


4. Spring AI 实战

4.1 引入依赖

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.0</version></dependency>

同时需要在pom.xml中添加 Spring AI 的里程碑仓库:

<repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url></repository></repositories>

4.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.3

4.3 定义工具函数

Spring AI 通过@Tool注解将普通 Java 方法暴露给大模型:

importorg.springframework.ai.tool.annotation.Tool;importorg.springframework.ai.tool.annotation.ToolParam;importorg.springframework.stereotype.Component;@ComponentpublicclassCustomerServiceTools{@Tool(name="query_order_status",description="根据订单号查询物流状态")publicStringqueryOrderStatus(@ToolParam(description="订单号")StringorderId){// 模拟数据库查询return"订单 "+orderId+" 已于 2026-10-06 发货,预计 10-09 送达,物流单号 SF1234567890";}@Tool(name="query_refund_progress",description="根据订单号查询退款进度")publicStringqueryRefundProgress(@ToolParam(description="订单号")StringorderId){return"订单 "+orderId+" 的退款申请已审核通过,预计 3 个工作日内原路退回";}@Tool(name="check_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.chatClient=builder.defaultSystem(""" 你是一名电商客服助手。请先判断用户意图,属于以下三类之一: 1. 物流查询:用户询问发货、物流、配送。 2. 退款咨询:用户询问退款、退货、金额退回。 3. 技术故障:用户反馈系统异常、无法使用。 判断意图后调用对应工具,并根据工具返回结果整理成友好、简洁的答复。 如果无法判断,请直接询问用户补充信息。 """).defaultTools(tools).build();}publicStringchat(StringuserMessage){returnchatClient.prompt().user(userMessage).call().content();}}

4.5 控制器与启动类

importorg.springframework.web.bind.annotation.*;@RestController@RequestMapping("/api/chat")publicclassChatController{privatefinalCustomerServiceAgentagent;publicChatController(CustomerServiceAgentagent){this.agent=agent;}@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 集成和 Core:

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>1.0.0</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>1.0.0</version></dependency>

5.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。这里展示更灵活的链式 API:

importdev.langchain4j.memory.chat.MessageWindowChatMemory;importdev.langchain4j.model.openai.OpenAiChatModel;importdev.langchain4j.service.AiServices;publicclassCustomerServiceAgent{publicstaticStringchat(StringuserMessage){// 1. 构建模型OpenAiChatModelmodel=OpenAiChatModel.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 声明式绑定工具Assistantassistant=AiServices.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){Stringreply=CustomerServiceAgent.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:将知识库切片、向量化、检索增强EmbeddingModelembeddingModel=OpenAiEmbeddingModel.builder().baseUrl(System.getenv("AI_BASE_URL")).apiKey(System.getenv("AI_API_KEY")).modelName("text-embedding-3-small").build();InMemoryEmbeddingStore<TextSegment>store=newInMemoryEmbeddingStore<>();Documentdoc=Document.from("退换货政策:支持 7 天无理由退货,质量问题 15 天内可换新。");varsegments=DocumentSplitters.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);EmbeddingStoreContentRetrieverretriever=EmbeddingStoreContentRetriever.builder().embeddingStore(store).embeddingModel(embeddingModel).maxResults(3).build();

LangChain4j 小结:API 设计贴近 LangChain 原版理念,模块化极好,既可以轻量使用也能构建复杂 RAG/Agent 链路。不强制绑定 Spring,对纯 Java 项目和微服务都友好。缺点是配置项较多,初次上手需要理解其模块划分。


6. AgentScope 实战

AgentScope 是阿里巴巴开源的智能体框架,核心语言是 Python,在 Java 生态中需要借助 Python 服务或网关调用。如果你的团队以 Java 为主,这一点需要重点评估。

6.1 安装

pipinstallagentscope

6.2 配置模型

AgentScope 支持通过配置文件或代码注册模型。这里使用代码方式注册一个 OpenAI 兼容模型:

importagentscopefromagentscope.modelimportOpenAIChatModelfromagentscope.agentimportReActAgentfromagentscope.toolimportToolkit,ToolResponse# 初始化 AgentScopeagentscope.init()# 注册 OpenAI 兼容模型model=OpenAIChatModel(config_name="my_qwen",model_name="qwen-plus",api_key="你的API_KEY",base_url="https://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 送达,物流单号 SF1234567890"defquery_refund_progress(order_id:str)->str:"""根据订单号查询退款进度。"""returnf"订单{order_id}的退款申请已审核通过,预计 3 个工作日内原路退回"defcheck_system_health()->str:"""检查系统当前运行状态。"""return"系统运行正常,所有服务在线,最近一次故障发生在 30 天前"toolkit=Toolkit()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_agent=ReActAgent(name="意图识别员",model=model,sys_prompt="""你是客服意图识别专家。 将用户输入归类为以下之一:物流查询、退款咨询、技术故障。 只输出意图名称,不要输出其他内容。""",)# 工具执行智能体service_agent=ReActAgent(name="客服执行员",model=model,toolkit=toolkit,sys_prompt="""你是客服执行员。根据意图调用相应工具查询信息, 并将结果整理成友好、简洁的答复返回给用户。""",)# 编排:意图识别 -> 工具执行defhandle_user_message(user_input:str)->str:intent_msg=Msg("user",user_input,role="user")intent_result=intent_agent(intent_msg)intent=intent_result.get_text_content().strip()prompt

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询