Java调用大模型全景图

作为Java开发者,当你决定在项目中集成大模型能力时,第一个问题往往是:我该选哪个框架?

市面上的选择还真不少:可以自己用HTTP客户端硬撸,也可以用Spring AI这种官方框架,还有阿里云搞的Spring AI Alibaba,以及从Python圈子移植过来的LangChain4j。

这篇文章会把这几种方案掰开了揉碎了讲清楚,帮你做出明智的选择。

方案一:原生HTTP调用

最直接的方式,就是用Java的HTTP客户端直接请求大模型的API。来看个例子:

public class RawHttpCaller {

    private static final String API_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";

    public String chat(String message, String apiKey) throws Exception {
        String requestBody = """
            {
                "model": "qwen-plus",
                "messages": [
                    {"role": "system", "content": "你是一个有帮助的助手"},
                    {"role": "user", "content": "%s"}
                ]
            }
            """.formatted(message);

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(API_URL))
                .header("Content-Type", "application/json")
                .header("Authorization", "Bearer " + apiKey)
                .POST(HttpRequest.BodyPublishers.ofString(requestBody))
                .build();

        HttpResponse<String> response = client.send(request,
                HttpResponse.BodyHandlers.ofString());

        // 还需要解析JSON提取实际内容...
        return parseResponse(response.body());
    }
}

这种方式的问题在哪?

第一,代码冗余度高。每次调用都要手动构建JSON请求体、设置Header、解析响应。如果项目中有十几个地方要调用大模型,这些样板代码会让你吐血。

第二,切换模型成本高。不同厂商的API格式不一样,OpenAI是一套、阿里云是一套、DeepSeek又是一套。今天用通义千问,明天老板说换成GPT-5,又得改一堆代码。

第三,高级功能难实现。流式输出、对话记忆、工具调用这些功能,用原生HTTP实现起来非常繁琐。

适用场景:学习理解大模型API原理,或者只有极简单的调用需求且不想引入额外依赖。

方案二:Spring AI

Spring AI是Spring官方推出的AI开发框架,目标是让Java开发者能用熟悉的Spring风格开发AI应用。

核心设计理念

Spring AI的设计哲学可以用三个词概括:统一抽象、开箱即用、可扩展性

它把各种大模型的API差异屏蔽掉了,你只需要面向统一的接口编程,底层对接的是OpenAI还是DeepSeek,代码基本不用改。

2-Learning/05-项目/08-企业级项目深读/01-SuperAgent/06-系统讲解AI相关技术/06-SpringAI详细解析/assets/FuafZg-ceEN_4qXpaUWx80YrGoqO-66beae92

代码长什么样

用 Spring AI 实现同样的功能,代码量能可以直接砍半了:

@Service
public class OrderAssistant {

    private final ChatClient chatClient;

    public OrderAssistant(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    public String analyzeOrder(String orderInfo) {
        return chatClient.prompt()
                .system("你是电商平台的订单分析助手,擅长解读订单数据")
                .user("请分析这个订单的情况:" + orderInfo)
                .call()
                .content();
    }
}

Spring AI的能力边界

截至1.1.x版本,Spring AI已经覆盖了这些核心功能:

功能模块 说明
Chat Model 对话模型统一接口
Embedding Model 文本向量化
Prompt Templates 提示词模板管理
Structured Output 结构化输出解析
Chat Memory 对话历史记忆
Tool Calling 工具/函数调用
RAG支持 检索增强生成
向量数据库集成 多种向量库适配

适用场景:已有Spring Boot项目需要集成AI能力,追求快速开发和代码简洁,不需要复杂的Agent编排。

方案三:Spring AI Alibaba

Spring AI Alibaba是阿里云在Spring AI基础上的增强版本,专门针对国内开发者和阿里云生态做了深度优化。

和Spring AI是什么关系?

简单说,Spring AI Alibaba 兼容Spring AI的所有能力,同时额外提供了企业级增强功能。

2-Learning/05-项目/08-企业级项目深读/01-SuperAgent/06-系统讲解AI相关技术/06-SpringAI详细解析/assets/Fmax6DPVfrdJk6iXk8eOXZgr_vVu-73f82daf

最大的亮点:Graph工作流引擎

在1.0 GA版本之后,Spring AI Alibaba引入了受LangGraph启发的工作流编排能力。这意味着你可以用图的方式定义复杂的AI处理流程:

// 伪代码示意,展示Graph的设计思想
Graph orderProcessGraph = Graph.builder()
    .addNode("intentRecognition", intentRecognizer)
    .addNode("orderQuery", orderQueryAgent)
    .addNode("refundProcess", refundAgent)
    .addNode("humanHandoff", humanAgent)
    .addEdge("intentRecognition", "orderQuery",
             condition -> condition.getIntent().equals("查询"))
    .addEdge("intentRecognition", "refundProcess",
             condition -> condition.getIntent().equals("退款"))
    .addEdge("intentRecognition", "humanHandoff",
             condition -> condition.getIntent().equals("投诉"))
    .build();

这在构建智能客服、自动化审批等复杂业务场景时非常有用。

Graph 工作流引擎特别适合以下场景:智能客服多轮意图识别、自动化审批流程、多步骤数据处理管道,以及需要条件分支和循环的复杂 AI 流程。

接入百炼平台

如果用的是阿里云的模型服务,Spring AI Alibaba提供了开箱即用的支持:

<dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    <version>1.1.0.0</version>
</dependency>
spring:
  ai:
    dashscope:
      api-key: ${AI_DASHSCOPE_API_KEY}

适用场景:使用阿里云服务、需要构建复杂Agent或多步骤工作流、对可观测性和稳定性有较高要求的企业级项目。

方案四:LangChain4j

LangChain4j是LangChain的Java版本,如果之前接触过Python的AI开发,对LangChain应该不陌生。

设计特点

LangChain4j的核心理念是提供两层抽象:

低层次API:提供细粒度的控制,包括模型调用、提示词模板、记忆管理、文档加载器等基础组件,你可以自由组合它们。

高层次API:通过AI Services机制,让你只需要定义接口,具体实现由框架代理完成,类似于Spring Data JPA的风格。

// AI Service示例:只需定义接口
interface ProductRecommender {

    @SystemMessage("你是电商平台的商品推荐专家")
    String recommend(@UserMessage String userPreference);
}

// 框架自动生成实现
ProductRecommender recommender = AiServices.create(ProductRecommender.class, chatModel);
String result = recommender.recommend("我喜欢户外运动,预算500以内");

和Spring AI的差异

维度 LangChain4j Spring AI
Spring依赖 可独立使用 深度集成Spring生态
设计风格 偏Python LangChain风格 纯Spring风格
Agent支持 内置ReAct等模式 需手动实现或用Alibaba版
社区生态 国际化,对接模型丰富 Spring社区支持强
学习曲线 熟悉LangChain的人上手快 Spring开发者更亲切

适用场景:非Spring项目、熟悉Python LangChain想快速迁移、需要更灵活的Agent实现方式。

选型决策树

面对这四种方案,怎么选?我画了张决策图帮你理清思路:

2-Learning/05-项目/08-企业级项目深读/01-SuperAgent/06-系统讲解AI相关技术/06-SpringAI详细解析/assets/FqW_wXnEqb6-7RuN3qPdn47L_62F-2c0f3c9f

横向对比总结

把几个方案的关键指标放在一起对比:

对比维度 原生HTTP Spring AI Spring AI Alibaba LangChain4j
代码简洁度
学习成本
模型切换成本
Agent能力 基础 强(Graph) 强(ReAct)
阿里云集成 手动 一般 原生支持 手动
社区活跃度 -
生产可用性 取决于实现

我的建议

如果你问我怎么选,我的建议是:

  • 大多数Spring Boot项目:直接用Spring AI,官方维护、集成简单、功能够用
  • 需要复杂智能体:Spring AI Alibaba或LangChain4j,看你更熟悉哪种风格
  • 用阿里云全家桶:无脑选Spring AI Alibaba,生态集成是真的香
  • 非Spring项目:LangChain4j是最佳选择
  • 学习研究目的:建议先用原生HTTP理解原理,再用框架提效

技术选型没有银弹,关键是找到最适合你团队和项目的那个。希望小伙伴看完对模型能有更深入的理解!


企业级项目导航:⬅️ 01-Advisor拦截器机制揭秘 | 02-Java调用大模型全景图 | ➡️ 03-Spring AI快速入门实战