Spring AI 聊天模型 API
旨在为与各种 AI 模型 交互提供一个简单且可移植的接口,允许开发者在不同模型之间切换,只需最少的代码更改。
这种设计符合 Spring 的模块化和可互换性理念。
此外,借助 Prompt
等配套类进行输入封装和 ChatResponse
进行输出处理,聊天模型 API 统一了与 AI 模型的通信。
它管理请求准备和响应解析的复杂性,提供直接和简化的 API 交互。
您可以在 可用实现 部分找到更多关于可用实现的信息,以及在 聊天模型比较 部分找到详细的比较。
String
参数的 call()
方法简化了初始使用,避免了更复杂的 Prompt
和 ChatResponse
类的复杂性。
在实际应用程序中,更常见的是使用接受 Prompt
实例并返回 ChatResponse
的 call()
方法。
stream()
方法接受 String
或 Prompt
参数,类似于 ChatModel
,但它使用响应式 Flux API 流式传输响应。
ModelRequest
,它封装了 Message 对象列表和可选的模型请求选项。
以下列表显示了 Prompt
类的截断版本,不包括构造函数和其他实用方法:
Message
接口封装了 Prompt
文本内容、元数据属性集合和称为 MessageType
的分类。
接口定义如下:
MediaContent
接口,提供 Media
内容对象列表。
Message
接口有各种实现,对应于 AI 模型可以处理的消息类别:
Spring AI 消息 API
MessageType
有效映射。
例如,OpenAI 识别不同对话角色的消息类别,如 system
、user
、function
或 assistant
。
虽然 MessageType
这个术语可能暗示特定的消息格式,但在这种情况下,它实际上指定了消息在对话中扮演的角色。
对于不使用特定角色的 AI 模型,UserMessage
实现作为标准类别,通常代表用户生成的查询或指令。
要了解 Prompt
和 Message
之间的实际应用和关系,特别是在这些角色或消息类别的上下文中,请参阅 提示 部分中的详细说明。
ChatOptions
类是 ModelOptions
的子类,用于定义可以传递给 AI 模型的几个可移植选项。
ChatOptions
类定义如下:
logitBias
、seed
和 user
。
这是一个强大的功能,允许开发者在启动应用程序时使用模型特定的选项,然后使用 Prompt
请求在运行时覆盖它们。
Spring AI 提供了一个复杂的系统来配置和使用聊天模型。
它允许在启动时设置默认配置,同时还提供了在每次请求的基础上覆盖这些设置的灵活性。
这种方法使开发者能够轻松地使用不同的 AI 模型并根据需要调整参数,所有这些都在 Spring AI 框架提供的一致接口内。
以下流程图说明了 Spring AI 如何处理聊天模型的配置和执行,结合了启动和运行时选项:
聊天选项流程
启动配置
运行时配置
选项合并过程
输入处理
输出处理
ChatResponse
格式。ChatResponse
类的结构如下:
Generation
实例包含来自单个提示的潜在多个输出之一。
ChatResponse
类还携带有关 AI 模型响应的 ChatResponseMetadata
元数据。
ModelResult
扩展而来,表示模型输出(助手消息)和相关元数据:
ChatModel
和 StreamingChatModel
用于与来自不同提供商的各种 AI 聊天模型交互,允许轻松集成和在不同 AI 服务之间切换,同时为客户端应用程序维护一致的 API。
Spring AI 聊天完成客户端
通用模型 API
之上,提供聊天特定的抽象和实现。
这允许轻松集成和在不同 AI 服务之间切换,同时为客户端应用程序维护一致的 API。
以下类图说明了 Spring AI 聊天模型 API 的主要类和接口。
Spring AI 聊天 API