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

基于SpringAi 开发聊天机器人

事先说明:采用本地部署Ollama,用的模块是deepseek-r1:1.5b

一、创建spring boot基础工程

二、导入相关依赖

<properties> <java.version>17</java.version> <spring-ai.version>1.1.3</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-ollama</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.42</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

三、配置相关参数

application.yml中配置Ollama的基础URL和模型名称:

spring: application: name:ywq-ai ai: ollama: base-url: http://localhost:11434 chat: model: deepseek-r1:1.5b #配置日志级别 logging: level: org.springframework.ai.chat.client.advisor: debug com.ywq: debug

四、编写CommonConfiguration代码

创建一个配置类,定义ChatClient的Bean,并设置默认的系统提示和日志记录:

package com.ywq.config; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor; import org.springframework.ai.chat.memory.ChatMemory; import org.springframework.ai.chat.memory.MessageWindowChatMemory; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class CommonConfiguration { //此方法用来管理会话历史,最多记住最近20条记录 @Bean public ChatMemory chatMemory(){ return MessageWindowChatMemory.builder().maxMessages(20).build(); } //创建 ChatClient 实例 @Bean public ChatClient chatClient(OllamaChatModel model,ChatMemory chatMemory){ return ChatClient .builder(model) .defaultSystem("你是一个聪明、愉快的智能助手,你的名字叫海绵宝宝,请以海绵宝宝的身份和语气回答问题") .defaultAdvisors(new SimpleLoggerAdvisor(), // 日志记录,打印请求和响应MessageChatMemoryAdvisor.builder(chatMemory).build()) // 会话记忆管理 .build(); } }
  • .defaultSystem():设置默认提示词
  • .defaultAdvisors():配置日志,记录请求的回话日志

五、编写ChatController完成测试

创建一个控制器类,提供聊天接口。支持直接输出和流式输出:

@RequestMapping(value = "/chat1") public String chat1(String prompt) { return chatClient.prompt().user(prompt).call().content(); }

对于流式输出,需添加字符编码设置以避免乱码:

@RequestMapping(value = "/chat2", produces = "text/html;charset=utf-8") public Flux<String> chat2(String prompt) { return chatClient.prompt().user(prompt).stream().content(); }

此时将项目跑起来,浏览器访问:http://localhost:8080/ai/chat1?prompt=xxxx

这个时候恭喜你,完成了SpringAi 调用 本地部署的Ollama模块deepseek-r1:1.5b,开发了聊天机器人,但是这个页面实在太不美观,为了提升聊天机器人的用户体验,可以采用Vue 3配合Element Plus或Vuetify等UI框架快速搭建美观界面。

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

相关文章:

  • Bark iOS推送通知工具:终极自定义推送解决方案
  • 避坑指南:HC32F460 Timer0异步计数那些容易忽略的细节(以K10按键停止计数为例)
  • 为 NativeScript 应用添加 GPS 功能
  • Asian Beauty Z-Image Turbo 保姆级部署:Ubuntu 20.04系统环境配置全攻略
  • 创建函数和调用函数
  • Realtek 8852CE网卡Linux驱动全攻略:从故障排查到性能优化
  • 杭电网安复试编程Day24
  • Qt6 QML自定义控件:从零到插件化的实战开发手册
  • 3分钟掌握WE Learn智能助手:让你的网课学习效率提升300%
  • MCP3208 12位SPI ADC驱动开发与嵌入式精度采集实战
  • 【Unity进阶】AudioSource 实战技巧与性能优化指南
  • 5V光耦隔离继电器模块硬件设计与RT-Thread驱动实现
  • 极简七段数码管驱动库:裸机嵌入式GPIO直写方案
  • 一文读懂-yolo26如何预测识别图片|视频|摄像头|文件夹检测适用v8v11
  • 35岁以后,我们这些老程序员们能去哪儿?
  • Phi-3-vision-128k-instruct 创意应用:辅助 Visio 图表设计与文档撰写
  • 如何通过Win11Debloat实现Windows系统深度优化:从性能提升到隐私保护的全流程指南
  • 语音情感识别不再难:Emotion2Vec+ Large WebUI界面操作详解
  • 钻床主轴设计CAD图纸
  • Delphi 进阶实战:异常捕获+多线程,让软件更稳定、更高效!
  • 基于Gemma-3-270m的小说解析器开发教程
  • 性能调优指南:Z-Image-Turbo-rinaiqiao-huiyewunv 的 GPU 显存与推理速度优化
  • Delphi 成品发布:exe压缩、依赖处理、制作安装包,新手一步到位!
  • AnythingtoRealCharacters2511在虚拟偶像运营中的应用:2D形象→3D真人视频素材预处理
  • 仅剩47家芯片厂掌握的C语言存内逻辑映射技术,今天一次性讲透3类硬件指令扩展实现
  • 中小影楼降本增效:cv_unet_image-colorization替代传统人工上色服务案例
  • Wan2.2-T2V-A5B嵌入式展示系统:基于STM32F103C8T6的轻量级播放终端
  • 安装linux操作系统
  • 漫画脸描述生成快速上手:免配置Docker镜像开箱即用,5分钟生成NovelAI可用Tag
  • LTR559-ESP32光感与接近传感驱动实战指南