升级说明

升级到 1.0.0.RC1

  • 可移植聊天选项(frequencyPenaltypresencePenaltytemperaturetopP)的类型已从 Float 更改为 Double

升级到 1.0.0.M2

  • Chroma 向量存储的配置前缀已从 spring.ai.vectorstore.chroma.store 更改为 spring.ai.vectorstore.chroma,以符合其他向量存储的命名约定。

  • 能够初始化模式的向量存储上的 initialize-schema 属性的默认值现在设置为 false。这意味着应用程序现在需要在支持的向量存储上显式选择加入模式初始化,如果预期在应用程序启动时创建模式。并非所有向量存储都支持此属性。有关更多详细信息,请参阅相应的向量存储文档。以下是当前不支持 initialize-schema 属性的向量存储。

    1. Hana

    2. Pinecone

    3. Weaviate

  • 在 Bedrock Jurassic 2 中,聊天选项 countPenaltyfrequencyPenaltypresencePenalty 已分别重命名为 countPenaltyOptionsfrequencyPenaltyOptionspresencePenaltyOptions。此外,聊天选项 stopSequences 的类型已从 String[] 更改为 List<String>

  • 在 Azure OpenAI 中,聊天选项 frequencyPenaltypresencePenalty 的类型已从 Double 更改为 Float,与所有其他实现保持一致。

升级到 1.0.0.M1

在我们发布 1.0.0 M1 的过程中,我们进行了一些重大更改。抱歉,但这是最好的选择!

ChatClient 更改

进行了一项重大更改,将“旧”ChatClient 的功能移至 ChatModel。新的 ChatClient 现在接收 ChatModel 的实例。这样做是为了支持一个流畅的 API,以便以类似于 Spring 生态系统中其他客户端类(例如 RestClientWebClientJdbcClient)的风格创建和执行提示。有关流畅 API 的更多信息,请参阅 [JavaDoc](docs.spring.io/spring-ai/docs/api),完整的参考文档即将推出。

我们将“旧”ModelClient 重命名为 Model,并重命名了实现类,例如 ImageClient 重命名为 ImageModelModel 实现表示可移植性层,它在 Spring AI API 和底层 AI 模型 API 之间进行转换。

适应这些更改

ChatClient 类现在位于 org.springframework.ai.chat.client 包中

方法 1

现在,您将获得 ChatModel 实例,而不是自动配置的 ChatClient 实例。重命名后的 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", this.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", this.chatModel.call(message));
    }
}
重命名也适用于以下类:* StreamingChatClientStreamingChatModel * EmbeddingClientEmbeddingModel * ImageClientImageModel * SpeechClientSpeechModel * 其他 <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",
				this.chatClient.call(message)
        );
	}
}

更改后,将变成

@RestController
class SimpleAiController {

    private final ChatClient chatClient;

    SimpleAiController(ChatClient.Builder builder) {
      this.chatClient = builder.build();
    }

    @GetMapping("/ai/simple")
    Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of(
                "generation",
				this.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年03月01日)

    • VertexAiApi → VertexAiPalm2Api

    • VertexAiClientChat → VertexAiPalm2ChatClient

    • VertexAiEmbeddingClient → VertexAiPalm2EmbeddingClient

    • VertexAiChatOptions → VertexAiPalm2ChatOptions

升级到 0.8.0

2024年1月24日更新

  • promptmessagesmetadata 包移动到 org.sf.ai.chat 的子包中

  • 新功能是**文本转图像**客户端。类为 OpenAiImageModelStabilityAiImageModel。有关用法,请参阅集成测试,文档即将推出。

  • 一个新的包 model,其中包含接口和基类,以支持为任何输入/输出数据类型组合创建 AI 模型客户端。目前,聊天和图像模型包实现了这一点。我们很快将更新嵌入包到这个新的模型。

  • 一种新的“可移植选项”设计模式。我们希望在不同的基于聊天的 AI 模型中尽可能地在 ModelCall 中提供可移植性。有一组通用的生成选项,以及特定于模型提供程序的选项。使用了一种“鸭子类型”方法。ModelOptions 在模型包中是一个标记接口,指示此类的实现将提供模型的选项。请参阅 ImageOptions,这是一个子接口,定义了所有文本→图像 ImageModel 实现的可移植选项。然后,StabilityAiImageOptionsOpenAiImageOptions 提供特定于每个模型提供程序的选项。所有选项类都是通过流畅的 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-embeddingspring-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>

升级到 1.0.0.M4

  • 删除 PaLM API 支持

作为 弃用 PaLM API 公告的后续行动,PaLM API 支持已移除。