当前位置: 首页 > 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.dtcms.com/a/287900.html

相关文章:

  • ReentrantLock和synchronized的区别
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-133节(SQL——DQL——基础查询)
  • 解决Maven版本不兼容问题的终极方案
  • 操作系统1.1.1+1.1.2:操作系统的概念、功能
  • 软考高级之工程工期成本计算题
  • 神经网络:从模式组合到多层神经网络的进化
  • 自由学习记录(70)
  • Java程序猿搬砖笔记(十九)
  • 零基础 “入坑” Java--- 十二、抽象类和接口
  • 从五次方程到计算机:数学抽象如何塑造现代计算
  • 大数据之路:阿里巴巴大数据实践——日志采集与数据同步
  • 网络爬虫概念初解
  • Rust Web 全栈开发(九):增加教师管理功能
  • 对话访谈 | 盘古信息×锐明科技:中国企业高质量出海“走进去”和“走上去”
  • 实验室危险品智能管控:行为识别算法降低爆炸风险
  • 配置华为交换机接口链路聚合-支持服务器多网卡Bind
  • element ui 表格懒加载操作问题
  • 最终分配算法【论文材料】
  • OpenCV 官翻6 - Computational Photography
  • 市场数据+幸存者偏差提问,有趣的思考?
  • 基于dcmtk的dicom工具 第六章 StoreSCU 图像发送
  • 研究的艺术
  • simulink系列之模型接口表生成及自动连线脚
  • 图 —— 拓扑排序➕Bitset!
  • XSS原型与原型链
  • Linux 常用命令详解(含目录结构 / 文件操作 / 查找 / 解压缩)- 新手入门教程
  • 接口测试工具
  • PDF发票批量打印工具哪个好?高效打印发票的实用工具推荐
  • LangGraph是一个基于图计算的大语言模型应用开发框架
  • 重学Framework Input模块:如何实现按键一键启动Activity-学员作业