Spring AI 聊天模型:玩转 Anthropic Claude 3 聊天

94 阅读4分钟



大家好,我是小米,一个热衷技术分享的 31 岁程序员。前几天,我在项目中要接入 AI 聊天能力,本来准备硬撸 API 的,结果朋友一句话点醒我:

“用 Spring AI 啊,又干净又舒服!”

我一听眼睛一亮,马上开干!而这一次,我选的是 Anthropic Claude 3 模型——据说语言理解力和安全性都非常优秀。

于是,我就用 Spring AI 搭了一套 Claude 聊天系统,不仅能聊天,还能识图、读 PDF、函数调用,关键是还 配置灵活、自动注入,开发体验爆棚

这篇文章,我就来详细分享我的实战流程,希望你也能轻松上手 Claude 3!

前提条件

在开始之前,你得准备几个必要的“法宝”:

  • JDK 17+
  • Maven or Gradle 项目
  • Spring Boot 3.2+
  • 一个有效的 Anthropic API Key(注册官网拿 key)
  • 一个 Claude 3 的可用模型(Opus、Sonnet、Haiku)

我用的是 Spring Boot 3.3 和 Maven。

添加仓库和 BOM

先在你的 pom.xml 里添加 Spring AI 的 Maven 仓库和依赖:

自动配置真香

Spring AI 做得非常棒的一点是 自动配置完善,你只需要把 application.yml 配好,Bean 都自动注入好了,Claude 能用得飞起。

聊天属性配置

1. 重试属性

在企业应用里,稳定比啥都重要。Spring AI 支持你配置重试机制:

意思是最多重试 3 次,每次间隔成倍增加。

2. 连接属性

连接超时、读取超时都可以配置:

放心,Claude 有点慢是正常的,给它点时间思考人生~

3. 配置属性

基础配置是最核心的,尤其是 API Key 和默认模型:

运行时选项:PromptTemplate

Spring AI 提供了非常方便的 PromptTemplate 功能,你可以将变量、上下文内容动态拼接,代码示例如下:

是不是比自己拼字符串舒服多了?你只管关注“我想问什么”,其他都交给 PromptTemplate!

工具/函数调用 Function Calling

你没听错,Claude 3 也支持函数调用!Spring AI 已经封装好了方式,你只需要:

  • 定义 Java 函数
  • 注入 FunctionCallback
  • 交给 ChatClient 处理

Claude 会自己选择调用函数,配合 ToolSystemPrompt,能做出很智能的多轮对话。

多模态能力

Claude 3 的一个重大突破就是支持多模态!在 Spring AI 中,图像和 PDF 都可以搞定。

1. 图像识别

用 ImagePrompt 构造请求,把 Base64 图片传进去,Claude 就能识图回答了:

是不是可以做智能图文分析?商品识别?美食分类?你说了算!

2. PDF 阅读

Spring AI 支持用 PdfDocumentReader 把 PDF 文件内容读取成 Prompt 内容发给 Claude:

连发票、合同、论文都能丢给 AI,帮你总结、校对、提问,一站式服务!

示例控制器

给大家展示个 ChatController,实战演示:

是不是非常优雅?发个 JSON 消息就能开始对话啦!

手动配置 ChatClient

如果你不想用 Spring Boot 自动装配,可以手动 new:

控制权更强,也便于自定义 Token 限制、日志打印等。

低级 AnthropicApi 客户端

如果你是个底层爱好者(比如我),想完全控制请求参数和响应解析,可以直接使用 AnthropicApi:

你甚至可以替换 HTTP 客户端、监控流量、接入监控链路。

写在最后

Spring AI 把 Claude 3 接入做得真的是又优雅又强大。从基础聊天,到函数调用、多模态,再到手动控制,你想怎么玩就怎么玩。

作为一个开发者,真的特别推荐你试试这套组合:Claude 3 + Spring AI。你会发现,AI 接入不再是遥不可及的黑科技,而是能上生产的业务能力。

好了,今天的分享就到这啦~

如果你对 Claude 3 聊天有什么想法,或者在接入 Spring AI 时遇到啥坑,欢迎留言,我们一起交流!

END

如果你喜欢这样的内容,记得 【点赞】+【关注】+【分享】 ,小米会持续更新更多有趣实用的技术干货!

我们下篇再见,拜拜~

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