升级说明
升级到 1.0.0.M1
在我们发布 1.0.0 M1 的过程中,我们进行了一些重大更改。抱歉,这是为了更好!
ChatClient 更改
一个重大更改是将“旧”ChatClient
的功能移到了 ChatModel
中。新的 ChatClient
现在接受 ChatModel
的实例。这样做是为了支持一个流畅的 API,用于以类似于 Spring 生态系统中其他客户端类(如 RestClient
、WebClient
和 JdbcClient
)的风格创建和执行提示。有关 Fluent API 的更多信息,请参阅 [JavaDoc](docs.spring.io/spring-ai/docs/1.0.0-SNAPSHOT/api/),完整的参考文档即将推出。
我们将“旧”ModelClient
重命名为 Model
,并将实现类重命名,例如 ImageClient
重命名为 ImageModel
。Model
实现代表可移植性层,它在 Spring AI API 和底层 AI 模型 API 之间进行转换。
适应这些更改
ChatClient 类现在位于 org.springframework.ai.chat.client 包中。
|
方法 1
现在,您将不再获取自动配置的 ChatClient
实例,而是获取 ChatModel
实例。重命名后的 call
方法签名保持不变。要调整您的代码,您应该重构代码以将 ChatClient
类型的使用更改为 ChatModel
。以下是在更改之前现有代码的示例:
@RestController
public class OldSimpleAiController {
private final ChatClient chatClient;
public OldSimpleAiController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/simple")
Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatClient.call(message));
}
}
更改后,这将变为:
@RestController
public class SimpleAiController {
private final ChatModel chatModel;
public SimpleAiController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/simple")
Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatModel.call(message));
}
}
重命名也适用于以下类:* StreamingChatClient → StreamingChatModel * EmbeddingClient → EmbeddingModel * ImageClient → ImageModel * SpeechClient → SpeechModel * 以及其他 <XYZ>Client 类。
|
方法 2
在此方法中,您将使用新的 ChatClient
上可用的流畅 API。
以下是在更改之前现有代码的示例:
@RestController
class OldSimpleAiController {
ChatClient chatClient;
OldSimpleAiController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ai/simple")
Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of(
"generation",
chatClient.call(message)
);
}
}
更改后,这将变为:
@RestController
class SimpleAiController {
private final ChatClient chatClient;
SimpleAiController(ChatClient.Builder builder) {
this.builder = builder.build();
}
@GetMapping("/ai/simple")
Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of(
"generation",
chatClient.prompt().user(message).call().content()
);
}
}
ChatModel 实例通过自动配置提供给您。
|
方法 3
GitHub 存储库中有一个名为 [v1.0.0-SNAPSHOT-before-chatclient-changes](github.com/spring-projects/spring-ai/tree/v1.0.0-SNAPSHOT-before-chatclient-changes) 的标签,您可以签出并进行本地构建,以避免在准备好迁移代码库之前更新任何代码。
git checkout tags/v1.0.0-SNAPSHOT-before-chatclient-changes
./mvnw clean install -DskipTests
工件名称更改
重命名的 POM 工件名称:- 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-redis-store-spring-boot-starter
升级到 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 启动器已从
<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 年 01 月 03 日)
-
VertexAiApi → VertexAiPalm2Api
-
VertexAiClientChat → VertexAiPalm2ChatClient
-
VertexAiEmbeddingClient → VertexAiPalm2EmbeddingClient
-
VertexAiChatOptions → VertexAiPalm2ChatOptions
-
升级到 0.8.0
2024 年 1 月 24 日更新
-
将
prompt
、messages
和metadata
包移动到org.sf.ai.chat
的子包中 -
新功能是 **文本转图像** 客户端。类是
OpenAiImageModel
和StabilityAiImageModel
。有关用法,请参见集成测试,文档即将推出。 -
一个新的包
model
,其中包含接口和基类,用于支持为任何输入/输出数据类型组合创建 AI 模型客户端。目前,聊天和图像模型包实现了这一点。我们很快将更新嵌入包以适应此新模型。 -
一种新的“可移植选项”设计模式。我们希望在
ModelCall
中尽可能地提供跨不同基于聊天的 AI 模型的可移植性。有一组通用的生成选项,然后是特定于模型提供者的选项。使用了一种“鸭子类型”方法。ModelOptions
在模型包中是一个标记接口,表示此类的实现将提供模型的选项。请参见ImageOptions
,这是一个子接口,它定义了所有文本→图像ImageModel
实现的可移植选项。然后StabilityAiImageOptions
和OpenAiImageOptions
提供特定于每个模型提供者的选项。所有选项类都是通过流畅的 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 属性的更新文档:docs.spring.io/spring-ai/reference/api/chat/openai-chat.html
2023 年 12 月 27 日更新
将 SimplePersistentVectorStore 和 InMemoryVectorStore 合并为 SimpleVectorStore * 用 SimpleVectorStore 替换 InMemoryVectorStore
2023 年 12 月 20 日更新
重构 Ollama 客户端和相关类以及包名称
-
用 org.springframework.ai.ollama.OllamaModelCall 替换 org.springframework.ai.ollama.client.OllamaClient。
-
OllamaChatClient 方法签名已更改。
-
将 org.springframework.ai.autoconfigure.ollama.OllamaProperties 重命名为 org.springframework.ai.autoconfigure.ollama.OllamaChatProperties 并将后缀更改为:
spring.ai.ollama.chat
。一些属性也已更改。
2023 年 12 月 19 日更新
AiClient 和相关类以及包名的重命名
-
将 AiClient 重命名为 ChatClient
-
将 AiResponse 重命名为 ChatResponse
-
将 AiStreamClient 重命名为 StreamingChatClient
-
将包 org.sf.ai.client 重命名为 org.sf.ai.chat
重命名以下的工件 ID:
-
transformers-embedding
重命名为spring-ai-transformers
将 Maven 模块从顶层目录和 embedding-clients
子目录移动到单个 models
目录下。
2023 年 12 月 1 日
我们正在迁移项目的 Group ID
-
从:
org.springframework.experimental.ai
-
到:
org.springframework.ai
工件仍将托管在快照存储库中,如下所示。
主分支将移至版本 0.8.0-SNAPSHOT
。它将在未来一两周内处于不稳定状态。如果您不想使用最新版本,请使用 0.7.1-SNAPSHOT。
您可以像以前一样访问 0.7.1-SNAPSHOT
工件,并且仍然可以访问 0.7.1-SNAPSHOT 文档。
0.7.1-SNAPSHOT 依赖项
-
Azure OpenAI
<dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.1-SNAPSHOT</version> </dependency>
-
OpenAI
<dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>0.7.1-SNAPSHOT</version> </dependency>