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

Spring AI(3) :对话机器人开发快速入门

本章代码已分享至Gitee:https://gitee.com/lengcz/ai-study.git

文章目录

  • 快速入门AI开发
  • 准备工作和环境
  • 创建项目
  • 阻塞式chat
  • 流式chat
  • 给System设置名称

快速入门AI开发

本章讲解如何使用spring ai 快速入门对话机器人的开发。

准备工作和环境

由于spring AI 要求的jdk 最低为17,所以这里环境为jdk17
本地使用ollama部署了deepseek-r1:7b,可以根据自己电脑的配置决定。
项目运行时,Idea版本如果过低会报错,如运行时发生错误,请注意检查Idea版本,这里使用的Idea 2024

demo使用ollama,如果自己使用其他模型,请注意使用对应的依赖和配置。

创建项目

  1. 创建maven项目

  2. 引入依赖

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.13</version><relativePath/><!-- lookup parent from repository --></parent><groupId>com.lengcz</groupId><artifactId>ai-study</artifactId><version>0.0.1-SNAPSHOT</version><name>ai-study</name><description>ai study</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version><spring-ai.version>1.0.0-M6</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-ollama-spring-boot-starter</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!--建议不用使用自带的lombok,而是由自己指定版本--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3 启动类

importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassAiStudyApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AiStudyApplication.class,args);}}

4 配置yaml文件

spring:application:name:ai-studyai:ollama:base-url:http://localhost:11434chat:model:deepseek-r1:7b
  1. 创建配置类
importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.ollama.OllamaChatModel;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassCommonConfiguration{@BeanpublicChatClientchatClient(OllamaChatModelollamaChatModel){returnChatClient.builder(ollamaChatModel).build();}}

阻塞式chat

编写一个 controller,试一下验证聊天

packagecom.lengcz.ai.controller;importlombok.RequiredArgsConstructor;importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importreactor.core.publisher.Flux;@RequiredArgsConstructor//有参构造器@RestController@RequestMapping("/ai")publicclassChatController{privatefinalChatClientchatClient;@RequestMapping("/chat")publicStringchat(Stringprompt){returnchatClient.prompt().user(prompt).call().content();//call() 表示阻塞调用}}

启动后,请求一下接口测试,可以看到接口稍等片刻,瞬间返回了所有内容,这就是阻塞式的返回。

流式chat

流式返回,将前面的call改成stream再验证一下接口,可以看到返回数据以流的方式输出。

//produces = "text/html;charset=utf-8;" 指定编码,防止中文乱码@RequestMapping(value="/stream_chat",produces="text/html;charset=utf-8;")publicFlux<String>stream_chat(Stringprompt){returnchatClient.prompt().user(prompt).stream().content();//stream() 表示流式输出}

给System设置名称

importorg.springframework.ai.chat.client.ChatClient;importorg.springframework.ai.ollama.OllamaChatModel;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassCommonConfiguration{@BeanpublicChatClientchatClient(OllamaChatModelollamaChatModel){returnChatClient.builder(ollamaChatModel).defaultSystem("你是一个热心的智能助手,你的名字叫小可爱,请以小可爱的名义回答用户的问题。").build();}}


再次请求接口,可以看到AI已经以重新定义的名称进行回复。

http://www.jsqmd.com/news/1244850/

相关文章:

  • DDPG强化学习优化四旋翼PD控制参数实践
  • 大语言模型如何重塑就业市场信息透明度
  • 毕业生必备7款AI论文写作工具,一站式搞定选题初稿与降AIGC
  • 直流照明柔性调荷,削峰填谷压低用电成本
  • RT-DETR-R18与MobileNet-SSD轻量化检测模型对比与应用
  • 保姆级教程:在Debian/Ubuntu服务器上用Docker和macvlan给OpenWrt软路由加个‘外挂’
  • 亨得利服务项目及价格查询|服务热线与门店详细地址权威信息声明(2026年7月更新) - 亨得利官方博客
  • TMS320DM6441总线优先级与引脚复用配置实战指南
  • 2026深圳宣传片拍摄,这3家性价比真实测评来了
  • BAT智能体技术架构与商业化路径深度对比
  • TI Cortex-R4F TCRAM ECC内存保护机制与调试模式行为深度解析
  • 深入解析I2C寄存器:从数据传输到中断控制的底层编程指南
  • TI Tiva C以太网PHY寄存器深度解析:从配置到中断的嵌入式网络优化实践
  • JTAG接口原理与ARM Cortex-M调试实战:从TAP状态机到边界扫描
  • TRAE CUE:AI驱动的智能编程辅助工具解析
  • TM4C123BH6ZRB看门狗定时器:原理、配置与实战避坑指南
  • C++20 Concepts:用概念约束简化模板编译报错
  • 亨得利腕表保养维修中心腕表精准校准与机芯养护服务权威公示(2026年7月最新) - 亨得利官方
  • VC++开发VBScript IDE:原生Windows脚本编辑与调试实战
  • 保姆级教程:在PVE 6.4-13上配置双软路由(iKuai+OpenWrt)的网络避坑指南
  • Visual Studio单步调试技巧与高级应用指南
  • [Android] 迅工电气仿真3.2 -免登使用+电工必备
  • 杭州积家二零二六年七月最新售后服务中心地址与全国统一客户服务热线 - 积家官方售后服务中心
  • 亲身探访广州万国售后服务中心|全新维修地址和售后服务电话(2026年7月最新) - 万国中国官方服务中心
  • 毕业党救命指南8个一键生成论文工具,半天搞定万字论文!
  • TM4C129时钟与电源管理:寄存器深度解析与低功耗实战
  • AI辅助学术写作:工具链构建与效率提升实战
  • 存储芯片厂AI操作系统:实时处理与智能调度的关键技术
  • AI论文降重工具原理与2024年主流产品评测
  • MySQL 核心命令行工具:mysql 命令超详细教程(连接 / 执行 SQL / 脚本全解)