升级说明
升级到 1.0.0-SNAPSHOT
添加 Snapshot 仓库
要使用 1.0.0-SNAPSHOT 版本,您需要将快照仓库添加到您的构建文件中。 有关详细说明,请参阅《入门指南》中的 快照 - 添加快照仓库 部分。
更新依赖管理
在您的构建配置中,将 Spring AI BOM 版本更新为 1.0.0-SNAPSHOT
。
有关配置依赖管理的详细说明,请参阅《入门指南》中的 依赖管理 部分。
升级到 1.0.0-RC1
您可以使用 OpenRewrite recipe 自动化升级到 1.0.0-RC1 的过程。 此 recipe 有助于应用此版本所需的许多代码更改。 请在 Arconia Spring AI Migrations 查找 recipe 和使用说明。
破坏性变更
Chat Client 和 Advisors
影响最终用户代码的主要变化是:
-
在
VectorStoreChatMemoryAdvisor
中:-
常量
CHAT_MEMORY_RETRIEVE_SIZE_KEY
已重命名为TOP_K
。 -
常量
DEFAULT_CHAT_MEMORY_RESPONSE_SIZE
(值: 100) 已重命名为DEFAULT_TOP_K
,并使用新的默认值 20。
-
-
常量
CHAT_MEMORY_CONVERSATION_ID_KEY
已重命名为CONVERSATION_ID
,并从AbstractChatMemoryAdvisor
移至ChatMemory
接口。更新您的导入以使用org.springframework.ai.chat.memory.ChatMemory.CONVERSATION_ID
。
Advisors 中的自包含模板
执行提示增强的内置 advisors 已更新为使用自包含模板。目标是让每个 advisor 都能执行模板操作,而不会影响或受其他 advisors 中的模板和提示决策的影响。
如果您为以下 advisors 提供了自定义模板,您需要更新它们以确保包含所有预期的占位符。
-
QuestionAnswerAdvisor
需要一个包含以下占位符的模板(详见 更多详情):-
query
占位符用于接收用户问题。 -
question_answer_context
占位符用于接收检索到的上下文。
-
-
PromptChatMemoryAdvisor
需要一个包含以下占位符的模板(详见 更多详情):-
instructions
占位符用于接收原始系统消息。 -
memory
占位符用于接收检索到的对话记忆。
-
-
VectorStoreChatMemoryAdvisor
需要一个包含以下占位符的模板(详见 更多详情):-
instructions
占位符用于接收原始系统消息。 -
long_term_memory
占位符用于接收检索到的对话记忆。
-
可观测性
-
重构内容观察以使用日志代替跟踪 (ca843e8)
-
将内容观察过滤器替换为日志处理程序
-
重命名配置属性以更好地反映其用途:
-
include-prompt
→log-prompt
-
include-completion
→log-completion
-
include-query-response
→log-query-response
-
-
添加
TracingAwareLoggingObservationHandler
用于跟踪感知日志记录 -
将
micrometer-tracing-bridge-otel
替换为micrometer-tracing
-
移除基于事件的跟踪,转而使用直接日志记录
-
移除对 OTel SDK 的直接依赖
-
在观察属性中将
includePrompt
重命名为logPrompt
(在ChatClientBuilderProperties
、ChatObservationProperties
和ImageObservationProperties
中)
-
聊天记忆仓库模块和自动配置重命名
我们通过在整个代码库中添加仓库后缀,标准化了聊天记忆组件的命名模式。此更改影响 Cassandra、JDBC 和 Neo4j 实现,影响 artifact ID、Java 包名和类名以提高清晰度。
Artifact ID
所有与记忆相关的 artifact 现在都遵循一致的模式:
-
spring-ai-model-chat-memory-
→spring-ai-model-chat-memory-repository-
-
spring-ai-autoconfigure-model-chat-memory-
→spring-ai-autoconfigure-model-chat-memory-repository-
-
spring-ai-starter-model-chat-memory-
→spring-ai-starter-model-chat-memory-repository-
Java 包
-
包路径现在包含
.repository.
段 -
示例:
org.springframework.ai.chat.memory.jdbc
→org.springframework.ai.chat.memory.repository.jdbc
配置类
-
主要自动配置类现在使用
Repository
后缀 -
示例:
JdbcChatMemoryAutoConfiguration
→JdbcChatMemoryRepositoryAutoConfiguration
属性
-
配置属性从
spring.ai.chat.memory.<storage>…
重命名为spring.ai.chat.memory.repository.<storage>…
需要迁移: - 更新您的 Maven/Gradle 依赖项以使用新的 artifact ID。 - 更新任何使用旧包或类名的导入、类引用或配置。
消息聚合器重构
变更
-
MessageAggregator
类已从spring-ai-client-chat
模块的org.springframework.ai.chat.model
包移动到spring-ai-model
模块(包名相同) -
aggregateChatClientResponse
方法已从MessageAggregator
中移除,并移动到org.springframework.ai.chat.client
包中的新类ChatClientMessageAggregator
迁移指南
如果您之前直接使用 MessageAggregator
的 aggregateChatClientResponse
方法,您需要改用新的 ChatClientMessageAggregator
类:
// Before
new MessageAggregator().aggregateChatClientResponse(chatClientResponses, aggregationHandler);
// After
new ChatClientMessageAggregator().aggregateChatClientResponse(chatClientResponses, aggregationHandler);
不要忘记添加适当的导入:
import org.springframework.ai.chat.client.ChatClientMessageAggregator;
移除的向量存储
-
移除了 HanaDB 向量存储自动配置 (f3b4624)
依赖项
-
移除了 spring-ai-openai 中未使用的 json-path 依赖项 (9de13d1)
行为变更
Azure OpenAI
-
为 Azure OpenAI 添加了 Entra ID 身份管理,并进行了干净的自动配置 (3dc86d3)
升级到 1.0.0-M8
您可以使用 OpenRewrite recipe 自动化升级到 1.0.0-M8 的过程。 此 recipe 有助于应用此版本所需的许多代码更改。 请在 Arconia Spring AI Migrations 查找 recipe 和使用说明。
破坏性变更
从 Spring AI 1.0 M7 升级到 1.0 M8 时,之前注册工具回调的用户会遇到破坏性更改,导致工具调用功能静默失败。这尤其影响了使用已弃用 tools()
方法的代码。
示例
这是一个在 M7 中有效但在 M8 中不再按预期运行的代码示例:
// This worked in M7 but silently fails in M8
ChatClient chatClient = new OpenAiChatClient(api)
.tools(List.of(
new Tool("get_current_weather", "Get the current weather in a given location",
new ToolSpecification.ToolParameter("location", "The city and state, e.g. San Francisco, CA", true))
))
.toolCallbacks(List.of(
new ToolCallback("get_current_weather", (toolName, params) -> {
// Weather retrieval logic
return Map.of("temperature", 72, "unit", "fahrenheit", "description", "Sunny");
})
));
解决方案
解决方案是使用 toolSpecifications()
方法而不是已弃用的 tools()
方法:
// This works in M8
ChatClient chatClient = new OpenAiChatClient(api)
.toolSpecifications(List.of(
new Tool("get_current_weather", "Get the current weather in a given location",
new ToolSpecification.ToolParameter("location", "The city and state, e.g. San Francisco, CA", true))
))
.toolCallbacks(List.of(
new ToolCallback("get_current_weather", (toolName, params) -> {
// Weather retrieval logic
return Map.of("temperature", 72, "unit", "fahrenheit", "description", "Sunny");
})
));
行为变更
可观测性
-
重构内容观察以使用日志代替跟踪 (ca843e8)
-
将内容观察过滤器替换为日志处理程序
-
重命名配置属性以更好地反映其用途:
-
include-prompt
→log-prompt
-
include-completion
→log-completion
-
include-query-response
→log-query-response
-
-
添加
TracingAwareLoggingObservationHandler
用于跟踪感知日志记录 -
将
micrometer-tracing-bridge-otel
替换为micrometer-tracing
-
移除基于事件的跟踪,转而使用直接日志记录
-
移除对 OTel SDK 的直接依赖
-
在观察属性中将
includePrompt
重命名为logPrompt
(在ChatClientBuilderProperties
、ChatObservationProperties
和ImageObservationProperties
中)
-
Azure OpenAI
-
为 Azure OpenAI 添加了 Entra ID 身份管理,并进行了干净的自动配置 (3dc86d3)
升级到 1.0.0-M7
MCP Java SDK 升级到 0.9.0
Spring AI 1.0.0-M7 现在使用 MCP Java SDK 0.9.0 版本,该版本包含与以前版本相比的重大更改。如果您在应用程序中使用 MCP,您需要更新您的代码以适应这些更改。
主要变化包括:
接口重命名
-
ClientMcpTransport
→McpClientTransport
-
ServerMcpTransport
→McpServerTransport
-
DefaultMcpSession
→McpClientSession
或McpServerSession
-
所有
*Registration
类 →*Specification
类
服务器创建更改
-
使用
McpServerTransportProvider
而不是ServerMcpTransport
// Before
ServerMcpTransport transport = new WebFluxSseServerTransport(objectMapper, "/mcp/message");
var server = McpServer.sync(transport)
.serverInfo("my-server", "1.0.0")
.build();
// After
McpServerTransportProvider transportProvider = new WebFluxSseServerTransportProvider(objectMapper, "/mcp/message");
var server = McpServer.sync(transportProvider)
.serverInfo("my-server", "1.0.0")
.build();
处理器签名更改
所有处理器现在都将 exchange
参数作为它们的第一个参数接收:
// Before
.tool(calculatorTool, args -> new CallToolResult("Result: " + calculate(args)))
// After
.tool(calculatorTool, (exchange, args) -> new CallToolResult("Result: " + calculate(args)))
通过 Exchange 进行客户端交互
以前在服务器上可用的方法现在通过 exchange 对象访问:
// Before
ClientCapabilities capabilities = server.getClientCapabilities();
CreateMessageResult result = server.createMessage(new CreateMessageRequest(...));
// After
ClientCapabilities capabilities = exchange.getClientCapabilities();
CreateMessageResult result = exchange.createMessage(new CreateMessageRequest(...));
根更改处理器
// Before
.rootsChangeConsumers(List.of(
roots -> System.out.println("Roots changed: " + roots)
))
// After
.rootsChangeHandlers(List.of(
(exchange, roots) -> System.out.println("Roots changed: " + roots)
))
有关迁移 MCP 代码的完整指南,请参阅 MCP 迁移指南。
启用/禁用模型自动配置
以前用于启用/禁用模型自动配置的配置属性已移除:
-
spring.ai.<provider>.chat.enabled
-
spring.ai.<provider>.embedding.enabled
-
spring.ai.<provider>.image.enabled
-
spring.ai.<provider>.moderation.enabled
默认情况下,如果在类路径中找到模型提供程序(例如,OpenAI、Ollama),则其相应模型类型(聊天、嵌入等)的自动配置将启用。如果存在同一模型类型的多个提供程序(例如,spring-ai-openai-spring-boot-starter
和 spring-ai-ollama-spring-boot-starter
),您可以使用以下属性选择*哪个*提供程序的自动配置应该处于活动状态,从而有效地禁用其他提供程序在该特定模型类型上的自动配置。
要完全禁用特定模型类型的自动配置,即使只有一个提供程序存在,请将相应属性设置为与类路径上任何提供程序都不匹配的值(例如,none
或 disabled
)。
您可以参考 SpringAIModels
枚举以获取已知提供程序值的列表。
-
spring.ai.model.audio.speech=<model-provider|none>
-
spring.ai.model.audio.transcription=<model-provider|none>
-
spring.ai.model.chat=<model-provider|none>
-
spring.ai.model.embedding=<model-provider|none>
-
spring.ai.model.embedding.multimodal=<model-provider|none>
-
spring.ai.model.embedding.text=<model-provider|none>
-
spring.ai.model.image=<model-provider|none>
-
spring.ai.model.moderation=<model-provider|none>
使用 AI 自动化升级
您可以使用 Claude Code CLI 工具和提供的提示自动化升级到 1.0.0-M7 的过程:
-
从 update-to-m7.txt 文件复制提示
-
将提示粘贴到 Claude Code CLI 中
-
AI 将分析您的项目并进行必要的更改
自动升级提示目前处理 artifact ID 更改、包重定位和模块结构更改,但尚未包含升级到 MCP 0.9.0 的自动更改。如果您正在使用 MCP,您需要按照 mcp-java-sdk-upgrade-to-0-9-0 部分的指导手动更新您的代码。 |
各版本间的通用更改
Artifact ID 更改
Spring AI starter artifacts 的命名模式已更改。 您需要根据以下模式更新您的依赖项:
-
模型 starter:
spring-ai-{model}-spring-boot-starter
→spring-ai-starter-model-{model}
-
向量存储 starter:
spring-ai-{store}-store-spring-boot-starter
→spring-ai-starter-vector-store-{store}
-
MCP starter:
spring-ai-mcp-{type}-spring-boot-starter
→spring-ai-starter-mcp-{type}
示例
-
Maven
-
Gradle
<!-- BEFORE -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- AFTER -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
// BEFORE
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
implementation 'org.springframework.ai:spring-ai-redis-store-spring-boot-starter'
// AFTER
implementation 'org.springframework.ai:spring-ai-starter-model-openai'
implementation 'org.springframework.ai:spring-ai-starter-vector-store-redis'
Spring AI 自动配置 Artifact 的更改
Spring AI 自动配置已从单个整体 artifact 更改为每个模型、向量存储和其他组件的独立自动配置 artifact。 此更改旨在最大程度地减少不同版本的依赖库(例如 Google Protocol Buffers、Google RPC 等)冲突的影响。 通过将自动配置分离到特定于组件的 artifact 中,您可以避免引入不必要的依赖项并降低应用程序中版本冲突的风险。
原始的整体 artifact 不再可用:
<!-- NO LONGER AVAILABLE -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-autoconfigure</artifactId>
<version>${project.version}</version>
</dependency>
相反,每个组件现在都有自己的自动配置 artifact,遵循以下模式:
-
模型自动配置:
spring-ai-autoconfigure-model-{model}
-
向量存储自动配置:
spring-ai-autoconfigure-vector-store-{store}
-
MCP 自动配置:
spring-ai-autoconfigure-mcp-{type}
新自动配置 Artifact 的示例
-
Models
-
Vector Stores
-
MCP
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-openai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-anthropic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-vertex-ai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-vector-store-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-vector-store-pgvector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-vector-store-chroma</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-mcp-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-mcp-server</artifactId>
</dependency>
在大多数情况下,您不需要显式添加这些自动配置依赖项。 它们在使用相应的 starter 依赖项时会传递性地包含。 |
包名更改
您的 IDE 应该会协助重构到新的包位置。
-
KeywordMetadataEnricher
和SummaryMetadataEnricher
已从org.springframework.ai.transformer
移动到org.springframework.ai.chat.transformer
。 -
Content
、MediaContent
和Media
已从org.springframework.ai.model
移动到org.springframework.ai.content
。
模块结构
项目对其模块和 artifact 结构进行了重大更改。以前,spring-ai-core
包含所有核心接口,但现在已将其拆分为专门的领域模块,以减少应用程序中不必要的依赖项。

spring-ai-commons
基本模块,不依赖于其他 Spring AI 模块。包含:
- 核心领域模型 (Document
, TextSplitter
)
- JSON 工具和资源处理
- 结构化日志记录和可观测性支持
spring-ai-model
提供 AI 能力抽象:
- 接口,如 ChatModel
、EmbeddingModel
和 ImageModel
- 消息类型和提示模板
- 函数调用框架 (ToolDefinition
, ToolCallback
)
- 内容过滤和观察支持
spring-ai-vector-store
统一的向量数据库抽象:
- 用于相似性搜索的 VectorStore
接口
- 使用类似 SQL 的表达式进行高级过滤
- 用于内存使用的 SimpleVectorStore
- 嵌入的批处理支持
spring-ai-client-chat
高级对话 AI API:
- ChatClient
接口
- 通过 ChatMemory
进行对话持久化
- 使用 OutputConverter
进行响应转换
- 基于 Advisor 的拦截
- 同步和响应式流支持
spring-ai-advisors-vector-store
将聊天与向量存储桥接以实现 RAG:
- QuestionAnswerAdvisor
:将上下文注入提示
- VectorStoreChatMemoryAdvisor
:存储/检索对话历史
依赖结构
依赖层次结构可总结为:
-
spring-ai-commons
(基础) -
spring-ai-model
(依赖于 commons) -
spring-ai-vector-store
和spring-ai-client-chat
(都依赖于 model) -
spring-ai-advisors-vector-store
和spring-ai-rag
(都依赖于 client-chat 和 vector-store) -
spring-ai-model-chat-memory-*
模块 (依赖于 client-chat)
ToolContext 更改
ToolContext
类已增强,以支持显式和隐式工具解析。工具现在可以:
-
显式包含:在提示中明确请求并包含在模型调用中的工具。
-
隐式可用:可用于运行时动态解析的工具,但除非明确请求,否则不会包含在任何模型调用中。
从 1.0.0-M7 开始,工具只有在提示中明确请求或在调用中明确包含时才会被包含在模型调用中。
此外,ToolContext
类现在已标记为 final 且不能再被继承。它从未被设计为子类化。您可以在实例化 ToolContext
时,以 Map<String, Object>
的形式添加所有需要的上下文数据。有关更多信息,请查看[文档]([role="bare"][role="bare"]https://docs.spring.io/spring-ai/reference/api/tools.html#_tool_context)。
升级到 1.0.0-M6
Usage 接口和 DefaultUsage 实现的更改
Usage
接口及其默认实现 DefaultUsage
经历了以下更改:
-
方法重命名:
-
getGenerationTokens()
现在是getCompletionTokens()
-
-
类型更改:
-
DefaultUsage
中所有 token 计数字段从Long
更改为Integer
:-
promptTokens
-
completionTokens
(以前是generationTokens
) -
totalTokens
-
-
所需操作
-
将所有
getGenerationTokens()
调用替换为getCompletionTokens()
-
更新
DefaultUsage
构造函数调用:
// Old (M5) new DefaultUsage(Long promptTokens, Long generationTokens, Long totalTokens) // New (M6) new DefaultUsage(Integer promptTokens, Integer completionTokens, Integer totalTokens)
有关处理 Usage 的更多信息,请参阅 此处。 |
FunctionCallingOptions 用于工具调用的使用更改
每个 ChatModel
实例在构造时都接受一个可选的 ChatOptions
或 FunctionCallingOptions
实例,
可用于配置调用模型的默认工具。
1.0.0-M6 之前:
-
通过默认
FunctionCallingOptions
实例的functions()
方法传递的任何工具都包含在 该ChatModel
实例对模型的每次调用中,可能会被运行时选项覆盖。 -
通过默认
FunctionCallingOptions
实例的functionCallbacks()
方法传递的任何工具都仅 可用于运行时动态解析(请参阅 工具解析),但除非明确请求,否则从未 包含在对模型的任何调用中。
从 1.0.0-M6 开始:
-
通过默认
FunctionCallingOptions
实例的functions()
方法或functionCallbacks()
传递的任何工具 现在都以相同的方式处理:它们包含在该ChatModel
实例对模型的每次调用中, 可能会被运行时选项覆盖。这样,工具包含在对模型的调用中的方式就保持了一致性, 并防止了由于functionCallbacks()
和所有其他选项之间的行为差异而造成的任何混淆。
如果您希望工具可用于运行时动态解析,并且仅在明确请求时才将其包含在对模型的聊天请求中, 您可以使用 工具解析 中描述的策略之一。
1.0.0-M6 引入了处理工具调用的新 API。旧 API 在所有场景中都保持向后兼容性, 除了上述描述的场景。旧 API 仍然可用,但它们已被弃用, 并将在 1.0.0-M7 中移除。 |
移除已弃用的 Amazon Bedrock 聊天模型
从 1.0.0-M6 开始,Spring AI 转换为使用 Amazon Bedrock 的 Converse API 进行 Spring AI 中的所有聊天对话实现。 所有 Amazon Bedrock 聊天模型都已移除,除了 Cohere 和 Titan 的嵌入模型。
有关使用聊天模型,请参阅 Bedrock Converse 文档。 |
更改为使用 Spring Boot 3.4.2 进行依赖管理
Spring AI 更新为使用 Spring Boot 3.4.2 进行依赖管理。您可以参考 此处 了解 Spring Boot 3.4.2 管理的依赖项。
所需操作
-
如果您正在升级到 Spring Boot 3.4.2,请务必参考 此 文档,了解配置 REST Client 所需的更改。值得注意的是,如果您的类路径上没有 HTTP 客户端库,这可能会导致使用
JdkClientHttpRequestFactory
,而之前可能会使用SimpleClientHttpRequestFactory
。要切换到使用SimpleClientHttpRequestFactory
,您需要设置spring.http.client.factory=simple
。 -
如果您正在使用不同版本的 Spring Boot(例如 Spring Boot 3.3.x)并且需要特定版本的依赖项,您可以在构建配置中覆盖它。
升级到 1.0.0.M5
-
向量构建器已重构以保持一致性。
-
当前 VectorStore 实现构造函数已被弃用,请使用构建器模式。
-
VectorStore 实现包已移动到唯一的包名,避免了跨 artifact 的冲突。例如,
org.springframework.ai.vectorstore
移至org.springframework.ai.pgvector.vectorstore
。
升级到 1.0.0.RC3
-
可移植聊天选项 (
frequencyPenalty
,presencePenalty
,temperature
,topP
) 的类型已从Float
更改为Double
。
升级到 1.0.0.M2
-
Chroma Vector Store 的配置前缀已从
spring.ai.vectorstore.chroma.store
更改为spring.ai.vectorstore.chroma
,以与其他向量存储的命名约定保持一致。 -
能够初始化模式的向量存储的
initialize-schema
属性的默认值现在设置为false
。 这意味着应用程序现在需要显式选择在支持的向量存储上进行模式初始化,如果期望在应用程序启动时创建模式的话。 并非所有向量存储都支持此属性。 有关更多详细信息,请参阅相应的向量存储文档。 以下是目前不支持initialize-schema
属性的向量存储:[style="arabic"][style="arabic"]-
Hana
-
Pinecone
-
Weaviate
-
-
在 Bedrock Jurassic 2 中,聊天选项
countPenalty
、frequencyPenalty
和presencePenalty
已重命名为countPenaltyOptions
、frequencyPenaltyOptions
和presencePenaltyOptions
。 此外,聊天选项stopSequences
的类型已从String[]
更改为List<String>
。 -
在 Azure OpenAI 中,聊天选项
frequencyPenalty
和presencePenalty
的类型 已从Double
更改为Float
,与其他所有实现保持一致。
升级到 1.0.0.M1
在发布 1.0.0 M1 的过程中,我们进行了几项破坏性更改。抱歉,但这都是为了更好的发展!
ChatClient 更改
一个主要的更改是将“旧”的 ChatClient
功能移至 ChatModel
。 “新”的 ChatClient
现在接受 ChatModel
实例。这样做是为了支持一种流畅的 API,用于以类似于 Spring 生态系统中其他客户端类(如 RestClient
、WebClient
和 JdbcClient
)的风格创建和执行提示。有关 Fluent API 的更多信息,请参阅 [JavaDoc]([role="bare"][role="bare"]https://docs.spring.io/spring-ai/docs/api),正确的参考文档即将推出。
我们将“旧”的 ModelClient
重命名为 Model
,并重命名了实现类,例如 ImageClient
被重命名为 ImageModel
。 Model
实现代表了 Spring AI API 和底层 AI 模型 API 之间转换的便携层。
一个新的 model
包,其中包含接口和基类,以支持为任何输入/输出数据类型组合创建 AI 模型客户端。目前,聊天和图像模型包实现了这一点。我们将很快更新嵌入包以使用这个新模型。
一种新的“可移植选项”设计模式。我们希望在不同的基于聊天的 AI 模型之间,尽可能地在 ModelCall
中提供可移植性。有一组通用的生成选项,然后是特定于模型提供商的选项。使用了某种“鸭子类型”方法。模型包中的 ModelOptions
是一个标记接口,表示此类的实现将为模型提供选项。请参阅 ImageOptions
,这是一个子接口,定义了所有文本到图像 ImageModel
实现之间的可移植选项。然后 StabilityAiImageOptions
和 OpenAiImageOptions
提供了特定于每个模型提供商的选项。所有选项类都通过 Fluent API 构建器创建,所有选项都可以传递到可移植的 ImageModel
API 中。这些选项数据类型用于 ImageModel
实现的自动配置/配置属性中。
Artifact 名称更改
重命名 POM artifact 名称: - spring-ai-qdrant → spring-ai-qdrant-store - spring-ai-cassandra → spring-ai-cassandra-store - spring-ai-pinecone → spring-ai-pinecone-store - spring-ai-redis → spring-ai-redis-store - spring-ai-qdrant → spring-ai-qdrant-store - spring-ai-gemfire → spring-ai-gemfire-store - spring-ai-azure-vector-store-spring-boot-starter → spring-ai-azure-store-spring-boot-starter - spring-ai-redis-spring-boot-starter → spring-ai-starter-vector-store-redis
升级到 0.8.1
以前的 spring-ai-vertex-ai
已重命名为 spring-ai-vertex-ai-palm2
,spring-ai-vertex-ai-spring-boot-starter
已重命名为 spring-ai-vertex-ai-palm2-spring-boot-starter
。
因此,您需要将依赖项从
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai</artifactId>
</dependency>
更改为
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-palm2</artifactId>
</dependency>
并且 Palm2 模型的相关 Boot starter 已从
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-spring-boot-starter</artifactId>
</dependency>
更改为
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-vertex-ai-palm2-spring-boot-starter</artifactId>
</dependency>
-
重命名类 (2024年1月3日)
-
VertexAiApi → VertexAiPalm2Api
-
VertexAiClientChat → VertexAiPalm2ChatClient
-
VertexAiEmbeddingClient → VertexAiPalm2EmbeddingClient
-
VertexAiChatOptions → VertexAiPalm2ChatOptions
-
升级到 0.8.0
2024年1月24日更新
-
将
prompt
、messages
和metadata
包移动到org.springframework.ai.chat
的子包中 -
新功能是 文本到图像 客户端。类是
OpenAiImageModel
和StabilityAiImageModel
。有关用法,请参阅集成测试,文档即将推出。 -
一个新的
model
包,其中包含接口和基类,以支持为任何输入/输出数据类型组合创建 AI 模型客户端。目前,聊天和图像模型包实现了这一点。我们将很快更新嵌入包以使用这个新模型。 -
一种新的“可移植选项”设计模式。我们希望在不同的基于聊天的 AI 模型之间,尽可能地在
ModelCall
中提供可移植性。有一组通用的生成选项,然后是特定于模型提供商的选项。使用了某种“鸭子类型”方法。模型包中的ModelOptions
是一个标记接口,表示此类的实现将为模型提供选项。请参阅ImageOptions
,这是一个子接口,定义了所有文本到图像ImageModel
实现之间的可移植选项。然后StabilityAiImageOptions
和OpenAiImageOptions
提供了特定于每个模型提供商的选项。所有选项类都通过 Fluent API 构建器创建,所有选项都可以传递到可移植的ImageModel
API 中。这些选项数据类型用于ImageModel
实现的自动配置/配置属性中。
2024年1月13日更新
以下 OpenAi 自动配置聊天属性已更改
-
从
spring.ai.openai.model
到spring.ai.openai.chat.options.model
。 -
从
spring.ai.openai.temperature
到spring.ai.openai.chat.options.temperature
。
查找有关 OpenAi 属性的更新文档:[role="bare"][role="bare"]https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html
2023年12月27日更新
将 SimplePersistentVectorStore 和 InMemoryVectorStore 合并到 SimpleVectorStore * 将 InMemoryVectorStore 替换为 SimpleVectorStore
2023年12月20日更新
重构 Ollama 客户端及相关类和包名
-
将 org.springframework.ai.ollama.client.OllamaClient 替换为 org.springframework.ai.ollama.OllamaModelCall。
-
OllamaChatClient 方法签名已更改。
-
将 org.springframework.ai.autoconfigure.ollama.OllamaProperties 重命名为 org.springframework.ai.model.ollama.autoconfigure.OllamaChatProperties,并将后缀更改为:
spring.ai.ollama.chat
。部分属性也已更改。
2023年12月19日更新
AiClient 及相关类和包名重命名
-
将 AiClient 重命名为 ChatClient
-
将 AiResponse 重命名为 ChatResponse
-
将 AiStreamClient 重命名为 StreamingChatClient
-
将包 org.sf.ai.client 重命名为 org.sf.ai.chat
将 Maven 模块从顶层目录和 embedding-clients
子目录移动到统一的 models
目录。
2023年12月1日
我们正在将项目的 Group ID 进行过渡:
-
从:
org.springframework.experimental.ai
-
到:
org.springframework.ai
Artifacts 仍将托管在如下所示的快照仓库中。
主分支将移动到版本 0.8.0-SNAPSHOT
。
它将在一到两周内不稳定。
如果您不想使用最新版本,请使用 0.7.1-SNAPSHOT。
您可以像以前一样访问 0.7.1-SNAPSHOT
artifact,并且仍然可以访问 0.7.1-SNAPSHOT 文档。
0.7.1-SNAPSHOT 依赖项
-
Azure OpenAI[source, xml]
<dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.1-SNAPSHOT</version> </dependency>
-
OpenAI[source, xml]
<dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>0.7.1-SNAPSHOT</version> </dependency>