AI - 阿里云百炼

阿里云百炼是阿里云 2023 年 10 月上线的一站式 MaaS 大模型开发 & 应用全链路平台 ,集合模型调用、微调、RAG 知识库、Agent 智能体、低代码应用搭建、API 服务,个人 / 企业开发者通用。

官网地址大模型服务平台百炼控制台

一、核心定位

一句话:不用自建算力、不用部署模型,直接调用海量大模型,低代码搭建自有 AI 应用,兼顾程序员 API 开发 + 业务人员零代码拖拽开发。

二、平台可用模型(百炼模型广场)

  1. 阿里自研:Qwen(通义千问)全系列Qwen3.7 Max/Plus、Qwen3.5、通义文生图、实时同传多模态等(当前主推 Qwen3.7 系列,限时折扣)阿里云;
  2. 第三方主流模型: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 唯一依赖(只需这一个)

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 客户端)

java 复制代码
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)

java 复制代码
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(对外接口)

java 复制代码
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】使用步骤

  1. 去阿里云百炼控制台获取 api-key,替换 yml 配置

  2. 启动 SpringBoot 项目

  3. 浏览器访问:

    复制代码
    http://127.0.0.1:8080/ai/chat?prompt=写一个SpringBoot启动类
  4. 直接返回大模型回答

(二)流式输出

1. pom.xml 依赖(不变)

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

XML 复制代码
spring:
  application:
    name: bailian-sse-demo
server:
  port: 8080

bailian:
  api-key: sk-你自己的百炼API-KEY
  model: qwen-turbo

3. 配置类

java 复制代码
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 核心(流式返回)

java 复制代码
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 接口)

java 复制代码
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、启动 & 测试

  1. api-key 换成你自己的

  2. 启动 SpringBoot

  3. 浏览器访问:

    http://127.0.0.1:8080/ai/stream?prompt=写一个SpringBoot项目介绍

效果: 文字会逐字逐句像打字机一样输出,不是等全部生成完一次性返回。

相关推荐
感谢地心引力1 天前
我用 Doubao-Seed-2.1-pro 做了一个深度融入 AI 功能的本地知识库软件
ai·开源·seed·markdown·豆包
阿昌喜欢吃黄桃1 天前
提示词工程:User Prompt 与 System Prompt
ai·prompt·提示词·提示词工程
AI产品测评官1 天前
海内外AI招聘工具分赛道横向对比:五大品类的技术路线与选型参考
人工智能·ai·求职招聘
俊哥V1 天前
每日 AI 研究简报 · 2026-09-21
人工智能·ai
omenkk71 天前
上下文工程:优化系统提示词,利用 KV Cache 降低 Token 成本
ai
代码方舟1 天前
零信任架构实战:基于天远手机在网状态V即时版构建自动化通信分发网关
人工智能·ai·工具分享
MicrosoftReactor2 天前
技术速递|GitHub Copilot App 入门指南:使用 Diff、终端和浏览器
ai·copilot·agent
TechEdu2026062 天前
[人工智能]人工智能时代的零日漏洞与零日攻击
人工智能·网络安全·ai·信息安全
程序员无隅2 天前
Pi Agent Loop 完整流程源码解析:从 Agent.prompt() 到 agent_end
ai