Spring AI开发指导-对话模型

对话模型接口描述

Spring AI基于Spring Cloud的架构体系,定义了一系列可扩展的API接口,支持对接不同类型的AI大模型的核心功能,这些API接口支持同步编程模式或者异步编程模式:

图片

接口Model

Model是同步编程模式接口,其参数支持同步请求与响应:

图片

接口Model的模型类型的继承实现的抽象具体关系:

图片

接口StreamingModel

StreamingModel是异步编程模式接口,其参数支持异步流式请求与响应:

图片

接口StreamingModel的模型类型的继承实现的抽象具体关系:

图片

接口ChatModel

ChatModel是对话模型的扩展接口,不同AI模型的厂商独立实现该接口,在Maven项目中,需要独立引入对应AI模型厂商的依赖库:

图片

接口ChatModel继承了同步编程接口Model以及异步编程接口StreamingChatModel,该接口既支持同步编程模式,也支持异步编程模式:

图片

在Maven项目中,引入了AI模型厂商DeepSeek的依赖库,接口ChatModel的模型类型的继承实现的抽象具体关系:

图片

Prompt提示词接口描述

接口ModelRequest

对话模型的请求信息接口ModelRequest,所有对话模型的请求信息都实现该接口,包括提示词:

图片

请求信息接口ModelRequest的继承实现的抽象具体关系:

图片

接口ModelResponse

对话模型的响应信息接口ModelResponse,所有对话模型的响应信息都实现该接口:

图片

响应信息接口ModelResponse的继承实现的抽象具体关系:

图片

提示词类Prompt

提示词类Prompt的继承实现的抽象具体关系,其中,接口Message用于封装消息内容:

图片

Spring AI消息内容接口

Spring AI消息内容接口的继承实现的抽象具体关系:

图片

接口Content

消息内容顶层接口Content,所有内容消息类型都实现该接口:

图片

消息内容顶层接口Content的继承实现的抽象具体关系:

图片

接口Message

消息内容接口Message,所有消息内容类型都实现该接口:

图片

消息内容接口Message的继承实现的抽象具体关系:

图片

接口MediaContent

多媒体内容接口MediaContent:

图片

多媒体内容接口MediaContent的继承实现的抽象具体关系:

图片

抽象类AbstractMessage

消息内容的抽象类AbstractMessage,所有消息内容类型都实现该类:

图片

消息内容的抽象类AbstractMessage的继承实现的抽象具体关系:

图片

接口MessageType

消息内容的消息类型,其中,包括user类型,该类型的消息来自客户端用户,assistant类型,该类型的消息来自AI模型的响应,system类型,该类型的消息来自系统级别的指示,tool类型,该类型的消息来自工具调用中的功能需求:

图片

消息内容为user类型的类:

图片

消息内容为assistant类型的类:

图片

消息内容为system类型的类:

图片

消息内容为tool类型的类:

图片

Spring AI应用与AI模型的业务流程

Spring AI应用获取客户端输入的提示词Prompt,Spring AI应用处理输入的Prompt,向AI模型发起请求,AI模型处理业务,AI模型响应Spring AI应用的请求,Spring AI应用处理输出,响应客户端的请求:

图片

工具调用流程

Spring AI支持的AI模型工具调用的业务流程:

图片

1.Spring AI应用接受客户端的请求,向AI模型发起对话的请求,请求信息包括工具调用的元数据信息,名称、描述以及输入数据

2.AI模型向Spring AI应用发起工具调用的请求,Spring AI应用向第三方的开放接口转发AI模型的请求

3.Spring AI应用调用第三方的开放接口

4.第三方的开放接口响应Spring AI应用的请求

5.Spring AI应用响应AI模型的请求

6.AI模型响应Spring AI应用的请求,Spring AI应用响应客户端的请求

数据标准化流程

Spring AI提供开发框架支持数据标准化的业务流程,读取数据源输入的文档文本,对文档文本执行标准化处理,输出文档文本到存储中保存:

图片

DeepSeek对话模型应用开发

搭建开发环境

Spring AI支持很多AI模型的集成开发,其中,包括DeepSeek大模型,注册登录DeepSeek官方网站,获取开放平台提供的API接口调用的API-keys,在Spring Boot Maven项目的属性配置文件中设置spring.ai.deepseek.api-key,在Maven配置文件中引入deepseek-ai开发依赖库以及webflux开发框架依赖库:

图片

开发AI应用服务

定义Spring AI 应用的web服务接口,初始化DeepSeek的AI模型对话客户端:

图片

定义Spring AI 应用的同步编程模式的web服务接口,Spring AI应用向AI模型发送对话请求,Spring AI应用向客户端响应AI模型的对话请求:

图片

定义Spring AI 应用的异步编程模式的web服务接口,Spring AI应用向AI模型发送对话请求,Spring AI应用向客户端异步流式响应AI模型的对话请求:

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94351.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win11 下卸载 Oracle11g

目录 1、停止服务 2、启动 Universal install 应用 3、执行 deinstall.bat 脚本 4、删除注册表相关数据 5、删除环境变量中的oracle相关路径 6、删除安装文件 7、删除C盘中的相关Oracle文件 8、删除 Oracle 数据存放目录 9、检查 10、重装oracle可能还会碰到的问题 &…

深入剖析Spring Boot应用启动全流程

目录 前言 启动流程概览 一、第一阶段:初始化SpringApplication 二、第二阶段:运行SpringApplication 三、第三阶段:环境准备 四、第四阶段:创建应用上下文 五、第五阶段:准备应用上下文 六、第六阶段&#xf…

Matplotlib 可视化大师系列(三):plt.bar() 与 plt.barh() - 清晰对比的柱状图

目录Matplotlib 可视化大师系列博客总览Matplotlib 可视化大师系列(三):plt.bar() 与 plt.barh() - 清晰对比的柱状图一、 柱状图是什么?何时使用?二、 函数原型与核心参数plt.bar(x, height, ...) - 垂直柱状图plt.ba…

基于 FastAPI 和 OpenFeature 使用 Feature Flag 控制业务功能

模拟业务场景:多租户系统跨域转账,需要控制某租户下某用户是否可以在某域转账 open_feature_util.py import typing from abc import abstractmethod, ABCMeta from typing import Sequencefrom openfeature.evaluation_context import EvaluationContex…

Stm32通过ESP8266 WiFi连接阿里云平台

本文将介绍stm32如何通过WiFi来连接阿里云,上传数据和接收指令。要先与阿里云建立TCP连接,然后再通过MQTT协议交互。 大体流程:1、在阿里云网页上创建产品和设备;2、stm32通过WiFi连接云平台;3、MQTT连接阿里云&#…

北京-测试-入职甲方金融-上班第三天

今日上班时间9-20.18,再加42分钟就可以拿到75块钱了,但我想回家,所以下班今天上午有人事举办的入职培训,下午有业务培训,培训完领导给我安排了两个需求。慌死,吓死,我都不懂,业务和工…

Java基础第2天总结

使用switch时注意事项:表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long(精确度问题,小数有点不精确)。case给出的值不允许重复,且只能是字面量,不…

鸿蒙开发中的List组件详解

目录 引言 1.List组件基础 2.List接口参数 1.space 2.initialIndex 3.scroller 3.ListView的属性 1.listDirection 2.lanes 3.divider 4.scrollBar 4.布局与约束 5.ListItem生命周期 1.使用ForEach创建ListItem 2.使用LazyForEach创建ListItem 3…

2026界计算机专业毕业的有福了!(开题报告任务书)

开题报告 我们以基于Java的婚纱店管理系统为案例进行指导。 任务书: 首先是毕设的立题依据,这个主要描写一些简洁大体的大白话,描述一下你为什么要做这个题目的毕设。 那就需要你描述一下现阶段社会面婚纱店的运营情况,写一些…

安全、高效、可靠的物理隔离网络安全专用设备———信刻光盘安全隔离与文件单向导入系统!

着各种数据传输、储存技术、信息技术的快速发展,保护信息安全是重中之重。军工企业、政府、部队及企事业单位等利用A网与B网开展导入/导出相关工作已成为不可逆转的趋势。针对于业务需要与保密规范相关要求,涉及重要秘密信息,需做到完全的物理…

JetPack 与 PyTorch 版本对应及资源详情

下载链接 JetPack 版本适配 PyTorch 版本发布日期可下载资源(.whl 安装包 / 文档)JP 6.1PyTorch 2.5.0a0(构建号:872d972e41.nv24.08.17622132)2024/10/01- torch-2.5.0a0872d972e41.nv24.08.17622132-cp310-cp310-li…

【c++进阶系列】:万字详解多态

🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 你以为自己在孤独地爬坡吗?看看身后吧——那些被汗水浸湿的脚印,早已连成一道向上的阶梯 ★★★ 本文前置知识&am…

AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年8月23日第168弹

从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀4-5个和值,可以做到100-300注左右。(1)定位…

分布式搜索(Elasticsearch)深入用法

目录 数据聚合 聚合的种类 DSL实现聚合 桶聚合 度量聚合 RestAPI实现聚合 多条件聚合 自动补全 拼音分词器 自定义分词器 自动补全查询 实现搜索框自动补全 数据同步 数据同步思路分析 实现elasticsearch与数据库数据同步 集群 搭建ES集群 集群脑裂问题 集群…

java:接口与实现类

1. Java 基础层面接口(Interface) 只是方法的定义/规范,里面没有真正的逻辑。例如:public interface IBookService {boolean save(Book book); }👉 这里只说明了:我要有一个 save 方法,但“怎么…

Chrome 插件开发实战:从入门到进阶

1.1 Chrome 插件的魅力与应用场景Chrome 插件是增强 Chrome 浏览器功能的得力助手,能实现广告拦截、密码管理、标签管理等实用功能。在日常办公中,我们可以借助插件提升效率,如自动填充表单、快速保存网页内容;在浏览网页时&#…

通过官方文档详解Ultralytics YOLO 开源工程-熟练使用 YOLO11实现分割、分类、旋转框检测和姿势估计(附测试代码)

目录 前言: 1.了解ultralytics工程与yolo模型 1.1 yolo11可以为我们做些什 1.2 yolo11模型的高性能 1.3 对于yolo11一些常见的问题 1.3.1 YOLO11 如何以更少的参数实现更高的精度? 1.3.2 YOLO11 可以部署在边缘设备上吗? 2. 深入了解y…

vue实现小程序oss分片上传

随着小程序越来越普及,小程序上传文件必不可少,那么上传的文件大小就不可控了,小则几mb,大到好几百mb,小文件还可以,但是一到超过200mb或稍微再大些的小程序就很容易上传失败,导致功能不能继续进行。以下我们就来解决这个问题,将大文件实现分片上传 温馨提示,不要看内…

14.Shell脚本修炼手册--玩转循环结构(While 与 Until 的应用技巧与案例)

while 循环和 until 循环的应用实践 文章目录while 循环和 until 循环的应用实践当型和直到型循环:两种 "重复" 的逻辑while 循环:满足条件就继续until 循环:不满足条件就继续基础示例:从简单场景学用法示例 1&#xff…

chromadb使用hugging face模型时利用镜像网站下载注意事项

chromadb默认使用sentence-transformers/all-MiniLM-L6-v2的词嵌入(词向量)模型,如果在程序首次运行时,collection的add或query操作时如果没有指定embeddings或query_embeddings,程序会自动下载相关嵌入向量模型&#…