Spring AI

Spring AI开发框架提供对接应用与AI模型的集成开发能力,让开发者更加容易地开发智能体以及其他生成式人工智能的应用:

对话客户端

对话客户端提供对接Spring AI应用与AI模型的对话能力,Spring AI应用可以使用不同AI模型厂商的对话客户端,实现业务请求,其中,Advisor可扩展组件提供对话客户端的扩展能力,实现上下文信息的存储或者对接RAG平台数据的功能,对话客户端的业务流程:

多对话客户端协同

开发环境配置

Spring AI应用支持不同厂商的AI模型协同工作,共同完成用户客户端的问题需求,在Spring AI应用工程的Maven配置文件中引入不同AI模型厂商的依赖库,在Spring AI应用工程的属性配置文件中设置AI模型厂商的API接口调用API-keys,Spring AI应用工程在启动的过程中,自动装配不同AI模型厂商的对话客户端实例:

在Spring AI应用工程中,配置定义不同AI模型厂商的对话客户端实例,ChatClient是Spring AI应用的对话客户端接口:

开发web服务接口

在Spring AI应用工程中,定义web服务接口,使用不同AI模型厂商的对话客户端协同完成用户客户端的问题需求:

在Spring AI应用工程中,也可以直接定义AI模型厂商的对话客户端实例:

Advisor可扩展组件接口描述

Advisor可扩展组件提供对话客户端的扩展能力,在对话会话的过程中,实现上下文信息的存储或者对接RAG平台数据的功能,在Spring AI应用工程中,配置定义对话客户端可扩展的内存存储实例ChatMemory,开发者可以在内存存储实例中实现上下文存储读写的需求,配置定义对话客户端可扩展的RAG向量存储引擎实例VectorStore,开发者可以在RAG向量存储引擎实例中实现RAG向量存储读写的需求:

对话客户端ChatClient可设置多个不同的Advisor可扩展组件,形成Advisor调用链:

Advisor可扩展组件的继承实现的抽象具体关系:

类ChatClientRequest

ChatClientRequest是对话客户端ChatClient的请求信息,作为Advisor调用链中的每个Advisor的输入参数:

类ChatClientResponse

ChatClientResponse是对话客户端ChatClient的响应信息,作为Advisor调用链中的每个Advisor的输出参数:

接口Ordered

Ordered是Advisor可扩展组件的顶层接口,标识每个Advisor在Advisor调用链中的调用顺序:

接口Advisor

Spring AI开发框架提供的Advisor可扩展组件的标准接口,每个Advisor实现类都需要实现该接口:

接口CallAdvisor

Spring AI开发框架提供的同步编程模式的CallAdvisor执行调用链的接口:

接口StreamAdvisor

Spring AI开发框架提供的异步流式编程模式的StreamAdvisor执行调用链的接口:

接口CallAdvisorChain

Spring AI开发框架提供的同步编程模式的CallAdvisorChain调用链的接口,ChatClient对话客户端可设置多个不同的Advisor可扩展组件的实现类,加入到Advisor调用链中,ChatClient对话客户端在处理上下文信息或者RAG数据的过程中,执行Advisor调用链中的Advisor可扩展组件:

接口StreamAdvisorChain

Spring AI开发框架提供的异步流式编程模式的StreamAdvisorChain调用链的接口,ChatClient对话客户端可设置多个不同的Advisor可扩展组件的实现类,加入到Advisor调用链中,ChatClient对话客户端在处理上下文信息或者RAG数据的过程中,执行Advisor调用链中的Advisor可扩展组件:

Advisor可扩展组件的调用链的继承实现的抽象具体关系:

Advisor可扩展组件业务流程

Advisor可扩展组件的执行调用链的业务流程:

1.Spring AI应用接收到用户客户端的Prompt提示词请求

2.Spring AI应用执行Advisor可扩展组件的调用链,获取新的Prompt提示词

3.Spring AI应用向AI模型发送Prompt提示词请求

4.AI模型接收到Spring AI应用的Prompt提示词请求,处理完业务逻辑,响应Spring AI应用的请求

5.Spring AI应用执行Advisor可扩展组件的调用链,处理AI模型的响应

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

同步编程模式与异步流式编程模式的区别

Spring AI开发框架支持的Advisor可扩展组件的同步编程模式与异步流式编程模式的区别,异步流式编程模式是采用异步非阻塞的网络模型,能大幅度提升Spring AI应用的系统吞吐量:

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模型的开放API接口所支持的输入输出参数格式不同,Spring AI开发框架提供参数转换接口的支持,其业务流程:

接口StructuredOutputConverter

Spring AI开发框架提供的结构化输出的转换器接口,该接口支持输入Prompt提示词模版的定义以及格式化,以及支持AI模型响应的输出信息的格式化:

接口StructuredOutputConverter 的继承实现的抽象具体关系:

接口Converter

接口Converter是信息格式转换器,其支持函数式编程,开发者可根据具体需求实现不同的转换器:

接口FormatProvider

接口FormatProvider是信息格式提供者,开发者可根据具体需求定义不同的信息格式,提供给Converter转换器执行信息转换的操作:

使用自定义模板格式定义文本提示词Prompt以及系统默认的信息转换器:

使用自定义模板格式定义多模态的提示词Prompt:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐