Spring AI 与阿里云快速上手指南

余胜军说java助理
2026-05-10 12:21
阅读 1838

Spring AI 与阿里云快速上手指南

引言/概述

随着大模型技术的飞速发展,越来越多的企业希望将 AI 能力无缝集成到现有的 Java 应用中。Spring AI 是 Spring 官方推出的 AI 集成框架,旨在简化开发者在 Spring 生态中调用大语言模型(LLM)的过程,提供统一、简洁、可扩展的编程模型。与此同时,阿里云作为国内领先的云服务商,提供了包括通义千问(Qwen)在内的强大大模型能力,并通过百炼平台开放 API 接口。

本文将指导你如何基于 Spring AI 快速接入阿里云的大模型服务(以通义千问为例),从环境准备、依赖配置到实际调用,助你快速构建具备 AI 能力的 Spring Boot 应用。无论你是初学者还是已有 Spring 开发经验的工程师,都能通过本指南快速上手。

核心内容

一、前置准备

在开始编码前,你需要完成以下准备工作:

  1. 注册阿里云账号:访问 阿里云官网 并完成实名认证。
  2. 开通通义千问服务:进入 阿里云百炼控制台,创建应用并获取 API Key。
  3. 记录关键信息
    • Access Key IDAccess Key Secret(用于鉴权)
    • 百炼平台分配的 App ID
    • API 端点(如 https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation

注意:建议使用 RAM 用户的 AccessKey,并赋予最小必要权限,避免主账号泄露风险。

二、创建 Spring Boot 项目

使用 Spring Initializr 创建一个新项目,选择以下依赖:

  • Spring Web
  • Spring AI Alibaba(需添加 Spring AI 的 BOM)

由于 Spring AI 尚未完全发布到 Maven Central,你需要手动添加仓库和依赖。

添加 Spring AI BOM

pom.xml 中添加 Spring AI 的 BOM 管理依赖版本:

<properties>
    <spring-ai.version>0.8.1</spring-ai.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

添加 Alibaba 模型支持依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-alibaba-dashscope-spring-boot-starter</artifactId>
    </dependency>
    <!-- 其他依赖如 spring-boot-starter-web -->
</dependencies>

注意:截至 2024 年中,spring-ai-alibaba-dashscope-spring-boot-starter 是官方提供的对接阿里云 DashScope(通义千问 API 平台)的 Starter。

三、配置阿里云凭证

application.yml 中配置阿里云的认证信息:

spring:
  ai:
    alibaba:
      dashscope:
        api-key: your_dashscope_api_key  # 在百炼控制台获取
        model: qwen-max                  # 可选:qwen-turbo, qwen-plus, qwen-max 等

提示:为安全起见,建议将 api-key 存入环境变量或使用 Spring Cloud Config / Vault 管理。

四、编写 AI 调用代码

Spring AI 提供了两种主要的调用方式:AiClient(简单问答)和 PromptTemplate(带模板的结构化输入)。

4.1 使用 AiClient 实现简单对话

创建一个 REST 控制器,注入 AiClient

@RestController
@RequestMapping("/ai")
public class AiController {

    private final AiClient aiClient;

    public AiController(AiClient aiClient) {
        this.aiClient = aiClient;
    }

    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return aiClient.generate(message);
    }
}

启动应用后,访问 http://localhost:8080/ai/chat?message=你好,介绍一下你自己,即可看到通义千问的回复。

4.2 使用 PromptTemplate 构建结构化提示

对于更复杂的场景(如提取信息、格式化输出),推荐使用 PromptTemplate

@Service
public class WeatherService {

    private final PromptTemplate promptTemplate;
    private final AiClient aiClient;

    public WeatherService(AiClient aiClient) {
        this.aiClient = aiClient;
        this.promptTemplate = new PromptTemplate(
            "请根据以下天气数据生成一段简短的天气预报:\n" +
            "城市:{city}\n" +
            "温度:{temperature}℃\n" +
            "天气:{condition}\n" +
            "请用中文友好地描述。"
        );
    }

    public String generateForecast(String city, int temperature, String condition) {
        Prompt prompt = promptTemplate.create(Map.of(
            "city", city,
            "temperature", temperature,
            "condition", condition
        ));
        return aiClient.generate(prompt).getResult().getOutput().getContent();
    }
}

在控制器中调用:

@GetMapping("/forecast")
public String forecast() {
    return weatherService.generateForecast("杭州", 25, "多云");
}

五、启用流式响应(可选)

对于长文本生成,启用流式输出可提升用户体验。Spring AI 支持 StreamingAiClient

@RestController
public class StreamingController {

    private final StreamingAiClient streamingAiClient;

    public StreamingController(StreamingAiClient streamingAiClient) {
        this.streamingAiClient = streamingAiClient;
    }

    @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> stream(@RequestParam String message) {
        return streamingAiClient.stream(message)
                .map(chunk -> chunk.getResult().getOutput().getContent());
    }
}

前端可通过 EventSource 接收实时流式数据。

六、错误处理与日志

在生产环境中,务必添加异常处理:

@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleAiException(Exception ex) {
    log.error("AI 调用失败", ex);
    return ResponseEntity.status(500).body("AI 服务暂时不可用");
}

同时,可在 application.yml 中开启调试日志:

logging:
  level:
    org.springframework.ai: DEBUG

这有助于排查请求/响应细节。

总结

通过本文,我们完成了从零开始使用 Spring AI 对接阿里云通义千问的全过程。核心步骤包括:

  1. 准备阿里云 API 凭证
  2. 引入 Spring AI Alibaba Starter
  3. 配置模型参数
  4. 使用 AiClientPromptTemplate 实现智能问答
  5. 可选地启用流式响应与错误处理

Spring AI 的设计哲学是“约定优于配置”,极大降低了 AI 集成的复杂度。而阿里云提供的稳定、高性能的大模型服务,则为国内开发者提供了合规、低延迟的选择。

未来,随着 Spring AI 功能的不断完善(如支持 Function Calling、RAG、Agent 等高级特性),结合阿里云百炼平台的丰富模型生态,Java 开发者将能更高效地构建下一代智能应用。

小贴士:建议定期关注 Spring AI 官方文档阿里云百炼文档,获取最新功能与最佳实践。

现在,就动手试试吧!用几行代码,让你的 Spring Boot 应用拥有“思考”能力。

评论 0

最热最新
暂无评论
余胜军说java助理Lv.1
0
影响力
0
文章
0
粉丝