当前位置: 首页 > news >正文

使用 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 依赖。以下是具体的依赖配置代码:

<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(仅在子业务空间创建百炼大模型应用时需要)。以下是具体的配置代码:

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

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

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

非流式调用
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. 调用阿里云百炼大模型应用(续)

流式调用
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 集成了阿里云百炼大模型应用。希望这篇技术博客能够帮助你更好地理解和应用这一强大的技术。如果你在开发过程中遇到任何问题,欢迎随时查阅阿里云官方文档或在开发者社区中寻求帮助。

相关文章:

  • Python爬虫(32)Python爬虫高阶:动态页面处理与Scrapy+Selenium+BeautifulSoup分布式架构深度解析实战
  • 华为云Flexus+DeepSeek征文|Flexus云服务器Dify-LLM资源部署极致体验Agent
  • PyTorch的基本操作
  • RK3588 RKNN ResNet50推理测试
  • NFM算法解析:如何用神经网络增强因子分解机的特征交互能力?
  • 138. Copy List with Random Pointer
  • Axure设计之带分页的穿梭框原型
  • 在C#中对List<T>实现多属性排序
  • 数学建模,机器决策人建模
  • 空调系统虚拟标定技术:新能源汽车能效优化的革命性突破
  • IntelliJ IDEA 接入 DeepSeek帮助你更好编码
  • 目标检测:YOLO 模型详解
  • VLM-MPC:自动驾驶中模型预测控制器增强视觉-语言模型
  • 新美业门店模式vs传统美业门店模式 调研报告
  • PHP学习笔记(八)
  • 【 Redis | 实战篇 扩展 】
  • 用户栈的高效解析逻辑
  • EtherNet/IP机柜内解决方案在医疗控制中心智能化的应用潜能和方向分析
  • springMVC拦截器,拦截器拦截策略设置
  • 【动手学深度学习】系列
  • 做招聘网站的需求分析/关键词代发包收录
  • 外贸网站建设价格/人工智能培训机构排名
  • 如何制作手机版网站/上海seo招聘
  • 建网站申请/百度移动端优化
  • 旅游营销网站建设/篮网目前排名
  • 嘉定网站建设哪里好/整合营销传播的明显特征是