2.使用Spring BootSpring AI快速构建AI应用程序

embedded/2025/1/19 17:28:59/

Spring AI 是基于 Spring Boot3.x 框架构建,Spring Boot官方提供了非常便捷的工具Spring Initializr帮助开发者快速的搭建Spring Boot应用程序,IDEA也集成了此工具。本文使用的开发工具IDEA+Spring Boot 3.4+Spring AI 1.0.0-SNAPSHOT+Maven

1.创建Spring Boot项目

使用IDEA Spring Boot模版创建项目,选择Maven+JDK17,因为Spring AI支持的Spring Boot版本从Spring Boot3.2.x开始,最低JDK版本是17

在这里插入图片描述

2.添加 Spring Snapshot Repositories和BOM

目前Spring AI最新快照版本是1.0.0-SNAPSHOT没有发布到maven中央仓库,所以需要手动添加Spring Snapshot Repositories

<repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository>
</repositories>

Spring AI BOM 声明了特定版本的 Spring AI依赖项的推荐版本。后续添加Spring AI相关模块无需指定具体的版本。

<dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

3.添加Spring AI依赖

本文使用的是智谱AI大模型(特殊原因没使用OpenAI),如果要使用其它支持的大模型只需要把下面的依赖替换成对应大模型的spring boot starter即可。

  <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId></dependency>

4.pom.xml完整配置

<properties><java.version>17</java.version><spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId></dependency>
</dependencies>
<dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
<repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository>
</repositories>

5.申请AI大模型API keys

从智普AI官网https://bigmodel.cn/ 注册申请API keys

在这里插入图片描述

application.propertiesapplication.yml文件中配置 AI 模型相关参数。以 智谱AI为例,在application.properties中配置 API 密钥:

spring.ai.zhipuai.api-key=XXXXXXX

6.使用Spring AI ChatClient访问AI大模型

ChatClient 提供了一种Fluent API 用于与人工智能模型进行通信。它同时支持同步和流式(Reactive)编程模型。ChatClient是使用ChatClient.Builder对象创建的。可以使用Spring Boot 自动装配机制自动注入ChatClient.Builder Bean

/*** Spring AI supports Spring Boot 3.2.x and 3.3.x* JDK 17* zhipuai*/
@RestController
public class AiController {private final ChatClient chatClient;public AiController(ChatClient.Builder chatClientBuilder) {//自动注入ChatClient.Builder对象,并创建ChatClient对象。this.chatClient = chatClientBuilder.build();}@GetMapping("/ai")String generation(String message) {//用户输入的信息提交给大模型,使用的是ChatClient与大模型交互。return this.chatClient.prompt().user(message).call().content();}
}

在这个例子中,用户输入内容call()方法向人工智能模型发送请求,content()方法以字符串的形式返回人工智能模型的响应。

Prompt(提示词)是引导 AI 模型生成特定输出的输入。这些提示的设计和措辞直接影响模型的响应,后面有专门的Prompt章节来详细介绍。

7.接口测试

➜ ~ curl http://localhost:8080/ai?message=你好
你好👋!我是人工智能助手智谱清言(ChatGLM),很高兴见到你,欢迎问我任何问题。

8.总结

本文为主要介绍了从开发环境搭建、依赖配置、API 密钥获取到利用 ChatClient 与大模型交互并测试验证的详细过程,助力快速上手基于 Spring AI 与特定大模型构建应用程序。

Ben技术站关注Java技术,LLM,计算机科学等内容。
在这里插入图片描述


http://www.ppmy.cn/embedded/155279.html

相关文章

ACL基础理论

ACL ——访问控制列表 ACL属于策略的一种 ACL访问控制列表的作用&#xff1a; 访问控制&#xff1a;在路由器流量流入或流出的接口上&#xff0c;匹配流量&#xff0c;然后执行设定好的动作&#xff1a;permit&#xff08;允许&#xff09;、deny&#xff08;拒绝&#xff…

Ei Scopus双检索 | 2025年第五届机器人与人工智能国际会议(JCRAI 2025)

会议简介 Brief Introduction 2025年第五届机器人与人工智能国际会议(JCRAI 2025) 会议时间&#xff1a;2025年7月11-13日 召开地点&#xff1a;中国银川 大会官网&#xff1a;www.jcrai.org 人工智能和机器人技术在过去几十年里得到了长足的发展&#xff0c;为未来的机器人应用…

JavaScript前端高效性能优化策略:防抖和节流的详细介绍

一、前言 防抖和节流是我们前端开发性能优化中经常用到的一个手段&#xff0c;目的就是为了减少/限制函数执行的频率&#xff0c;用来提升系统性能和用户体验。本篇文章将深入探讨防抖和节流这两种函数优化手段&#xff0c;防抖在函数频繁触发时只在最后一次且规定时间内无再次…

Three.js贴图加载与环境遮蔽贴图强度设置(五)

在Three.js中&#xff0c;贴图加载与环境遮蔽贴图强度设置是创建逼真3D视觉效果的关键步骤。通过利用Three.js的TextureLoader&#xff0c;开发者可以轻松加载各种纹理贴图&#xff0c;如颜色贴图、透明度贴图以及环境遮蔽&#xff08;Ambient Occlusion, AO&#xff09;贴图&a…

神经网络中的“池化”是什么意思?

目录 一、为什么叫“池化”&#xff1f; 二、池化的作用 三、常见的池化方法 四、为什么不叫“过滤”或“压缩”&#xff1f; 池化&#xff08;Pooling&#xff09;之所以叫作“池化”&#xff0c;是因为它的操作过程和结果类似于从一个“池子”中提取或汇总信息的过程。这…

Java List过滤 Stream API filter() 应用

Java 8 前用 for-each 循环或 Iterator 处理集合&#xff0c;引入 Stream API 后可更简洁、声明式地处理集合&#xff0c;在复杂数据处理时更便捷 1. Stream与Filter基础 Stream 是从支持数据源获取数据的序列&#xff0c;有强大 API 可执行中间和最终操作&#xff0c;能内部…

如何发布自己的第一个Chrome扩展程序

如何发布自己的Chrome扩展程序 只需要六步即可完成Chrome扩展程序的发布 &#xff08;1&#xff09;首先打开google chrome 应用商城注册开发者账号的页面 &#xff08;2&#xff09;现在进行一个绑卡支付5美元的一次性注册费用即可。【不知道如何绑卡的支付的&#xff0c;文…

单片机数码管动态显示

在学习 51 单片机的过程中&#xff0c;数码管动态显示是一个非常基础且重要的知识点。通过数码管&#xff0c;我们可以直观地展示数字、字符等信息&#xff0c;在很多电子设备中都有广泛应用&#xff0c;比如电子时钟、数字万用表等。本文将详细介绍 51 单片机数码管动态显示的…