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

三网合一网站源码下载泰安住房和城乡建设局网站

三网合一网站源码下载,泰安住房和城乡建设局网站,羊了个羊开发公司,网站后台的建设一、前言 在上一篇文章中我们对Spring AI有了一个初步的认识,也通过编写DEMO体验了一下Spring AI,今天我们将继续学习Spring AI给我们提供的各种组件。 二、Advisors Advisors翻译成中文的意思是顾问,Spring AI 顾问 API 提供了一种灵活且…

一、前言

在上一篇文章中我们对Spring AI有了一个初步的认识,也通过编写DEMO体验了一下Spring AI,今天我们将继续学习Spring AI给我们提供的各种组件。

二、Advisors

Advisors翻译成中文的意思是顾问,Spring AI 顾问 API 提供了一种灵活且强大的方式,用于在 Spring 应用程序中拦截、修改和增强由AI驱动的交互。通过利用顾问 API,开发人员可以创建更复杂、可复用且易于维护的人工智能组件。可以把Advisorsl类比为Spring AOP,对代理对象做增强。Advisors结构如下

从图中可以看出,

(1)Advisor大体分为两类,一类是CallAroundAdvisor和StreamAroundAdvisor,从名字中就可以看出这两者的异同。

相同点:都是Around,类似于AOP中的环绕通知

不同点:前者是Call后者是Stream,也是就是说一个阻塞的一个是基于流式的。

(2)Chain:从这里我们可以看出Advisor是一个链式调用,也就是说我们可以创建多个Advisor然后构建成一个Advisorl链条,也就是责任链设计模式。

三、代码演示

1、单个Advisor

1、首先我们创建一个包名advisors,然后新建一个 MyCallAroundAdvisor 继承 BaseAdvisor,并重写相对应的方法,代码如下。这里我们先什么不做什么额外操作,只是简单的打印了一下请求参数和响应

import org.springframework.ai.chat.client.ChatClientRequest;
import org.springframework.ai.chat.client.ChatClientResponse;
import org.springframework.ai.chat.client.advisor.api.AdvisorChain;
import org.springframework.ai.chat.client.advisor.api.BaseAdvisor;public class MyCallAroundAdvisor implements BaseAdvisor {/*** 大模型执行前调用* @param chatClientRequest 大模型请求参数* @param advisorChain 大模型执行链* @return 拦截后的请求参数*/@Overridepublic ChatClientRequest before(ChatClientRequest chatClientRequest, AdvisorChain advisorChain) {System.out.println("before:chatClientRequest"+chatClientRequest.toString());return chatClientRequest;}/*** 大模型执行后调用* @param chatClientResponse 大模型响应参数* @param advisorChain 大模型执行链* @return 拦截后的响应参数*/@Overridepublic ChatClientResponse after(ChatClientResponse chatClientResponse, AdvisorChain advisorChain) {System.out.println("after:chatClientResponse"+chatClientResponse.toString());return chatClientResponse;}/*** 获取执行顺序* @return 执行顺序*/@Overridepublic int getOrder() {return 0;}
}

(2)编写测试代码

@RestController("/chat")
public class ChatController {private final ChatClient client;public ChatController(OllamaChatModel model) {client = ChatClient.builder(model).defaultAdvisors(new MyCallAroundAdvisor()).build();}@GetMapping("/chat")public String chat(String message) {return client.prompt("你是一个聊天机器人").user(message).call().content();}
}

(3)查看结果:可以看到我们已经在接口前后做了增强。

2、多个Advisors
package com.cmxy.spring_ai_demo.advisors;import org.springframework.ai.chat.client.ChatClientRequest;
import org.springframework.ai.chat.client.ChatClientResponse;
import org.springframework.ai.chat.client.advisor.api.AdvisorChain;
import org.springframework.ai.chat.client.advisor.api.BaseAdvisor;public class MySecondCallAroundAdvisor implements BaseAdvisor {/*** 大模型执行前调用* @param chatClientRequest 大模型请求参数* @param advisorChain 大模型执行链* @return 拦截后的请求参数*/@Overridepublic ChatClientRequest before(ChatClientRequest chatClientRequest, AdvisorChain advisorChain) {System.out.println("Second:chatClientRequest"+chatClientRequest.toString());return chatClientRequest;}/*** 大模型执行后调用* @param chatClientResponse 大模型响应参数* @param advisorChain 大模型执行链* @return 拦截后的响应参数*/@Overridepublic ChatClientResponse after(ChatClientResponse chatClientResponse, AdvisorChain advisorChain) {System.out.println("Second:chatClientResponse"+chatClientResponse.toString());return chatClientResponse;}/*** 获取执行顺序* @return 执行顺序*/@Overridepublic int getOrder() {return 1;}
}

再查看结果

可以看到执行的顺序为:

四、Advisor的应用场景

(1)既然是对请求前后做增强,那么Advisor第一个应用场景就是日志记录,我们可以通过Advisor来追踪整个请求。

(2)ChatMemory:聊天记忆,如果不借助外部工机具或者提示词,大模型是没有记忆功能的。例如你告诉大模型你叫什么名字,但是下次继续问大模型,大模型依旧不知道。这个是因为大模型的训练语料里并没包含相关信息,如果我们需要大模型有记忆就需要将聊天记录持久化(其实是以提示词的形式告知大模型),这里就可以用到Advisor,这个在后续的文章中也会说明

(3)RAG:很多时候我们希望大模型可以知道我们企业内部或者个人的信息,从而帮助我们做一些事情,正如上面说的大模型的训练语料里是不包含这些内容的。那怎么办呢?当然可以通过微调、提示词、或者RAG(后续会详细说),SpingAI通过Advisor可以让我们很简单的实现Rag功能。

五、结束语

今天的文章对Advisor做了简单的介绍,下一篇文章将继续Advisor,主要是针对聊天记忆和Rag进行实现,希望对你有所帮助。

未完待续

http://www.dtcms.com/a/576444.html

相关文章:

  • 官方网站开发招标须知wordpress用还得shopif好用
  • 江苏省 建设 注册中心网站首页成都高薪南网站建设
  • 统一门户网站wordpress开启评论
  • 湖南网站建设seo建门户网站需要多少钱
  • 多人在线协作网站开发如何汉化wordpress主题
  • 做头像的网站空白广州市网站建设价格
  • 重庆是哪个省免费关键词优化工具
  • 网站开发的公司排名如何开网店需要多少资金
  • 天津建设局网站首页网站放到云服务器上怎么做
  • 如何推广网站会员注册玉林城乡住房建设厅网站
  • 建立网站编程wordpress进入数据库
  • 百度网盘 做网站图床奢侈品网站怎么做tuig优化
  • 做网站 备案软件开发平台是什么
  • 网站制作课程介绍简单网页
  • 想建个板栗网站怎么做网站效果图用什么软件做
  • 建设网站虚拟现实技术如何建设与维护网站
  • wordpress页头图片比例网站群站优化
  • 网站快照时间626969com域名信息查询
  • 武进附近做网站的公司有哪些国外wordpress商城
  • 加强网站信息建设设计公司取名字大全集
  • 廊坊微信网站建设比亚迪新能源汽车车型
  • 一般的网站需要多大的空间广告公司网站设计方案
  • 营销成功案例网站企业营销推广方案
  • 如何做发卡网站wordpress更改固定连接后404
  • 网页制作与网站建设技术大全pdf外贸网站代运营
  • 实木餐桌椅网站建设进一步加大网站集约化建设力度
  • 伊牡丹江市春市网站建设上海网站推广公司
  • 南昌做网站公司哪家好标准的软件开发流程
  • 营销型网站的优势网络营销与直播电商
  • wordpress 超级管理员抖音seo推广