当前位置: 首页 > 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.xdnf.cn/news/1324765.html

相关文章:

  • 杂记 05
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • Android使用Kotlin协程+Flow实现打字机效果
  • Python 作用域 (scope) 与闭包 (closure)
  • 【学习嵌入式-day-27-进程间通信】
  • Docker常见指令速查
  • 用户认证技术
  • STL库——string(类函数学习)
  • SQL详细语法教程(六)存储+索引
  • AI心理助手开发文档
  • 在python中等号左边的都是对象,在matlab中等号a = 3+2 a就是个变量
  • 力扣hot100:盛最多水的容器:双指针法高效求解最大容量问题(11)
  • openfeign 只有接口如何创建bean的
  • Linux设备树简介
  • vue3入门-v-model、ref和reactive讲解
  • Leetcode 16 java
  • Effective C++ 条款49:了解new-handler的行为
  • 力扣 hot100 Day77
  • 单片机驱动LCD显示模块LM6029BCW
  • 机器翻译论文阅读方法:顶会(ACL、EMNLP)论文解析技巧
  • STM32学习笔记14-I2C硬件控制
  • 大数据计算引擎(四)—— Impala
  • Fluss:颠覆Kafka的面向分析的实时流存储
  • GPT-5之后:当大模型更新不再是唯一焦点
  • 深度学习必然用到的概率知识
  • Vue 3中watch的返回值:解锁监听的隐藏技巧
  • 敏感数据加密平台设计实战:如何为你的系统打造安全“保险柜”
  • 遥感机器学习入门实战教程 | Sklearn 案例②:PCA + k-NN 分类与评估
  • Day8--滑动窗口与双指针--1004. 最大连续1的个数 III,1658. 将 x 减到 0 的最小操作数,3641. 最长半重复子数组
  • 具身智能2硬件架构(人形机器人)摘自Openloong社区