Spring AI 已经发布了好长时间了,目前已经更新到 1.0 版本了,所以身为 Java 程序员的你,如果还对 Spring AI 一点都不了解的话,那就有点太落伍了。

言归正传,那什么是 Spring AI?如何快速进行 Spring AI 开发呢?

1.什么是Spring AI?

Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。

Spring 官方对于 Spring AI 的定义是这样的:

Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design and promote using POJOs as the building blocks of an application to the AI domain.

翻译一下,Spring AI 是 AI 工程的应用框架。其目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI,并推广使用 POJO 作为 AI 领域应用程序的构建块。

什么意思呢?简单来说,Spring AI 就是让 Java 开发者,像开发 Spring 普通应用一样开发 AI 应用。

注意:Spring AI 不是帮你构建一个大模型,而是让你方便的对接各种大模型

Spring AI 官方文档:https://spring.io/projects/spring-ai

2.Spring AI有什么功能?

Spring AI 目前可以实现以下功能(后续还会支持更多功能):

  1. 智能聊天
  2. 文本转图片
  3. 音频和文本互转

Spring AI 支持的大模型有以下这些(后续还会支持更多大模型):

3.Spring AI快速上手

Spring AI 开发步骤主要有以下几步:

  1. 创建 Spring Boot 项目,并添加模型依赖;
  2. 配置模型的连接地址和秘钥;
  3. 使用模型提供的对象和方法,实现功能调用。

具体操作如下。

3.1 添加模型依赖

首先,先创建一个 Spring Boot 项目(最低 Java 版本为 JDK 17),并添加 AI 模型依赖(以 OpenAI 为例演示),如下图所示:

3.2 配置模型参数

OpenAI 至少要配置两个参数:模型的接口访问地址和模型的秘钥信息,如下配置所示:

spring:
ai:
openai:
base-url: https://api.openai.com
api-key: sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

如何获取 OpenAI 的 api-key?

答:可以去某宝,搜索“API Key”花几毛钱就可以买一个 key,调用上千次。

3.3 调用模型方法

以 AI 聊天为例,当我们操作 OpenAI 的时候,可以通过 OpenAiChatModel 对象的 call(String msg) 进行聊天功能的实现,具体实现代码如下:

import jakarta.annotation.Resource;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/openai")
public class OpenAIController { @Resource
private OpenAiChatModel chatModel; // 生成一个普通方法
@RequestMapping("/test")
public String test(String msg) {
if (!StringUtils.hasLength(msg)) {
return "请先输入信息!";
}
return chatModel.call(msg);
}
}

以上代码的执行效果如下:



当然,除了聊天功能之外,我们还可以实现生成图片、音频和文本的互相转换等功能,这里就不一一演示了,大家可以去官网查看更多示例代码:https://docs.spring.io/spring-ai/reference/1.0/api/index.html

课后思考

Spring AI 能对接国内的大模型吗?实现的手段都有哪些?

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

面试官:谈谈对SpringAI的理解?的更多相关文章

  1. 面试官:"谈谈分库分表吧?"

    原文链接:面试官:"谈谈分库分表吧?" 面试官:“有并发的经验没?”  应聘者:“有一点.”   面试官:“那你们为了处理并发,做了哪些优化?”   应聘者:“前后端分离啊,限流啊 ...

  2. 面试官:“谈谈Spring中都用到了那些设计模式?”。

    我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star.会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclim ...

  3. 【原创】面试官:谈谈你对mysql联合索引的认识?

    引言 本文预计分为两个部分: (1)联合索引部分的基础知识 在这个部分,我们温习一下联合索引的基础 (2)联合索引部分的实战题 在这个部分,列举几个我认为算是实战中的代表题,挑出来说说. 正文 基础 ...

  4. 面试官一口气问了MySQL事务、锁和MVCC,我

    面试官:你是怎么理解InnoDB引擎中的事务的? 候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败 候选者:事务其目的是为了「保证数据最终的一致性」. 候选者:举个例子,我给你发 ...

  5. 面试官问我JVM内存结构,我真的是

    面试官:今天来聊聊JVM的内存结构吧? 候选者:嗯,好的 候选者:前几次面试的时候也提到了:class文件会被类加载器装载至JVM中,并且JVM会负责程序「运行时」的「内存管理」 候选者:而JVM的内 ...

  6. [每日一题]面试官问:谈谈你对ES6的proxy的理解?

    [每日一题]面试官问:谈谈你对ES6的proxy的理解? 关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...

  7. java面试官:兄弟简单谈谈Static、final、Static final各种用法吧

    前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...

  8. 怎么回答面试官:你对Spring的理解?

    最近看了点Spring的源码,正好来稍微扯一扯,帮一部分培训班的朋友撕开一道口子,透透气.我自己都是看的培训班视频,所以也算培训班出身吧.所以下文开口闭口"培训班",不要觉得是我在 ...

  9. 【Java8新特性】面试官:谈谈Java8中的Stream API有哪些终止操作?

    写在前面 如果你出去面试,面试官问了你关于Java8 Stream API的一些问题,比如:Java8中创建Stream流有哪几种方式?(可以参见:<[Java8新特性]面试官问我:Java8中 ...

  10. Android开发面试经——6.常见面试官提问Android题②(更新中...)

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...

随机推荐

  1. 阿里云服务网格 ASM 正式发布商业化版本

    ​简介:为了更好地满足企业日益加深的大规模使用服务网格产品.服务多语言互通.服务精细治理等需求,2022 年 4 月 1 日起,阿里云服务网格产品 ASM 正式发布商业化版本,为企业在生产环境下大规模 ...

  2. 阿里的 RocketMQ 如何让双十一峰值之下 0 故障?

    简介: 2020 年双十一交易峰值达到 58.3 W 笔/秒,消息中间件 RocketMQ 继续数年 0 故障丝般顺滑地完美支持了整个集团大促的各类业务平稳. 作者 | 愈安来源 | 阿里巴巴云原生公 ...

  3. [FE] 推荐两个能全球访问的 CDN 前端资源仓库

    https://unpkg.com/ https://cdnjs.com/ 部分资源库的版本不全. 访问速度请自行评估. Link:https://www.cnblogs.com/farwish/p/ ...

  4. SQL server 游标使用实例

    --创建一个游标 DECLARE my_cursor CURSOR FOR SELECT id, Bran_number, Bran_taxis FROM dbo.Base_Branch; --打开游 ...

  5. 【爬虫数据集】滇西小哥YouTube频道TOP10热门视频的热评数据,共2W条!

    目录 一.背景介绍 二.爬取目标 三.结果展示 四.演示视频 五.附完整数据 一.背景介绍 滇西小哥是一位来自中国云南省的视频博主,他在YouTube上拥有超过1000万的订阅者和上亿的观看量.他的视 ...

  6. Kafka源码分析(四) - Server端-请求处理框架

    系列文章目录 https://zhuanlan.zhihu.com/p/367683572 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka. ...

  7. SWAG反向代理Jellyfin媒体服务器流量教程

    目录 1. 简介 1.1 Jellyfin媒体服务器 1.2 SWAG服务器 2. 设置Jellyfin开启HTTPS访问 3. 安装并配置SWAG服务器反向代理Jellyfin流量 3.1 安装SW ...

  8. CMake快速入门教程

    前言 Make工具因遵循不同的规范和标准,执行的Makefile的格式也是不同.主流的Make工具包括: GNU Make QT的qmake 微软的 MS nmake BSD的 pmake 每个平台都 ...

  9. 高性能远程控制软件,完美替代Anydesk

    Anydesk是一款来自德国的远程软件,据悉是Teamviewer团队成员出来独立门户做的.Anydesk给人一种小而美的感觉,软件体积小,性能高,被视为Teamviewer的替代产品.现在,AnyD ...

  10. CentOS7部署Redis(离线单机)

    一.检查是否安装 ## 检查是否安装了Redis [root@localhost /]# ps -ef | grep redis ## 存在就删除 [root@localhost /]# sudo y ...