呼延含玉 发表于 2025-6-5 10:15:43

SpringAI更新:废弃tools方法、正式支持DeepSeek!

AI 技术发展很快,同样 AI 配套的相关技术发展也很快。这不今天刚打开 Spring AI 的官网就发现它又又又又更新了,而这次更新距离上次更新 M7 版本才不过半个月的时间,那这次 Spring AI 给我们带来了哪些惊喜呢?一起来看。
重点升级点

我们先来判断 Spring AI M8 的重点升级点:

[*]废除了 tools 方法,取而代之的是 toolCallbacks 方法,写法对比如下:
[*]早期版本:

// Old code in M7 - no longer works correctly in M8
chatClient.prompt("What day is tomorrow?")
    .tools(toolCallback)
    .call()
    .content();2. 最新版本:// Updated code for M8
chatClient.prompt("What day is tomorrow?")
    .toolCallbacks(toolCallback)
    .call()
    .content();
[*]聊天记忆增强功能:

[*]改进的 ChatMemory API,实现更灵活的对话历史管理。
[*]新 ChatMemoryRepository 允许不同的存储策略。
[*]添加 MessageWindowChatMemory 用于维护历史消息。
[*]改进属性命名以确保跨实现的一致性。
[*]支持各种存储后端:

[*]InMemoryChatMemoryRepository(默认)。
[*]JdbcChatMemoryRepository 对于关系数据库持久化支持。


[*]增强的 MCP 工具回调配置:

[*]在 MCP 客户端属性中添加了工具回调配置。
[*]支持 MCP 服务器中的完成规范。
[*]为 MCP 服务器添加了指令支持。
[*]向 WebFlux 和 WebMvc 传输提供程序添加了 SSE 端点参数。

[*]提示工程文档增强:

[*]添加提示工程模式文档。
[*]为开发人员提供有效提示设计的最佳实践。
[*]包括各种用例的示例和模式。

[*]向量数据库存储功能增强:


[*]Cosmos DB Entra ID 支持和修复:

[*]为 Cosmos DB 添加了 Azure Entra ID(以前称为 Azure AD)身份验证;
[*]改进 Azure 部署的安全性和身份验证选项。

[*]Cassandra 向量存储改进:

[*]修复了 Cassandra 聊天内存中的消息顺序。
[*]添加了更好的错误消息并修复了各种问题。

官方更新日志:https://spring.io/blog/2025/04/30/spring-ai-1-0-0-m8-released
DeepSeek SDK 正式发布

除了以上内容之外,官方的更新日志中没提到的,还有对于 DeepSeek SDK 的正式发布,之前版本中虽然有关于 DeepSeek 的支持,但并不是真正的支持,只是让 DeepSeek 使用 OpenAI 协议实现对 DeepSeek 的调用,而不是真正的 DeepSeek SDK 支持。
那么 OpenAI 协议和真正的 SDK 支持的区别是啥呢?
简单来说,举个简单的例子你就明白了,就是 OpenAI 相当于你上班,因为你自己没车,所以你只能蹭同事的车;而有了 SDK 的支持之后,相当于你有自己的车了,不需要在蹭别人的车了。
也就意味着,DeepSeek 可以和 OpenAI 或其他使用 OpenAI 协议的大模型并存了,之前是二选一,你(DeepSeek)使用了 OpenAI 协议,那么其他人就没办法使用 OpenAI 协议了,现在你有自己的 SDK 了,就可以和其他兼容 OpenAI 或 OpenAI 一起使用了。
DeepSeek 使用变化

DeepSeek SDK 的具体使用如下。

[*]准备工作:在 DeepSeek 申请 APIKey。
[*]添加依赖:
<dependency>
    <groupId>org.springframework.ai</groupId>
    spring-ai-deepseek-spring-boot-starter</artifactId>
</dependency>
[*]设置配置信息:
spring.ai.deepseek.api-key=YOUR_API_KEY
spring.ai.deepseek.chat.options.model=deepseek-chat
spring.ai.deepseek.chat.options.temperature=0.8
[*]编写调用代码:
@RestController
public class ChatController {

    private final DeepSeekChatModel chatModel;

    @Autowired
    public ChatController(DeepSeekChatModel chatModel) {
      this.chatModel = chatModel;
    }

    // 普通输出
    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
      return Map.of("generation", chatModel.call(message));
    }

    // 流式输出
    @GetMapping("/ai/generateStream")
        public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
      var prompt = new Prompt(new UserMessage(message));
      return chatModel.stream(prompt);
    }
}小结

AI 发展速度很快,对各行各业的影响也很大,充分了解和掌握 AI 知识,对日常工作提效或以后跳槽都有很大的帮助,让我们一起行动起来,拥抱这场 AI 盛宴吧。
本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、LangChain4j、Dify、Agent、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型等内容。
    http://icdn.apigo.cn/gitchat/rabbitmq.png?imageView2/0/w/500/h/400http://icdn.apigo.cn/myinfo/wchat-pay.png
关注公众号(加好友):http://icdn.apigo.cn/gongzhonghao2.png?imageView2/0/w/120/h/120
            
作者:      王磊的博客      
出处:      http://vipstone.cnblogs.com/      
   

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: SpringAI更新:废弃tools方法、正式支持DeepSeek!