使用 Spring AI Alibaba 集成阿里云百炼大模型应用

随着人工智能技术的飞速发展,大模型在各个领域的应用越来越广泛。阿里云百炼大模型提供了强大的语言理解和生成能力,但如何将其高效地集成到实际应用中,一直是开发者关注的焦点。本文将详细介绍如何使用 Spring AI Alibaba 集成阿里云百炼大模型应用,帮助开发者快速上手并实现功能。

一、前期准备

在开始集成之前,我们需要完成一些准备工作,以确保后续的开发过程顺利进行。

1. 获取 API Key

首先,你需要在阿里云控制台中获取 API Key。API Key 是用于认证和授权的关键信息,建议将其配置到环境变量中,以避免因硬编码导致的泄露风险。推荐使用 DASHSCOPE_API_KEY 作为环境变量名。

2. 创建阿里云百炼大模型应用

接下来,你需要创建一个阿里云百炼大模型应用。可以选择以下任一类型应用,并获取应用 ID,将应用 ID 配置到环境变量中,推荐使用 APP_ID 作为环境变量名。

  • 智能体应用:适用于需要与用户进行交互的场景。
  • 工作流应用:适用于需要按照固定流程处理任务的场景。
  • 智能体编排应用:适用于需要自动规划复杂项目的场景。

如果是在子业务空间创建的阿里云百炼大模型应用,还需要获取业务空间 ID,并将其配置到环境变量中,推荐使用 WORKSPACE_ID 作为环境变量名。

二、操作流程

1. 初始化 Spring Boot 工程

环境要求
  • Spring Boot 3.x:确保使用最新版本的 Spring Boot,以获得更好的性能和兼容性。
  • JDK 17 或更高版本:推荐使用 JDK 17 或更高版本,以支持最新的 Java 特性。
初始化方式

你可以选择以下两种方式之一来初始化 Spring Boot 工程:

  • 下载完整的示例工程快速上手(推荐) :访问 bailian-agent 仓库,下载完整的示例工程代码到本地。下载完成后,跳转到步骤 3 配置参数,然后执行步骤 5 启动 Spring Boot 工程并测试。
  • 从零开始搭建基础工程:如果你希望从头开始搭建工程,可以按照后续步骤依次执行。

2. 添加依赖

pom.xml 文件中配置 Spring AI Alibaba 依赖。以下是具体的依赖配置代码:

xml 复制代码
<dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter</artifactId>
    <version>1.0.0-M5.1</version>
</dependency>

3. 配置参数

application.yml 文件中配置阿里云百炼大模型应用 ID、API Key 和业务空间 ID(仅在子业务空间创建百炼大模型应用时需要)。以下是具体的配置代码:

yaml 复制代码
spring:
  ai:
    dashscope:
      agent:
        app-id: ${APP_ID} # 大模型应用ID
      api-key: ${DASHSCOPE_API_KEY} # 百炼API Key
      #workspace-id: ${WORKSPACE_ID} # 业务空间ID,可选,未配置时使用主账号空间

4. 调用阿里云百炼大模型应用

Spring AI Alibaba 使用 DashScopeAgent 调用阿里云百炼大模型应用。以下是两种调用方式的代码示例:

非流式调用
java 复制代码
import com.alibaba.cloud.ai.dashscope.agent.DashScopeAgent;
import com.alibaba.cloud.ai.dashscope.agent.DashScopeAgentOptions;
import com.alibaba.cloud.ai.dashscope.api.DashScopeAgentApi;

import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@RestController
@RequestMapping("/ai")
public class BailianAgentRagController {
    private static final Logger logger = LoggerFactory.getLogger(BailianAgentRagController.class);
    private DashScopeAgent agent;

    @Value("${spring.ai.dashscope.agent.app-id}")
    private String appId;

    public BailianAgentRagController(DashScopeAgentApi dashscopeAgentApi) {
        this.agent = new DashScopeAgent(dashscopeAgentApi);
    }

    @GetMapping("/bailian/agent/call")
    public String call(@RequestParam(value = "message",
            defaultValue = "如何使用SDK快速调用阿里云百炼的应用?") String message) {
        ChatResponse response = agent.call(new Prompt(message, DashScopeAgentOptions.builder().withAppId(appId).build()));
        if (response == null || response.getResult() == null) {
            logger.error("chat response is null");
            return "chat response is null";
        }

        AssistantMessage app_output = response.getResult().getOutput();
        return app_output.getContent();
    }
}

4. 调用阿里云百炼大模型应用(续)

流式调用
java 复制代码
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import reactor.core.publisher.Flux;

@RestController
@RequestMapping("/ai")
public class BailianAgentRagStreamController {
    private static final Logger logger = LoggerFactory.getLogger(BailianAgentRagStreamController.class);
    private DashScopeAgent agent;

    @Value("${spring.ai.dashscope.agent.app-id}")
    private String appId;

    public BailianAgentRagStreamController(DashScopeAgentApi dashscopeAgentApi) {
        this.agent = new DashScopeAgent(dashscopeAgentApi,
                DashScopeAgentOptions.builder()
                        .withSessionId("current_session_id")
                        .withIncrementalOutput(true)
                        .withHasThoughts(true)
                        .build());
    }

    @GetMapping(value = "/bailian/agent/stream", produces = "text/event-stream")
    public Flux<String> stream(@RequestParam(value = "message",
            defaultValue = "你好,请问你的知识库文档主要是关于什么内容的?") String message) {
        return agent.stream(new Prompt(message, DashScopeAgentOptions.builder().withAppId(appId).build())).map(response -> {
            if (response == null || response.getResult() == null) {
                logger.error("chat response is null");
                return "chat response is null";
            }

            AssistantMessage app_output = response.getResult().getOutput();
            String content = app_output.getContent();

            return content;
        });
    }
}

5. 启动 Spring Boot 工程并测试

完成上述配置和代码编写后,就可以启动 Spring Boot 工程并进行测试了。你可以使用 Postman 或其他 HTTP 客户端工具来发送请求,验证是否能够成功调用阿里云百炼大模型应用。

以下是使用 Postman 测试的示例:

  1. 打开 Postman,创建一个新的 GET 请求。
  2. 在请求的 URL 中输入 http://localhost:8080/ai/bailian/agent/call?message=你的测试问题,用于测试非流式调用。
  3. 点击"Send"按钮,查看返回的结果。
  4. 同样地,你可以将 URL 改为 http://localhost:8080/ai/bailian/agent/stream?message=你的测试问题,用于测试流式调用。

如果一切正常,你将看到阿里云百炼大模型返回的响应内容。

三、计费说明

在使用阿里云百炼大模型应用时,需要注意计费问题。百炼应用本身不收取费用,但通过应用调用模型时会产生模型推理(调用)的相关费用。具体的费用详情可以参考阿里云官方文档中的 计费项

四、错误码

在调用过程中,可能会遇到一些错误。通用错误码信息可以参考阿里云官方文档中的 错误信息

五、了解更多

  • Spring AI Alibaba:提供了丰富的文档教程、实战博客和开发者社区,帮助你快速开发 Java 生成式 AI 应用。
  • 应用调用:提供了详细的接口说明与调用示例,方便你更好地理解和使用阿里云百炼大模型应用。

通过以上步骤,你已经成功地使用 Spring AI Alibaba 集成了阿里云百炼大模型应用。希望这篇技术博客能够帮助你更好地理解和应用这一强大的技术。如果你在开发过程中遇到任何问题,欢迎随时查阅阿里云官方文档或在开发者社区中寻求帮助。

相关推荐
WLJT1231231239 小时前
AI懂你,家更暖:重塑生活温度的智能家电新范式
人工智能·生活
roman_日积跬步-终至千里9 小时前
【计算机视觉(16)】语义理解-训练神经网络1_激活_预处理_初始化_BN
人工智能·神经网络·计算机视觉
AI营销实验室9 小时前
原圈科技AI CRM系统引领2025文旅行业智能升级新趋势
人工智能·科技
AI营销前沿9 小时前
私域AI首倡者韩剑,原圈科技领航AI营销
大数据·人工智能
咚咚王者9 小时前
人工智能之数学基础 概率论与统计:第一章 基础概念
人工智能·概率论
_Li.9 小时前
机器学习-集成学习
人工智能·机器学习·集成学习
Percent_bigdata9 小时前
数据治理平台选型解析:AI大模型与智能体如何重塑企业数字基座
大数据·人工智能
牛客企业服务9 小时前
AI面试监考:破解在线面试作弊难题
人工智能·面试·职场和发展
面包会有的,牛奶也会有的。9 小时前
AI 测试平台:WHartTest V1.3.0 更新优化架构
人工智能
2501_9419820510 小时前
结合 AI 视觉:使用 OCR 识别企业微信聊天记录中的图片信息
人工智能·ocr·企业微信