掘金 人工智能 23小时前
Spring AI:ChatClient API 真香警告!我用它把聊天机器人卷上天了!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了Spring AI框架中的ChatClient API,该API简化了与OpenAI、Gemini等大模型的交互流程,提供了流畅的API、多模型支持、流式响应、提示模板、内存上下文和Advisor等功能,帮助开发者快速构建聊天机器人、RAG应用等AI工具,提升开发效率。

🚀 **ChatClient 的核心作用**:Spring AI 的 ChatClient 就像是与 OpenAI、Gemini、Claude 等大模型沟通的专属“话务员”,通过自动配置和简洁的API,开发者无需编写复杂的RestTemplate代码即可轻松接入。

🔄 **多模型切换**:Spring AI 允许通过配置多个 ChatModel Bean 实现多模型切换,使得在不同大模型之间切换变得非常简单,满足了开发者对不同模型的需求。

💬 **流畅的API与多样化响应**:ChatClient 提供了类似Java Stream的流畅API,支持多种响应方式,包括 ChatResponse、实体对象映射以及流式响应,满足不同场景下的需求,例如客服机器人和AI写作助手等。

💡 **提示模板与默认值**:Spring AI 提供了提示模板功能,允许开发者将prompt写进模板,方便复用和管理。同时,还可以设置默认的system message、模板变量、temperature等参数,简化调用过程。

🛠️ **Advisor系统与内存支持**:ChatClient 的 Advisor 系统类似于Spring AOP,可以在聊天前后添加逻辑,例如RAG、日志、缓存等。此外,Spring AI 还提供了 Memory 支持,例如 InMemoryChatMemoryStore,可以记录历史对话,实现上下文关联。

大家好,我是小米,一个每天都在 Java 世界里翻滚的 31 岁程序员大哥哥。今天要聊的是一个我最近用完之后疯狂安利的宝藏框架:Spring AI 的 ChatClient API

前阵子,我在给团队搭一个客服机器人,调了 OpenAI 的 API 半天,代码写得像意大利面条一样乱七八糟。后来一个朋友提醒我: “你怎么不用 Spring AI?”

我:Spring AI?这是 Spring 家出的 AI 框架?

朋友一脸惊讶地说:你居然还没用?

我赶紧撸了一遍官方文档,然后...

只用了一个早上,就把聊天功能整合得干干净净,还支持流式响应、提示模板、内存上下文,甚至还能多模型切换。

今天这篇文章,就带大家全流程撸一遍 Spring AI 的 ChatClient API,告诉你它到底有多香!

开始:创建 ChatClient,三分钟上手!

Spring AI 的 ChatClient 是整个聊天能力的核心,就像你和 OpenAI、Gemini、Claude 打交道的专属话务员。

1. 使用自动配置的 ChatClient.Builder

我们只要添加 Spring AI 的依赖,然后配置 application.yml:

然后就可以直接注入 ChatClient:

这时候你会发现,你连 RestTemplate 都不用写,ChatClient 早就帮你封装好了!

2. 多模型支持,换个 LLM 如切瓜切菜

只要配置多个 ChatModel Bean,就能支持多个模型切换:

然后这样切换:

超级丝滑有没有?

流畅 API:就像写 Java Stream 那么爽

用惯了 Builder 模式的你会觉得 ChatClient 简直是为现代 Javaer 打造的。

我们来看一个经典示例:

一句话就搞定对话,还能链式配置 system message:

这 API 真是给我这样的“懒人程序员”量身定制的。

ChatClient 响应:花样百出,任你选

ChatClient 提供了三种响应方式,满足不同需求。

1. 返回 ChatResponse

最基本的返回值是 ChatResponse,带结构化 metadata:

2. 返回实体对象

你可以直接把返回值映射成 POJO,简直优雅得不行:

3. 流式响应:边说边出字,效果拉满!

想要 ChatGPT 的那种“字一个一个出来”的体验?有!

真的可以边播边写,适合做客服机器人和 AI 写作助手!

提示模板:把 prompt 写进模板,优雅又复用

你是不是经常写 prompt 写到头秃?别怕,Spring AI 帮你抽象成模板了!

1. call() 的返回值支持模板变量

一行搞定上下文填充!告别手搓拼接!

2. stream() 一样支持模板

使用默认值:提示词、角色设定自动套用

你可以提前设好 system message、模板变量,让每次调用都继承下来。

1. 默认系统文本

2. 带参数的默认 system

3. 其他默认值

你还可以设定默认 temperature、maxToken、topP 等参数,一次配置,次次生效。

Advisors:加点“插件”,功能立马起飞

ChatClient 的 advisor 系统就像 Spring AOP,可以在聊天前后加逻辑,比如 RAG、日志、缓存等。

1. 配置 Advisor 超简单

2. 检索增强生成(RAG)

加一个 RetrievalAdvisor,就能做到带知识库的问答系统:

结合 VectorStore,就可以构建自己的企业知识助手。

3. 日志记录

可以自定义日志 Advisor,把每次问答都存到数据库或者日志文件:

聊天内存:记住上下文,做一个“有记性”的 AI

聊天机器人最大的问题就是: “上一句你怎么就忘了?”

Spring AI 提供了 Memory 支持,比如 InMemoryChatMemoryStore,可以记录历史对话:

这样,同一个 session 下的用户对话就可以上下文关联了!

总结:Spring AI 的 ChatClient 简直太顶!

从开发者角度来看,Spring AI 做到了:

我自己用 Spring AI 重构了一版聊天机器人之后,代码清爽了不止一点点,甚至还加了知识库搜索、上下文聊天和流式响应,全靠 ChatClient 的超强扩展能力

所以朋友们,如果你也在用 Java 开发 AI 应用,别再硬撸 SDK 了,试试 Spring AI 的 ChatClient 吧!

END

我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Spring AI ChatClient Java AI开发 大模型
相关文章