Java接入常用大模型API的实战对比

 更新时间:2026年04月26日 09:38:42   作者:花千树_010  
这篇文章主要为大家详细介绍了Java接入常用大模型API的实战对比,主要是Ollama(本地),阿里云通义千问,OpenAI和豆包 Coze,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

适合人群:需要接入大模型 API 的 Java 开发者,或正在做模型选型的工程师

支持模型:Ollama(本地)、阿里云通义千问、OpenAI、豆包 Coze 

为什么需要接入多家模型?

  • 成本:不同任务用不同模型,简单任务用便宜模型,复杂任务用高能力模型
  • 可用性:主模型故障时自动降级到备用模型
  • 效果:中文场景用国内模型,代码场景用专业代码模型
  • 合规:部分企业数据不能出境,需要本地部署模型

支持的模型对比

模型供应商特点适用场景
qwen2.5:0.5bOllama(本地)免费、无网络依赖、0延迟开发测试、隐私数据
qwen-plus阿里云中文效果好、稳定、价格低国内生产环境
gpt-4OpenAI能力最强高质量任务
Coze Bot字节跳动可自定义知识库和插件企业定制

方式1:本地 Ollama(推荐开发阶段使用)

优点:完全免费、数据不出本地、无网络依赖

前提:安装 Ollama 并拉取模型

ollama pull qwen2.5:0.5b   # 轻量版,适合测试
ollama pull llama3:8b       # 8B 参数,效果更好
ChatOllama llm = ChatOllama.builder()
    .model("qwen2.5:0.5b")
    // .baseUrl("http://localhost:11434")  // 默认地址,可改为远程 Ollama
    .build();
// 流式调用
AIMessageChunk chunk = llm.stream("用一句话介绍 Java");
while (chunk.getIterator().hasNext()) {
    System.out.print(chunk.getIterator().next().getContent());
}
// 同步调用
AIMessage result = llm.invoke("用一句话介绍 Java");
System.out.println(result.getContent());

方式2:阿里云通义千问

配置

# application.yml
spring:
  ai:
    aliyun:
      api-key: ${ALIYUN_KEY}
export ALIYUN_KEY=sk-xxx  # 从阿里云控制台获取
ChatAliyun llm = ChatAliyun.builder()
    .model("qwen-plus")    // 可选:qwen-turbo(最快最便宜)/ qwen-plus / qwen-max(最强)
    .build();

AIMessage result = llm.invoke("什么是 Spring Boot?");
System.out.println(result.getContent());

模型选择建议

模型速度能力价格
qwen-turbo最快一般最便宜
qwen-plus中等
qwen-max最强最贵

方式3:模型动态切换

用条件链在运行时选择模型,适合多租户场景(不同用户走不同模型):

@Test
public void modelSwitcher() {
    ChatOllama freeModel = ChatOllama.builder().model("qwen2.5:0.5b").build();
    ChatAliyun paidModel = ChatAliyun.builder().model("qwen-plus").build();

    FlowInstance chain = chainActor.builder()
        .next(PromptTemplate.fromTemplate("${question}"))
        .next(
            Info.c("tier == 'free'", freeModel),  // 免费用户
            Info.c("tier == 'paid'", paidModel),  // 付费用户
            Info.c(freeModel)                      // 默认
        )
        .next(new StrOutputParser())
        .build();

    // 免费用户
    chainActor.invoke(chain, Map.of("question", "什么是泛型?", "tier", "free"));
    // 付费用户
    chainActor.invoke(chain, Map.of("question", "什么是泛型?", "tier", "paid"));
}

方式4:模型降级(Fallback)

主模型故障时自动切换备用,保障高可用:

@Test
public void modelFallback() {
    ChatAliyun primaryModel = ChatAliyun.builder().model("qwen-plus").build();
    ChatOllama fallbackModel = ChatOllama.builder().model("qwen2.5:0.5b").build();

    String answer;
    try {
        AIMessage result = primaryModel.invoke(question);
        answer = "[主模型] " + result.getContent();
    } catch (Exception e) {
        System.out.println("主模型失败,切换备用:" + e.getMessage());
        AIMessage result = fallbackModel.invoke(question);
        answer = "[备用模型] " + result.getContent();
    }
}

方式5:同一套代码,切换不同模型只需一行

j-langchain 的核心价值:所有模型实现同一套接口(BaseLLM),链的构建代码完全一样:

// 只需修改这一行即可切换模型:
ChatOllama llm = ChatOllama.builder().model("qwen2.5:0.5b").build();
// ChatAliyun llm = ChatAliyun.builder().model("qwen-plus").build();
// ChatOpenAI llm = ChatOpenAI.builder().model("gpt-4").build();

// 以下代码完全不变:
FlowInstance chain = chainActor.builder()
    .next(PromptTemplate.fromTemplate("${question}"))
    .next(llm)                     // ← 换模型只改这里
    .next(new StrOutputParser())
    .build();

chainActor.invoke(chain, Map.of("question", "什么是 Java?"));

各模型接入配置速查

Ollama(本地)

# 无需配置,默认 http://localhost:11434

阿里云通义千问

aliyun:
  api-key: ${ALIYUN_KEY}

OpenAI / 兼容 OpenAI 的 API

openai:
  api-key: ${OPENAI_KEY}
  base-url: https://api.openai.com/v1  # 或代理地址

豆包 Coze

coze:
  client-id: ${COZE_CLIENT_ID}
  private-key-path: ${COZE_PRIVATE_KEY_PATH}
  public-key-id: ${COZE_PUBLIC_KEY_ID}

到此这篇关于Java接入常用大模型API的实战对比的文章就介绍到这了,更多相关Java接入大模型API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot中实现JWT登录授权+无感刷新全流程

    SpringBoot中实现JWT登录授权+无感刷新全流程

    在当今的分布式系统和前后端分离架构盛行的时代,传统的基于 Session 的认证方式逐渐暴露出诸多弊端,而 JWT的出现,犹如一道曙光,为这些问题提供了完美的解决方案,本文将详细地为大家讲解 Spring Boot 整合 JWT 实现登录认证与接口授权的全流程
    2026-04-04
  • 常用Eclipse快捷方式(推荐)

    常用Eclipse快捷方式(推荐)

    下面小编就为大家带来一篇常用Eclipse快捷方式(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • java中stream去重的几种方式举例

    java中stream去重的几种方式举例

    Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列,这篇文章主要给大家介绍了关于java中stream去重的几种方式,需要的朋友可以参考下
    2023-07-07
  • SpringBoot实现防止XSS攻击的示例详解

    SpringBoot实现防止XSS攻击的示例详解

    这篇文章主要为大家详细介绍了SpringBoot如何实现防止XSS攻击,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Java排序算法之SleepSort排序示例

    Java排序算法之SleepSort排序示例

    这篇文章主要介绍了Java排序算法之SleepSort排序,结合实例形式分析了SleepSort排序的实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • java如何连续执行多条cmd命令

    java如何连续执行多条cmd命令

    这篇文章主要介绍了java如何连续执行多条cmd命令的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java处理字节的常用工具类

    java处理字节的常用工具类

    这篇文章主要为大家详细介绍了java处理字节的常用工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Spring Security中用户名和密码的验证完整流程

    Spring Security中用户名和密码的验证完整流程

    本文给大家介绍Spring Security中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
    2025-06-06
  • Java邮件发送超时时间过长问题的优化方案

    Java邮件发送超时时间过长问题的优化方案

    邮件发送是许多Java应用中常见的功能,尤其在用户注册、密码重置和系统通知中,对于一个高并发的系统来说,邮件发送的超时问题可能导致应用性能的下降,甚至影响用户体验,因此,本期我们将讨论Java邮件发送超时时间过长 的问题,并深入探讨其成因和优化策略
    2025-06-06
  • JavaBean实体类处理外键过程解析

    JavaBean实体类处理外键过程解析

    这篇文章主要介绍了JavaBean实体类处理外键过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论