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

Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型

1 依赖

主要的 maven 依赖如下所示:

jdk 21 + springboot 3.4.5 + spring-ai-alibaba-starter-dashscope 1.0.0.2 + spring-ai-openai 1.0.0

<properties><java.version>21</java.version><spring-ai.version>1.0.0</spring-ai.version><spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version><spring-boot.version>3.4.5</spring-boot.version>
</properties><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-bom</artifactId><version>${spring-ai-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><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><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--接入兼容OpenAI api的大模型--><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai</artifactId></dependency></dependencies><build><plugins><!-- Maven 编译器插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><source>21</source><target>21</target><parameters>true</parameters> <!-- 支持参数名保留 --><compilerArgs><arg>-Xlint:unchecked</arg><arg>-Xlint:deprecation</arg></compilerArgs></configuration></plugin><!-- Spring Boot Maven 插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin><!-- 资源处理插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.3.1</version><configuration><encoding>UTF-8</encoding></configuration></plugin></plugins>
</build>

2 创建模型的 ChatClient

创建兼容 OpenAI API 的模型的 ChatClient 配置类,用于模型的调用。参考以下方法,可以为不同的模型创建不同的配置类。以火山引擎某模型为例,代码如下所示。

@Configuration
public class OpenAIChatClientConfig {/*** 火山引擎模型baseUrl*/@Value("${volces.baseUrl:test}")private String volcesBaseUrl;/*** 火山引擎模型apiKey*/@Value("${volces.apiKey:test}")private String volcesApiKey;/*** 火山引擎模型-豆包模型v1*/@Value("${volces.model.doubaoV1:test}")private String volcesModelDoubaoV1;// 获取火山引擎-豆包模型v1@Bean("chatClient4VolcesDoubaoV1")public ChatClient createChatClient4VolcesDoubaoV1() {OpenAiApi baseOpenAiApi = OpenAiApi.builder().baseUrl(volcesBaseUrl).apiKey(volcesApiKey).completionsPath("/chat/completions").build();OpenAiChatModel chatModel = OpenAiChatModel.builder().openAiApi(baseOpenAiApi).defaultOptions(OpenAiChatOptions.builder().model(volcesModelDoubaoV1).temperature(0.7).build()).build();return ChatClient.builder(chatModel).defaultAdvisors().defaultTools().build();}}

3 模型应用

使用上述创建的模型的 ChatClient,就可以进行模型的调用了。示例代码如下所示。

@Slf4j
@RestController
@RequestMapping("/openai")
public class OpenAIChatClientController {private static final String DEFAULT_PROMPT = "你好,介绍下你自己!";@Resourceprivate ChatClient chatClient4VolcesDoubaoV1;@GetMapping("/simple/chat")public String simpleChat(String prompt) {if (StringUtils.isBlank(prompt)) {prompt = DEFAULT_PROMPT;}String content;try {content = chatClient4VolcesDoubaoV1.prompt(prompt).call().content();} catch (Exception e) {log.error("simpleChat error", e);throw new RuntimeException(e.getMessage());}log.info("simpleChat --> \n prompt ={}, \n content = {}", prompt, content);return content;}}
http://www.lryc.cn/news/625247.html

相关文章:

  • 管理本地用户和组:红帽企业 Linux 系统安全的基础
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(4):31-40语法
  • Linux 中断机制深度分析
  • 如何生成和安全保存私钥?
  • 【DDIA】第十章:解析Reduce端连接与分组技术
  • gflags框架安装与使用
  • 【SkyWalking】单节点安装
  • 数字货币钱包的类型、特点及使用场景
  • 8.18网络编程——基于UDP的TFTP文件传输客户端
  • Kafka文件存储机制
  • LeetCode100 -- Day1
  • LeetCode 每日一题 2025/8/11-2025/8/17
  • STM32学习笔记14-I2C硬件控制
  • 嵌入式 C++ 语言编程规范文档个人学习版(参考《Google C++ 编码规范中文版》)
  • 朝花夕拾(七)--------从混淆矩阵到分类报告全面解析​
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • 安全基础DAY6-服务器安全检测和防御技术
  • 超级云平台:重构数字生态的“超级连接器“
  • 2025年- H98-Lc206--51.N皇后(回溯)--Java版
  • Hadoop - 1:Hadoop 技术解析;Hadoop是什么;Hadoop优势;Hadoop组成;HDFS、YARN、MapReduce 三者关系
  • <数据集>遥感飞机识别数据集<目标检测>
  • Ubuntu下无法在huggingface下载指定模型的解决方法
  • FreeRTOS学习笔记(二)
  • MySQL的多版本并发控制(MVCC):
  • Windows系统上使用GIT
  • 基于JS实现的中国象棋AI系统:多模块协同决策与分析
  • 【C语言16天强化训练】从基础入门到进阶:Day 2
  • 计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
  • 数据转换细节揭秘:ETL如何精准映射复杂业务逻辑
  • 深入解析StatefulSet与K8s服务管理