网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

如何实现AI项目阶段三:个性化顾问与对话记忆的持久化存储?

GG网络技术分享 2026-01-23 10:16 3


AI 超级智Neng体全栈项目阶段三:自定义 Advisor 与结构化输出实现以及对话记忆持久化开发

咳咳…大家好!今天我们来聊聊这个…AI项目的第三阶段。说实话,我写这篇文章的时候心情有点复杂,主要原因是感觉自己也没wan全理解透彻。 就这样吧... dan是没办法,deadline逼得紧嘛!总之呢,咱们的目标是实现一个个性化的AI顾问,bing且让它记住之前的对话内容。

先说说说说Advisor这玩意儿

什么是Advisor?

Advisor啊…简单它就是一个拦截器。在Spring AI里面你可yi用它来对AI的调用进行一些前置或后置处理。比如你想记录日志、修改输入、huo者格式化输出啥的,dou可yi用Advisor来实现。我觉得它就像个门卫一样…总是站在那里检查来往的人,杀疯了!。

自定义Advisor

妥妥的! 好吧, 既然是自定义的Advisor嘛,那就要自己写代码了。我写的那个…叫ZuoMyLogAdvisor。它的作用就是简单地记录一些日志信息。其实也没啥特bie的技巧,就是实现了几个接口而Yi。


package cn.varin.varaiagent.advisor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.advisor.api.*;
import org.springframework.ai.chat.model.MessageAggregator;
import reactor.core.publisher.Flux;
@Slf4j
public class MyLogAdvisor implements CallAroundAdvisor {  // huo者 StreamAroundAdvisor 也可yi... 反正dou差不多啦!
    @Override
    public Flux execute { // input 就是你输入的内容! 惊喜不惊喜? 意外不意外? 哈哈!
        log.info; // 记录日志! 重要的事情说三遍! 日志日志日志!  嗯... 就这样吧...  哎呀我好困啊... 算了就这样了...  反正没人kan我的代码对吧...? 
        return chain.execute; // 继续施行后面的流程! 不然就卡住了!  可怕...  不要卡住! 不要卡住! 不要卡住! 好怕卡住... 
    }
} // 类结束啦~ 好吧其实我也不知道为啥要加注释这么多... 就是想显得geng专业一点而Yi啦~    啊哈~ 你发现了吗? 我这里只实现了CallAroundAdvisor哦~ 主要原因是StreamAroundAdvisor太复杂了!我不想写了!真的! 我累了!

结构化输出是什么鬼?

为什么要结构化输出?

结构化输出就是把AI生成的后来啊变成一种特定的格式, 比如JSON、XML、huo者一个Java对象之类的。这样Zuo的好处是可yi方便后续的处理和分析。想象一下如guo你想把AI生成的报告保存到数据库里怎么办?没有结构化的输出那可就麻烦大了。

内置转换器和自定义转换器

Spring AI提供了一些内置的转换器可yi帮你把AI生成的后来啊转换成各种各样的格式。dan是有时候这些内置的转换器并不Neng满足你的需求,这时候你就可yi自己写转换器了,踩个点。。

对话记忆持久化的那些事儿

为什么要持久化对话记忆?

如guo你的AI顾问需要记住之前的对话内容才Neng提供geng好的服务的话,那么你就需要把对话记忆持久化到数据库huo者其他存储介质中去,我服了。。

实现方案

产品名称价格特点
阿里云盘99元/年大容量存储
腾讯云COS按需付费高可靠性
本地文件系统免费方便快捷但平安性较低

阿里云灵积模型Qwen-Plus

再说说的


提交需求或反馈

Demand feedback