> 自媒体 > (AI)人工智能 > 4. ChatClient 的初始,快速使用上手
4. ChatClient 的初始,快速使用上手
来源:墨码行者
2025-10-01 12:09:36
216
管理
C 4. ChatClient 的初始,快速使用上手

@[toc]

C ChatClient

ChatClient 基于 ChatModel 进行了封装提供了通用的 API,它适用所有的大模型,使用 ChatClient 可以让你面向 SpringAi 通用的 api 而无需面向为每一种不同的模型的 api(比如我们之前的什么 DashScopeChatModel,XXXModel,使用 ChatClient 就无效关心这里是那个大模型 ModelL )来进行编程,虽然您仍然可以使用 ChatModel 来实现某些模型更加个性化的操作(ChatModel 更偏向于底层),但 ChatClient 提供了灵活、更全面的方法来构建您的客户端选项以与模型进行交互:比如系统提示词、格式式化响应、聊天记忆 、tools 都更加易用和优雅,所以除非 ChatClient 无法实现,否则我们 优先考虑用 ChatClient 。

所以我们后续基于 ChatClient 来进行学习应用。基于 ChatModel 来学习源码,因为 ChatClient 底层依然还是 ChatModel 的封装。 #技术分享

基本使用必须通过ChatClient.Builder 来进行构造

@SpringBootTestpublic class ChatClientTest { @Test public void testChatClient(@Autowired ChatClient.Builder builder) {ChatClient chatClient = builder.build(); String content = chatClient.prompt() .user("Hello") .call() .content(); System.out.println(content); } }

这种方式会在底层自动注入1个 ChatModel ,如果你配置了多个模型依赖,会无法注入。

可以通过这种方式动态选择 ChatModel:

@SpringBootTestpublic class ChatClientTest {@Test public void testChatOptions(@Autowired DeepSeekChatModel chatModel) {ChatClient chatClient = ChatClient.builder(chatModel).build(); String content = chatClient.prompt() .user("Hello") .call() .content(); System.out.println(content); } }流式

@Test public void testChatStream() { Flux content = chatClient.prompt() .user("Hello") .stream() .content();content.toIterable().forEach(System.out::println); }C ChatClient 《多个模型动态切管理实战》

1)application.properties

# DeepSeek 配置spring.ai.deepseek.chat.api-key=你的 APIKey spring.ai.deepseek.chat.options.model=deepseek-chat# Ollama 配置,模型暂定qwen3:4b已拉取到本地spring.ai.ollama.chat.base-url=http://localhost:11434 spring.ai.ollama.chat.options.model=qwen3:4b

org.springframework.aispring-ai-starter-model-deepseekorg.springframework.aispring-ai-starter-model-ollama

定义3个 ChatClient 的 bean。也可以根据请求动态创建,看需求

@Configurationpublic class AiConfig {@Bean public ChatClient deepseekR1(DeepSeekChatProperties chatProperties) {DeepSeekApi deepSeekApi = DeepSeekApi.builder() .apiKey(System.getenv("DEEP_SEEK_KEY")) .build();DeepSeekChatModel deepSeekChatModel = DeepSeekChatModel.builder() .deepSeekApi(deepSeekApi) .defaultOptions(DeepSeekChatOptions.builder().model(DeepSeekApi.ChatModel.DEEPSEEK_REASONER).build()) .build();return ChatClient.builder(deepSeekChatModel).build(); }@Bean public ChatClient deepseekV3() {DeepSeekApi deepSeekApi = DeepSeekApi.builder() .apiKey(System.getenv("DEEP_SEEK_KEY")) .build();DeepSeekChatModel deepSeekChatModel = DeepSeekChatModel.builder() .deepSeekApi(deepSeekApi) .defaultOptions( DeepSeekChatOptions.builder() .model(DeepSeekApi.ChatModel.DEEPSEEK_CHAT) .build() ) .build();return ChatClient.builder(deepSeekChatModel).build(); }@Bean public ChatClient ollama(@Autowired OllamaApi ollamaApi, @Autowired OllamaChatProperties options) { OllamaChatModel ollamaChatModel = OllamaChatModel.builder() .ollamaApi(ollamaApi) .defaultOptions(OllamaOptions.builder().model(options.getModel()).build()) .build();return ChatClient.builder(ollamaChatModel).build(); }}

请求:

@RestControllerpublic class MultiModelsController {@Autowired private Map chatClientMap;@GetMapping("/chat") String generation(@RequestParam String message, @RequestParam String model) { ChatClient chatClient = chatClientMap.get(model); String content = chatClient.prompt().user(message).call().content(); return content; } }最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

0
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 凡本网注明 “来源:XXX(非本站)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。 如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。 QQ:617470285 邮箱:617470285@qq.com
相关文章
顶级超跑魅力来袭,你感受到了吗?
感受顶级超跑的夜驾魅力。Mclaren 765LT,Lamborghini Aventador svj,Ma..
春风又搞大动作!500SR四缸跑车新造型,要是3万出头你冲不冲?..
好消息来了!工信部这波操作,属实是提前剧透了!春风500SR的证件照刚流..
法拉利首款纯电超跑「Luce」内饰公开!传统与创新的结合!..
法拉利在美国旧金山与创意工作室 LoveFrom 联合举办发布会,宣布新车定名..
一辆人人都可以买得起的超级跑车,雪佛兰科尔维特 (2)..
这是一辆人人都可以买的起的超级跑车,雪佛兰科尔维特。因车标酷似五菱,..
6款新车信息:大众ID新车3月上市,2款复古跑车官图发布..
50年前的设计,如今还有人买单吗?Donkervoort P24 RS跑车近日发布官图,..
2025国内跑车销量榜,你的爱车在榜几啊?
2025年国内跑车市场格局稳定,奔驰CLE稳居主流跑车前列,保时捷911与718..
日产将标志性的超级跑车隐藏在一款不起眼的轿跑车中..
汽车制造商通常需要数年时间才能研发出一款新车,在此期间,这些公司会竭..
预算有限买不起法拉利时,可以考虑的10款超级跑车
1. 兰博基尼 Huracán除了法拉利之外,兰博基尼Huracán通常是汽车爱好者..
特斯拉:Model X和Model S将逐步停产,预计4月推出一款跑车,马斯克:机器..
1月29日,特斯拉CEO埃隆·马斯克称,2026年资本支出将“非常大”;预计下..
关于作者
快乐的老范..(普通会员)
文章
1893
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行

成员 网址收录40418 企业收录2986 印章生成263660 电子证书1157 电子名片68 自媒体104855

0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索