news 2026/4/29 16:41:56

SpringBoot中使用OpenAI集成阿里云百炼实现AI快速对话入门示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot中使用OpenAI集成阿里云百炼实现AI快速对话入门示例

场景

SpringBoot中使用SpringAIAlibaba框架集成阿里云百炼实现AI快速对话入门示例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/160024361

基于上面的基础,使用OpenAI兼容的方式实现AI对话以及流式对话功能。

Spring AI 提供了 spring-ai-openai-spring-boot-starter,自动配置 OpenAiChatModel。

核心配置:

spring.ai.openai.api-key=...
spring.ai.openai.base-url=... # 可选,默认 https://api.openai.com
spring.ai.openai.chat.options.model=gpt-4o

通过 ChatClient 或直接注入 OpenAiChatModel 进行调用。

支持流式响应、函数调用、嵌入等。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1. 配置 pom.xml 文件

在项目的 pom.xml 中,添加 spring-ai-openai-spring-boot-starter 依赖,并配置 Spring 里程碑仓库以确保依赖能正确下载。

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version> </parent> <groupId>com.example</groupId> <artifactId>spring-openai-bailian</artifactId> <version>1.0</version> <properties> <java.version>17</java.version> </properties> <!-- Spring AI BOM 统一管理依赖版本 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0-M6</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> </dependencies> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories>

2. 配置 application.yml

修改配置文件,将 spring.ai.openai 的 base-url 指向百炼平台的兼容模式地址,并填入你的 API Key 和想要使用的模型

​ spring: ai: openai: # 替换为你的阿里云百炼 API Key,建议使用环境变量 api-key: your-api-key # 百炼平台的兼容模式地址,注意不要额外添加 /v1 base-url: https://dashscope.aliyuncs.com/compatible-mode chat: options: # 替换为你想使用的模型名称,例如 qwen-max, qwen-plus 或 deepseek-r1 model: qwen-max ​

3. 编写调用代码

你可以创建一个 ChatClient 的 Bean,或者直接在 Controller 中注入 OpenAiChatModel 来调用模型。

import org.springframework.ai.chat.client.ChatClient; 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.RestController; import reactor.core.publisher.Flux; @RestController public class ChatController { private final ChatClient chatClient; // 通过构造函数注入 ChatClient public ChatController(ChatClient.Builder chatClientBuilder) { this.chatClient = chatClientBuilder.build(); } // 1. 同步调用 @GetMapping("/ai/generate") public String generate(@RequestParam(value = "message", defaultValue = "你好") String message) { return chatClient.prompt() .user(message) .call() .content(); } // 2. 流式调用 (SSE) @GetMapping(value = "/ai/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<ServerSentEvent<String>> stream(@RequestParam(value = "message", defaultValue = "讲个笑话") String message) { return chatClient.prompt() .user(message) .stream() .content() .map(content -> ServerSentEvent.builder(content).build()); } }

关键注意点

base-url 配置:

确保 base-url 配置为 https://dashscope.aliyuncs.com/compatible-mode,而不是 .../compatible-mode/v1。

因为 Spring AI 会自动在路径后添加 /v1,配置错误会导致 404 错误。

API Key 安全:

建议使用环境变量(如 ${DASHSCOPE_API_KEY})来配置 API Key,避免硬编码在配置文件中。

你可以使用 echo "export DASHSCOPE_API_KEY='你的API密钥'" >> ~/.bashrc 等命令进行设置。

模型选择:

在 model 字段填写你需要的模型名称,例如 qwen-max、qwen-plus 或 deepseek-r1 等,

具体可选的模型列表可以在百炼控制台的“模型广场”查看。

JDK 版本:

Spring AI 3.x 版本基于 Spring Boot 3.x,要求 JDK 17 或更高版本

4、启动测试

打开浏览器,直接访问以下 URL:

同步接口:

http://localhost:8080/ai/generate?message=你好,请介绍一下自己

流式接口:

http://localhost:8080/ai/stream?message=讲一个简短的笑话

流式接口会以 Server-Sent Events (SSE) 形式逐字输出,浏览器可能无法直接展示,建议使用Postman 测试

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 22:04:30

OpenCV实战:用RANSAC算法搞定单应性矩阵估计(附Python代码)

OpenCV实战&#xff1a;用RANSAC算法搞定单应性矩阵估计&#xff08;附Python代码&#xff09; 在计算机视觉项目中&#xff0c;我们经常需要处理图像之间的几何变换关系。想象一下这样的场景&#xff1a;你正在开发一个AR应用&#xff0c;需要将虚拟物体精准地叠加到现实世界的…

作者头像 李华
网站建设 2026/4/16 20:05:11

企微工具对比:群发自动化脚本与定时任务集成

一、问题背景企微官方群发API&#xff08;externalcontact/send_msg&#xff09;存在三个技术痛点&#xff1a;① 单次调用仅支持200个客户&#xff1b;② 需要用户手动触发或服务器调用&#xff0c;无内置定时&#xff1b;③ 无法自动获取“昨日未回复客户”等智能分组。开发纯…

作者头像 李华
网站建设 2026/4/14 22:37:18

小奈猫狗的情侣博客系统源码

小奈猫狗的情侣博客系统源码 小奈猫狗的情侣博客系统源码 一个可以记录情侣日常的博客 基于 React Node.js 的全栈情侣博客系统&#xff0c;让每一份爱意都有迹可循。 「小猫小狗的窝」是一款面向情侣群体的轻量级博客系统&#xff0c;旨在为恋人们提供一个私密、温馨且…

作者头像 李华
网站建设 2026/4/14 22:31:18

脚本语言与组件的深度关联:原理、机制与实例解析

脚本语言与组件的关联性、工作原理和机制&#xff0c;涵盖组件&#xff08;Component&#xff09;的概念&#xff0c;如COM组件、Web组件、UI组件等&#xff0c;以及脚本语言如何与它们交互。 将从以下几个方面组织回答&#xff1a;定义核心概念&#xff1a;组件 vs 脚本语言。…

作者头像 李华
网站建设 2026/4/16 1:19:52

从零到上线仅11天:SITS2026 AIAgent法律助手敏捷开发路径图曝光——含法律知识蒸馏流程、法官语义对齐矩阵及实时伦理熔断机制

第一章&#xff1a;SITS2026案例&#xff1a;AIAgent法律助手开发 2026奇点智能技术大会(https://ml-summit.org) SITS2026项目聚焦于构建面向中国司法实践的轻量化AI法律助手&#xff0c;核心目标是为基层法律工作者提供实时、可解释、合规范的合同审查与条款风险提示能力。该…

作者头像 李华