阿里云百炼是阿里云 2023 年 10 月上线的一站式 MaaS 大模型开发 & 应用全链路平台,集合模型调用、微调、RAG 知识库、Agent 智能体、低代码应用搭建、API 服务,个人 / 企业开发者通用。
官网地址:大模型服务平台百炼控制台
一、核心定位
一句话:不用自建算力、不用部署模型,直接调用海量大模型,低代码搭建自有 AI 应用,兼顾程序员 API 开发 + 业务人员零代码拖拽开发。
二、平台可用模型(百炼模型广场)
- 阿里自研:Qwen(通义千问)全系列Qwen3.7 Max/Plus、Qwen3.5、通义文生图、实时同传多模态等(当前主推 Qwen3.7 系列,限时折扣)阿里云;
- 第三方主流模型:DeepSeek、GLM、MiniMax、零一万物 Yi、Llama、Kimi 等上百款开源 / 闭源大模型,文本、图像、语音、多模态全覆盖。
三、五大核心功能
1. 快捷 API 调用(开发首选)
- 完全兼容 OpenAI 接口格式,仅替换
base_url+api_key即可无缝迁移原有 OpenAI 代码,Python/Java/Node.js/Curl 全支持; - 按 Token 计费,新用户送 7000 万免费 Tokens,90 天有效期,免费测试接入。
2. 模型微调(定制专属模型)
可视化页面上传自有行业数据,支持 SFT/CPT/DPO 轻量化微调,不用搭训练环境,平台托管算力,适配企业私有知识库优化模型效果阿里云。
3. RAG 知识库(企业问答标配)
上传 PDF/Word/TXT/ 网页文档,一键构建私有知识库,搭配大模型做企业知识库问答、智能客服、文档助手,解决大模型知识过时问题。
4. Agent 智能体 + 可视化工作流(零代码)
拖拽式编排流程、绑定工具插件(联网、函数调用、数据库查询),零代码做自动化 Agent:办公助手、数据分析机器人、行业巡检机器人阿里云。
5. 应用广场 & 快速落地
内置百余种行业模板:公文写作、电商客服、简历筛选、代码助手,一键生成 SaaS AI 应用,可对接自有业务系统(ERP、CRM)。
四、计费方式
- 按量付费(主流):推理按输入 + 输出 Token 扣费,Qwen 系列常有折扣(如 Qwen3.7 Max 推理 5 折、Plus8 折)阿里云;
- 微调:按训练时长 / 算力包计费;
- 也支持资源包包月、企业定制包年。
五、适用场景
✅ 程序员:产品接入 AI 能力(APP / 小程序 / 后端集成大模型)✅ 企业:私有知识库、智能客服、内部办公 AI、行业定制大模型✅ 业务:零代码搭建文案生成、数据解析、自动化 Agent
六、Java接入阿里云百炼(通义大模型)SpringBoot
(一)普通对话
1、pom.xml 唯一依赖(只需这一个)
<dependencies> <!-- SpringBoot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 阿里云百炼 官方SDK(核心!) --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dashscope-sdk-java</artifactId> <version>2.11.1</version> </dependency> </dependencies>2、application.yml 配置
spring: application: name: bailian-demo # 百炼配置 bailian: api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxx # 你的API-KEY model: qwen-turbo # 模型名称3、核心代码(3 个类搞定)
【1】配置类(自动注入 SDK 客户端)
import com.alibaba.dashscope.aigc.generation.Generation; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class BailianConfig { @Value("${bailian.api-key}") private String apiKey; /** * 百炼官方SDK核心客户端,全局单例 */ @Bean public Generation generation() { Generation generation = new Generation(); // 密钥自动交给SDK管理 System.setProperty("DASH_SCOPE_API_KEY", apiKey); return generation; } }【2】Service(真正调用 AI)
import com.alibaba.dashscope.aigc.generation.Generation; import com.alibaba.dashscope.aigc.generation.GenerationParam; import com.alibaba.dashscope.aigc.generation.GenerationResult; import com.alibaba.dashscope.common.Message; import com.alibaba.dashscope.common.Role; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; @Service public class BailianService { @Resource private Generation generation; @Value("${bailian.model}") private String model; /** * 极简对话接口 */ public String simpleChat(String prompt) throws Exception { // 1. 构造用户消息 Message message = Message.builder() .role(Role.USER.getValue()) .content(prompt) .build(); // 2. SDK请求参数 GenerationParam param = GenerationParam.builder() .model(model) .messages(Collections.singletonList(message)) .build(); // 3. 官方SDK调用(一行代码发请求) GenerationResult result = generation.call(param); // 4. 直接返回AI回答 return result.getOutput().getText(); } }【3】Controller(对外接口)
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController public class AIController { @Resource private BailianService bailianService; /** * 测试地址:http://127.0.0.1:8080/ai/chat?prompt=你好 */ @GetMapping("/ai/chat") public String chat(@RequestParam String prompt) { try { return bailianService.simpleChat(prompt); } catch (Exception e) { return "AI调用失败:" + e.getMessage(); } } }【4】使用步骤
- 去阿里云百炼控制台获取
api-key,替换 yml 配置 - 启动 SpringBoot 项目
- 浏览器访问:
http://127.0.0.1:8080/ai/chat?prompt=写一个SpringBoot启动类 - 直接返回大模型回答
(二)流式输出
1. pom.xml 依赖(不变)
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 阿里云百炼官方SDK --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dashscope-sdk-java</artifactId> <version>2.11.1</version> </dependency> </dependencies>2. application.yml
spring: application: name: bailian-sse-demo server: port: 8080 bailian: api-key: sk-你自己的百炼API-KEY model: qwen-turbo3. 配置类
import com.alibaba.dashscope.aigc.generation.Generation; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class BailianConfig { @Value("${bailian.api-key}") private String apiKey; @Bean public Generation generation() { System.setProperty("DASH_SCOPE_API_KEY", apiKey); return new Generation(); } }4. Service 核心(流式返回)
import com.alibaba.dashscope.aigc.generation.Generation; import com.alibaba.dashscope.aigc.generation.GenerationParam; import com.alibaba.dashscope.aigc.generation.GenerationResult; import com.alibaba.dashscope.common.Message; import com.alibaba.dashscope.common.Role; import com.alibaba.dashscope.exception.ApiException; import com.alibaba.dashscope.exception.NoApiKeyException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import javax.annotation.Resource; import java.util.Collections; @Service public class BailianStreamService { @Resource private Generation generation; @Value("${bailian.model}") private String model; /** * 流式对话:返回 Flux<GenerationResult> */ public Flux<GenerationResult> streamChat(String prompt) throws ApiException, NoApiKey { // 构造消息 Message msg = Message.builder() .role(Role.USER.getValue()) .content(prompt) .build(); // 流式参数 GenerationParam param = GenerationParam.builder() .model(model) .messages(Collections.singletonList(msg)) .incrementalOutput(true) // 关键:增量输出(流式) .build(); // 返回流式 Flux return Flux.from(generation.streamCall(param)); } }5. Controller(SSE 接口)
import com.alibaba.dashscope.aigc.generation.GenerationResult; import org.springframework.http.MediaType; import org.springframework.http.codec.ServerSentEvent; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; import javax.annotation.Resource; @RestController @RequestMapping("/ai") public class AIController { @Resource private BailianStreamService bailianStreamService; /** * 流式SSE接口 * 前端直接请求即可看到打字机效果 */ @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<ServerSentEvent<String>> streamChat(@RequestParam String prompt) { try { return bailianStreamService.streamChat(prompt) .map(GenerationResult::getOutput) .map(output -> { String content = output.getText() == null ? "" : output.getText(); return ServerSentEvent.builder(content).build(); }); } catch (Exception e) { return Flux.just(ServerSentEvent.builder("错误:" + e.getMessage()).build()); } } }6、启动 & 测试
- 把
api-key换成你自己的 - 启动 SpringBoot
- 浏览器访问:
http://127.0.0.1:8080/ai/stream?prompt=写一个SpringBoot项目介绍效果:文字会逐字逐句像打字机一样输出,不是等全部生成完一次性返回。