跳到主要内容Java 接入阿里百炼大模型实战指南 | 极客日志JavaAIjava算法
Java 接入阿里百炼大模型实战指南
介绍在 Java 项目中接入阿里百炼大模型的四种主流方式:HTTP 原生调用、官方 SDK、Spring AI 以及 LangChain4j。涵盖项目初始化、依赖整合、API Key 安全配置及本地模型部署(Ollama)。对比了各方案的开发难度、适配性及适用场景,帮助开发者根据需求选择合适的集成路径。
灵魂摆渡0 浏览 项目初始化
环境准备
本项目基于 Spring Boot 3 和 Spring AI 开发框架,需安装 JDK 17 或 21。
新建配置
在 IDE 中新建 SpringBoot 项目并配置基础参数。


整合依赖
引入 Hutool 工具库
Hutool 是一个小而全的 Java 工具类库,通过静态方法封装降低 API 学习成本。通过 Maven 引入:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.38</version>
</dependency>
Knife4j 接口文档
Knife4j 是 SpringBoot/SpringCloud 接口文档生成工具,是 Swagger/OpenAPI 的增强升级版。
官方文档:https://doc.xiaominfo.com/knife4j/
在 pom.xml 中添加依赖:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
</version>
</dependency>
更改 application.properties 为 application.yml 并配置服务器信息和 knife4j:
spring:
application:
name: travel-ai-agent
server:
port: 8080
servlet:
context-path: /api
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: "default"
paths-to-match: "/**"
packages-to-scan: com.yugongyun.travelaiagent.controller
knife4j:
enable: true
production: false
basic:
enable: false
username: admin
password: admin
setting:
language: zh_cn
enableFooter: true
enable-footer-custom: true
在项目中调用 AI 大模型
主流接入方案包括 HTTP 接入、SDK 接入、Spring AI 和 LangChain4j。
HTTP 实现接入
HTTP 接入是通过 Http 协议发送请求获取响应结果的方式,需熟悉官方接口文档及 Java HTTP 请求处理。
使用 AI 助手将 cURL 转换为接口请求代码。在项目中新建测试类,代码如下:
@SpringBootTest
public class AiInvokeTest {
@Value("${spring.ai.dashscope.api-key}")
private String APIKEY;
private static final String URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation";
@Test
void testHttpData() {
JSONObject requestBody = new JSONObject();
requestBody.set("model", "qwen-plus");
JSONObject input = new JSONObject();
JSONObject systemMessage = new JSONObject();
systemMessage.set("role", "system");
systemMessage.set("content", "You are a helpful assistant.");
JSONObject userMessage = new JSONObject();
userMessage.set("role", "user");
userMessage.set("content", "你是谁?");
input.set("messages", JSONUtil.createArray().put(systemMessage).put(userMessage));
requestBody.set("input", input);
JSONObject parameters = new JSONObject();
parameters.set("result_format", "message");
requestBody.set("parameters", parameters);
String response = HttpRequest.post(URL)
.header("Authorization", "Bearer " + APIKEY)
.header("Content-Type", "application/json")
.body(requestBody.toString())
.timeout(30000)
.execute()
.body();
System.out.println("Response: " + response);
}
}
配置 APIKEY 避免泄露
1. 配置环境变量
spring:
ai:
dashscope:
api-key: ${DASH_SCOPE_API_KEY}
在操作系统中配置环境变量 DASH_SCOPE_API_KEY,值为阿里云百炼平台的 API-KEY。修改后需重启应用生效。
2. 配置文件分离
利用 Spring Boot Profile 实现本地配置文件密钥不上传到远程仓库。
添加 .gitignore 规则,忽略敏感配置文件(如 application-dev.yml)。
在 application.yml 中激活 dev profile:
spring:
profiles:
active: dev
在 src/resources 下新建 application-dev.yml 存放敏感信息:
spring:
ai:
dashscope:
api-key: 你的 APIKEY
SDK 实现接入
SDK 是官方提供的集成方式,提供完善的类型支持和错误处理机制。
安装 DashScope Java SDK,推荐版本 2.19.5:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<version>2.19.5</version>
</dependency>
@Test
void testSDKInvoke() {
try {
GenerationResult result = callWithMessage("qwen-plus", "你是谁");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("错误信息:" + e.getMessage());
}
}
public GenerationResult callWithMessage(String modelName, String prompt) throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content(prompt)
.build();
GenerationParam param = GenerationParam.builder()
.apiKey(APIKEY)
.model(modelName)
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
SpringAI 实现接入
Spring AI 旨在简化大型语言模型在 Spring 应用中的集成过程。对于阿里系大模型,推荐使用 Spring AI Alibaba 框架。
修改 pom.xml 添加 Spring AI Alibaba 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
@Value("${spring.ai.dashscope.api-key}")
String APIKEY;
@Resource
private ChatModel dashscopeChatModel;
@Test
void testDashScopeInvoke() {
String result = dashscopeChatModel.call("你好你是谁");
System.out.println(result);
}
可通过配置文件修改调用的大模型,例如设置 spring.ai.dashscope.chat.options.model 为 deepseek-v3.1。
LangChain4j 实现接入
LangChain4j 是专为 JVM 技术栈打造的 LLM 应用开发框架。
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope</artifactId>
<version>1.0.0-beta2</version>
</dependency>
@Test
void testLangChain4j() {
ChatLanguageModel model = QwenChatModel.builder()
.apiKey(APIKEY)
.modelName("deepseek-v3.1")
.build();
String result = model.chat("你好");
System.out.println(result);
}
建议通过 Git 分支管理测试代码,避免影响主分支。
各种接入方式对比
| 接入方式 | 核心特点 | 开发难度 | 大模型适配性 | 功能丰富度 | 核心适用场景 |
|---|
| HTTP 原生接入 | 纯原生请求,无依赖、链路短、性能最好 | ⭐⭐⭐⭐(高) | 适配所有模型,需手动适配各厂商参数 | 仅基础问答 / 生成 | 极致轻量、嵌入式、性能优先 |
| 官方 SDK 接入 | 厂商封装的 Java 工具包,轻量,一键调用 | ⭐(极低) | 强绑定单一厂商,切换模型需重构 | 仅基础问答 / 生成 | 快速 demo、单一模型对接 |
| Spring AI 接入 | Spring 官方出品,配置化开发,无缝适配 Spring 生态 | ⭐⭐(低) | 统一适配多厂商,配置切换无代码改动 | 基础问答 + 简易上下文 + 轻量 RAG | SpringBoot 项目、常规业务 |
| LangChain4j 接入 | JVM 专属 LLM 框架,声明式开发,无 Spring 强依赖 | ⭐⭐(低) | 全量适配国内外模型 + 本地模型,无感切换 | 全功能:完整 RAG / 上下文 / Agent / 工具调用 | 复杂 LLM 应用、企业级知识库 |
本地部署大模型
如需更好的数据隐私控制及更低延迟,可在本地环境中部署和使用大模型。
本地安装大模型
使用开源项目 Ollama 可以快速安装大模型,支持命令行界面及 API 调用。
挑选并下载模型
| 硬件配置 | 推荐模型规模 | 典型模型 | 显存 / 内存要求 |
|---|
| 低配设备 | 1B-3.8B | Qwen2.5:1.5B、Phi3:3.8B | 4GB + 内存 |
| 主流配置 | 7B-8B | Qwen2.5:7B、Llama3.1:8B | 8-12GB 显存 |
| 高性能配置 | 13B-14B | Qwen2.5:14B、DeepSeek-R1:13B | 16GB + 显存 |
| 专业级配置 | 32B+ | Qwen2.5:32B、Llama3.3:70B | 24GB + 显存 |