领先一步
VMware 提供培训和认证,助您快速进步。
了解更多我们很高兴宣布 Spring AI 1.0.0 里程碑 5 版本发布
像往常一样,本次发布包含了一些新功能和 bug 修复,但我们将重点放在从设计角度审查代码库,目标是在 2025 年初发布 GA 版本。虽然我们通过在一个发布周期内废弃方法和类来尽量使过渡平稳,但我们知道存在一些破坏性变更,可能还有一些我们不知道的,请大家谅解。请参阅下面的“破坏性变更”部分。
MCP 对于使用 AI 工具和资源构建交互式应用程序具有颠覆性意义。它使您能够创建快速且灵活的应用程序,利用 AI 处理本地数据以及云端托管的服务。
虽然目前在 Spring AI 之外孵化,但我们很高兴地宣布实验性发布 Spring AI MCP 0.20 版本,这是一个用于 Model Context Protocol (MCP) 的 Java SDK。该项目提供了 Java/Spring 应用程序与兼容 MCP 的 AI 资源和工具之间的无缝集成。
有关架构和实现的更多详细信息,请访问 Model Context Protocol 文档。可以在我们的 spring-ai-examples 仓库中找到使用 MCP 与 Spring 的示例。
// Prepare the audio resource
var audioResource = new ClassPathResource("speech1.mp3");
// Create a user message with audio and send it to the chat model
String response = chatClient.prompt()
.user(u -> u.text("What is this recording about?")
.media(MimeTypeUtils.parseMimeType("audio/mp3"), audioResource))
.options(OpenAiChatOptions.builder()
.withModel(OpenAiApi.ChatModel.GPT_4_O_AUDIO_PREVIEW).build())
.call()
.content();
以下是如何从文本生成音频输出// Generate an audio response
ChatResponse response = chatClient
.prompt("Tell me a joke about the Spring Framework")
.options(OpenAiChatOptions.builder()
.withModel(OpenAiApi.ChatModel.GPT_4_O_AUDIO_PREVIEW)
.withOutputModalities(List.of("text", "audio"))
.withOutputAudio(new AudioParameters(Voice.ALLOY, AudioResponseFormat.WAV))
.build())
.call()
.chatResponse();
// Access the audio transcript
String audioTranscript = response.getResult().getOutput().getContent();
// Retrieve the generated audio
byte[] generatedAudio = response.getResult().getOutput().getMedia().get(0).getDataAsByteArray();
有关新 RAG 架构和实现细节的全面信息,请查看我们更新的文档。如需实践经验,请在这些示例应用程序中探索实用的 RAG 实现。
ChatClient
的 Kotlin 支持,带有类型安全的响应 (#1729)查看我们的Kotlin 示例,了解这些功能的实际应用。
ChatClient
API 的空安全性和可预测性 (#1651)ChatOptions
/FunctionCallingOptions
的继承层次结构 (#1994)FunctionCallback.Builder
接口 (#1732)BiFunction
类类型解析的支持 (#1588)最明显的破坏性变更是每个向量存储实现的包名发生了变化。遗憾的是,它们之前都使用了相同的包名,但位于不同的独立 artifact 中,这是不允许的。
因此,MilvusVectorStore
已从 org.springframework.ai.vectorstore
移至 org.springframework.ai.vectorstore.milvus
许多类中都对构建器模式的使用进行了对齐,但重点放在了向量存储和聊天选项上。
MilvusVectorStore vectorStore = MilvusVectorStore.builder(milvusServiceClient, embeddingModel)
.initializeSchema(true)
.build();
其他破坏性变更包括
Document
现在仅支持文本或媒体内容的单个实例。这使得嵌入注入 pipeline 的流程更容易理解。类似地,之前已废弃的 Document
的嵌入字段已被移除。(#1883)
更改了 TokenCountBatchingStrategy
构造函数参数 (#1670)
还有许多贡献者进行了全面的重构、bug 修复和文档增强。如果您的 PR 尚未被处理,我们将尽快处理,请耐心等待。感谢以下贡献者:
我们在 M5 版本中未能完成所有预期的设计重构,因此将在 2025 年 1 月初发布最后一个 M6 版本来解决这些问题,然后尽快发布 1.0.0 RC1 和 1.0.0 GA 版本。
设计的重点领域是
对于 Spring AI 来说,这是令人惊叹的一年。我们感谢社区的支持和贡献。期待 2025 年更加精彩!