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

咳咳…大家好!今天我们来聊聊这个…AI项目的第三阶段。说实话,我写这篇文章的时候心情有点复杂,主要原因是感觉自己也没wan全理解透彻。 就这样吧... dan是没办法,deadline逼得紧嘛!总之呢,咱们的目标是实现一个个性化的AI顾问,bing且让它记住之前的对话内容。
Advisor啊…简单它就是一个拦截器。在Spring AI里面你可yi用它来对AI的调用进行一些前置或后置处理。比如你想记录日志、修改输入、huo者格式化输出啥的,dou可yi用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 | 按需付费 | 高可靠性 |
| 本地文件系统 | 免费 | 方便快捷但平安性较低 |
Demand feedback