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

Spring AI 1.0版本 + 千问大模型之文本对话

最近学习了一下最近比较火的Spring AI 项目,作为一个Java coder,Spring生态是最熟悉不过的内容。下面我将通过项目的形式来感受一下Spring AI,这里只是简单的使用实例,不涉及代码深层次的探究。

1、项目准备

我是使用了Idea中 的Spring脚手架构建了Springboot项目。我使用的是Springboot 3.4.7版本。下面是我的pom.xml引入

  <properties><java.version>17</java.version><spring-ai.version>1.0.0</spring-ai.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency></dependencies><dependencyManagement><dependencies><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>

application.yaml配置

spring:ai:openai:base-url: https://dashscope.aliyuncs.com/compatible-mode/api-key: ## 我这里是使用了百炼平台,需要去申请api-keychat:options:model: qwen-plus## 这里是输出模型请求和返回的日志,后面的文章,会继续讲解到
logging:level:org.springframework.ai.chat.client.advisor: debugcom.spring: debug

ChatConfig类
用于初始化我们的ChatClient。

@Component
public class ChatConfig {@Beanpublic ChatClient init(OpenAiChatModel chatModel) {return ChatClient.builder(chatModel).defaultSystem("你是一个智能助手,请以友好的语气回答问题。").defaultAdvisors(new SimpleLoggerAdvisor()).build();}
}

1、由于千问模型和OpenAi的结构一样,这里我们使用 OpenAiChatModel 和千问模型实现对话
2、defaultSystem 这里是配置了system默认的提示词文本,用于应用回复对话的提示词
3、defaultAdvisors,这里是注册Advisor的,Spring AI框架提供了很多Advisor,后面的文章我们会详细来介绍的。

ChatController 代码

@RestController
@RequestMapping(value = "/api/chat")
public class ChatController {@Resourceprivate ChatClient chatClient;@GetMapping("/chat")public String chat(@RequestParam(value = "message")String message) {return chatClient.prompt(message).call().content();}
}

下面就是测试对话
在这里插入图片描述
到此Spring AI 1.0版本 + 千问大模型 文本对话就完成了。如果有什么疑问,可以留言交流。

http://www.lryc.cn/news/593684.html

相关文章:

  • node.js学习笔记1
  • 【数据类型与变量】
  • MySQL——约束类型
  • Springboot项目的搭建方式5种
  • 使用DataGrip连接安装在Linux上的Redis
  • Python+大模型 day02
  • 辛普森悖论
  • 使用看门狗实现复位
  • 1.初始化
  • Web开发 03
  • 双目摄像头品牌
  • 板子 5.29--7.19
  • 【科研绘图系列】R语言绘制显著性标记的热图
  • 【黄山派-SF32LB52】—硬件原理图学习笔记
  • 商业秘密视域下计算机软件的多重保护困境
  • 计算机网络:(十)虚拟专用网 VPN 和网络地址转换 NAT
  • Java多线程基础详解:从实现到线程安全
  • 6. 装饰器模式
  • ROS2 视频采集节点实现
  • Redis常见线上问题
  • 基于LSTM的时间序列到时间序列的回归模拟
  • Keepalived 监听服务切换与运维指南
  • C study notes[1]
  • C语言:20250719笔记
  • CentOS 清理技巧
  • 第二次总结(xss、js原型链)
  • 在开发板tmp目录下传输文件很快的原因和注意事项:重启开发板会清空tmp文件夹,记得复制文件到其他地方命令如下(cp 文件所在路径 文件要复制到的路径—)
  • 【Linux】重生之从零开始学习运维之Nginx之server小实践
  • 定时器中BDTR死区时间和刹车功能配置
  • AWS Partner: Accreditation (Technical)