黑马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类型强转不是很熟悉。

总结

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

相关推荐
不能再留遗憾了3 小时前
【SpringCloud】Sentinel
spring·spring cloud·sentinel
whltaoin4 小时前
AI 超级智能体全栈项目阶段五:RAG 四大流程详解、最佳实践与调优(基于 Spring AI 实现)
java·人工智能·spring·rag·springai
心勤则明4 小时前
Spring AI 文档ETL实战:集成text-embedding-v4 与 Milvus
人工智能·spring·etl
艾菜籽5 小时前
Spring Web MVC入门补充1
java·后端·spring·mvc
艾菜籽7 小时前
Spring MVC入门补充2
java·spring·mvc
为java加瓦10 小时前
Spring 方法注入机制深度解析:Lookup与Replace Method原理与应用
java·数据库·spring
无名客011 小时前
SpringCloud中的网关(Gateway)的作用是什么?
spring·spring cloud·gateway
hrrrrb13 小时前
【Spring Security】Spring Security 概念
java·数据库·spring
小信丶13 小时前
Spring 中解决 “Could not autowire. There is more than one bean of type“ 错误
java·spring
hello 早上好20 小时前
深入 Spring 依赖注入底层原理
数据库·sql·spring