黑马SpringAI项目-聊天机器人

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

例如:完成黑马课程,聊天机器人的编写
视频课-不完整

笔记完整

这是一种开发,还有纯prompt开发和向量开发,并没有尝试。

提示:以下是本篇文章正文内容,下面案例可供参考

一、前往gitee寻找相关作品

寻找到了相关课程-gitee

二、修改项目

因为我们只做第一个聊天机器人,所以很多地方都是不必须的。

1.修改application.yml

app-id是自定义功能,可以不用写

业务空间id也可以不用写

2.调用前端

写完了启动后,浏览器会报一个错,我没有截屏,当时想无非就是调用的问题,加上前端就能使用,事实上确实如此。
获取前端资料的方式:微信搜索黑马程序员公众号,然后发送Springai获取

注意:1.解压后的spring-ai-protal里面还有一个同名的spring-ai-protal,要cd进去npm install。

2.他给的资料里面缺少一个script文件夹中的copy-webviewer.js,主包是利用ai补全的,但是主包更推荐另一种方式,就是利用ai生成一整个前端,虽然这样也没有什么用,但是以后需要前端的时候可以自己生成,具体内容在鱼皮的视频:利用cursor自动前端生成

3.使用截图

三、技术简介

1.主包学到的第一个是普通调用和流式调用,区别就是流式调用把.call()改成.stream(),并且改一下返回值。

java 复制代码
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/ai")
 public class ChatController {
 ​
     private final ChatClient chatClient;
 ​
     @RequestMapping(value = "/chat", produces = "text/html;charset=utf-8")
     public String chat(String prompt) {
         return chatClient.prompt()
                 .user(prompt)
                 .call()
                 .content();
     }
 }

流式调用:

java 复制代码
 @RequiredArgsConstructor
 @RestController
 @RequestMapping("/ai")
 public class ChatController {
 ​
     private final ChatClient chatClient;
 ​
     @RequestMapping(value = "/chat", produces = "text/html;charset=utf-8")
     public Flux<String> chat(String prompt) {
         return chatClient.prompt()
                 .user(prompt)
                 .stream()
                 .content();
     }
 }

2.第二个就是添加日志了。(第三个是会话记忆,视频里是把他储存在内存中,这个反正是比较混沌的储存,问过他就永远记得了,后面一步就是进行区分。)

java 复制代码
 @Configuration
 public class CommonConfiguration {
     @Bean
     public ChatClient  chatClient(OllamaChatModel model) {
         return ChatClient
                 .builder(model)
                 .defaultSystem("你是合肥工业大学的一名资深老学长,十分熟悉校园,请以该身份的语气和性格回答问题")
                 .defaultAdvisors(new SimpleLoggerAdvisor())
                 .build();
     }
 }

添加完日志后还需要更改一下yml文件:

logging:

level:

org.springframework.ai: debug # AI对话的日志级别

com.itheima.ai: debug # 本项目的日志级别

3.给每个会话一个会话id,根据这个会话id来取数据

开启会话记忆

手动写一个接口和实现类,来保存和获取会话id;再写一个controller来获取会话id和会话内容。

ps:主包对VO类型强转不是很熟悉。

总结

主包最近脚流脓了,医生说是甲沟炎,要切除部分指甲,疼死主包了,打麻药那么长的针,不过这也让主包有时间写这个聊天机器人的项目。做这个其实只用花两天时间,主包做它是想把它当成简历上的第二个项目。

相关推荐
过期动态36 分钟前
Java开发中的@EnableWebMvc注解和WebMvcConfigurer接口
java·开发语言·spring boot·spring·tomcat·maven·idea
雪碧聊技术3 小时前
langchain4j和springAI二者如何抉择?
springai·langchain4j·java的ai框架
JavaGuide6 小时前
推荐一个基于 Spring Boot 4.0 + Java 21 + Spring AI 2.0 的大模型项目!
java·spring boot·spring
NE_STOP6 小时前
spring6-多种类型的注入方式
spring
小马爱打代码6 小时前
Spring Boot :使用 Spring Cache 注解方式集成 Redis
spring boot·redis·spring
有味道的男人7 小时前
1688获得商品类目调取商品榜单
java·前端·spring
树码小子8 小时前
SpringMCV(9)响应:返回静态页面 & 修改响应数据
spring·mvc
Remember_9938 小时前
Spring 事务深度解析:实现方式、隔离级别与传播机制全攻略
java·开发语言·数据库·后端·spring·leetcode·oracle
roman_日积跬步-终至千里8 小时前
【Java并发】用 JMM 与 Happens-Before 解决多线程可见性与有序性问题
java·开发语言·spring
独断万古他化8 小时前
【Spring 核心:AOP】基础到深入:思想、实现方式、切点表达式与自定义注解全梳理
java·spring·spring aop·aop·切面编程