Spring AI开发指导-对话客户端
4.AI模型接收到Spring AI应用的Prompt提示词请求,处理完业务逻辑,响应Spring AI应用的请求。
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:
更多推荐
所有评论(0)