正式发布的Spring AI,能让Java喝上AI赛道的汤吗

作者:鱼仔

博客首页: https://codeease.top

公众号:Java鱼仔

前言

最近几年AI发展实在太快了,仿佛只要半年没关注,一个新的大模型所产生的效果就能超越你的想象。Java在AI这条路上一直没什么好的发展,不过Spring最近出来了一个新的模块叫做Spring AI,能让Java喝上AI赛道的汤吗?

SpringAI

下面这张截图来自Spring的官网,除了我们熟悉的Spring全家桶之外,还多了一个新的板块叫做SpringAI,你可以直接访问下面这个地址来到Spring的官网:https://spring.io/projects/spring-ai

在我写这篇文章的时候,当前的最新正式版本是0.8.1,还有一个1.0.0-SNAPSHOT的快照版本。

SpringAI这个模块要做的事情和其他的Spring模块一样,能让程序员用最快的方式接入AI,从SpringAI的官方文档可以看到,像聊天模型、文字转图片模型、语音转文字模型、嵌入式模型的呢功能等,它都提供了对应的API,接下来就来看看,如何快速地使用SpringAI。

创建项目

通过Spring Initializr的方式来初始化一个Spring项目,需要注意的是,SpringAI要求最低的JDK是17,所以在创建项目时需要选择JDK17

在后一个页面中选择一个Web的Starter,另外我主要演示OpenAI的使用,因此在AI模块中选择OpenAI

然后点击创建,一个SpringBoot项目就创建完成了。

可以看一下这个生成出来的pom依赖,一个Web的starter以及一个openai的starter。

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

代码编写

下面是一个官网的案例,首先在配置文件中增加下面这几行配置:

spring.ai.openai.api-key=你自己的OpenAI的key
spring.ai.openai.chat.options.model=gpt-3.5-turbo

这里要输入两个配置,一个是OpenAI的key,另外一个是选择的模型,key和模型需要对应上,接着编写接口。

import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;


@RestController
public class ChatController {

    private final OpenAiChatClient chatClient;

    @Autowired
    public ChatController(OpenAiChatClient chatClient) {
        this.chatClient = chatClient;
    }

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", chatClient.call(message));
    }
}

在上面这个例子中,通过构造器注入的方式注入了OpenAiChatClient这个对象,然后只需要调用它的call方法,传入一段对话文本,就能得到AI的结果,启动项目后,在PostMan中进行调用,然后你就得到了一个AI机器人

总结

Spring真的是追着把饭喂给程序员,通过SpringAI,创建一个AI应用全程都不到5分钟大家有兴趣的可以去试试其他的AI大模型,官网都有很详细的教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/557478.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】Vue3源码解析:第五部分 - 实现渲染(2)

课程地址&#xff1a;【已完结】全网最详细Vue3源码解析&#xff01;&#xff08;一行行带你手写Vue3源码&#xff09; 第五部分-&#xff1a;&#xff08;对应课程的第33 - 35节&#xff09; 第33节&#xff1a;《讲解组件渲染流程》 1、在 render 函数中拿到虚拟dom vnode后…

Ubuntu的终端中启用鼠标左键即为选中复制,右键粘贴的功能

在Ubuntu终端中启用鼠标复制和粘贴的功能需要进行一些设置。 首先&#xff0c;打开终端窗口&#xff0c;在菜单栏中找到“Edit”选项&#xff0c;点击“Profile Preferences”。然后&#xff0c;在“General”选项卡中&#xff0c;勾选“Use custom font”选项&#xff0c;可以…

博客文章:AWS re:Invent 2023 新产品深度解析 - 第四部分

TOC &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&#xff01; 写在最前面 去年发布文章的一部分&#xff0c;由于内…

微光成束,星火燎原,酷雷曼扶持政策再升级!

从北纬 18 度的三亚海角&#xff0c; 到北纬 53 度的漠河不夜城&#xff0c; 从东经 81 度的塞外江南伊犁&#xff0c; 到东经 120 度的上海魔都。 酷雷曼合作商为客户服务的范围 遍及全国 300 余个地区&#xff0c; 跨越了东南西北的辽阔地域。 即便如此&#xff0c; 面…

基于Bootstrap 5的创新网络服务公司网站模板

一.前言 这个网站的内容包括&#xff1a; 标题&#xff1a;Web service - Business Category Bootstrap Responsive Website Template - Home导航栏&#xff1a;Home, About, Services, Pages&#xff08;包括Blog posts、Blog single、404、Landing page等页面&#xff09;、…

fastjson转换json时默认将属性第一个字母转小写

描述&#xff1a; 我新建了一个实体类&#xff0c;但是实体类的首字母是大写的&#xff0c;但是使用fastjson后打印的&#xff0c;Json字符串首字母却是小写的&#xff0c;这是fastjson的一个bug 实体类&#xff1a; Json字符串&#xff1a; 解决方法&#xff1a; 一、使…

一个 .net 8 + Azure 登录 + Ant Design Blazor 的基本后台框架

一个 .net 8 Azure 登录 Ant Design Blazor 的基本后台框架 主界面使用了 Ant Design Blazor 项目模板搭建 后台技术是 .net 8 Blazor run at server 模式 登录方式使用 Azure 实现了菜单导航和路由 此外实现了读取和修改本地Json文件的功能&#xff0c;不是必须的&#x…

Github 2024-04-16Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10TypeScript项目1Vue项目1系统设计指南 创建周期:2507 天开发语言:Python协议类型:OtherStar数量:241693 个Fork数量:42010 次…

MySql8快速迁移版的制作过程

首先说明&#xff0c;mysql 8的安装不同与mysql5.x。 做程序的朋友都知道&#xff0c;程序好做&#xff0c;客户难伺候&#xff0c;因为限于用户的情况&#xff0c;如何能让用户把程序运行起来很关键&#xff0c;比如日前我在做 山东高中信息技术 学考 考前练习 系统时&#x…

3d模型附加之后怎么分离?---模大狮模型网

在3D建模过程中&#xff0c;有时候我们需要将多个物体合并成一个模型&#xff0c;以便于进行操作或者导出。然而&#xff0c;在某些情况下&#xff0c;我们也需要将这些附加的物体进行分离&#xff0c;以便对它们进行单独的编辑或者处理。本文将介绍在3D建模软件中如何将附加的…

密文字段模糊检索方案

代码地址: https://github.com/zuiyu-main/EncryptDemo https://mp.weixin.qq.com/s/cXOg1tiMtJz2eibDZmXHUQ 在个别特殊领域中&#xff0c;数据的安全问题是非常的重要的&#xff0c;所以需要数据库存储的数据是需要加密存储的。所以也就引申出来本文这个问题&#xff0c;加密…

顺丰同城急送API对接(附源码)

一、背景 最近公司让我对接顺丰同城急送的API&#xff0c;讲讲里面需要注意的几点 官方的API文档有些示例代码也不全&#xff0c;具体细节不多说&#xff0c;如果你现在也需要对接他们API&#xff0c;可以参考本篇博客再配合官方文档结合起来看&#xff0c;可以让您再开发的时…

深度学习--CNN应用--VGG16网络和ResNet18网络

前言 我们在学习这两个网络时&#xff0c;应先了解CNN网络的相关知识 深度学习--CNN卷积神经网络&#xff08;附图&#xff09;-CSDN博客 这篇博客能够帮我们更好的理解VGG16和RetNet18 1.VGG16 1.1 VGG简介 VGG论文网址&#xff1a;VGG论文 大家有兴趣的可以去研读一下…

C++设计模式|创建型 4.建造者模式

1.什么是建造者模式? 建造者模式&#xff08;也被成为生成器模式&#xff09;&#xff0c;是一种创建型设计模式&#xff0c;软件开发过程中有的时候需要创建很复杂的对象&#xff0c;而建造者模式的主要思想是将对象的构建过程分为多个步骤&#xff0c;并为每个步骤定义一个…

共享WiFi贴推广有哪些好处?一文说清

随着科技发展&#xff0c;更加智能高效便捷的共享wifi贴开始越来越多的取代了传统的wifi连接方法。 因为传统的连接WiFi方式确实存在一些不便之处。客人需要手动搜索店铺的WiFi&#xff0c;然后输入复杂的密码进行连接。这一过程不仅繁琐&#xff0c;而且容易出错。有时&#…

稳了!麒麟信安云应用助力国产化生态平稳过渡

2016年国家提出了安全可控体系并大力推进基础硬件、基础软件及应用软件的国产化建设进程。各行业及企事业单位加大国产设备及软硬件的采购力度&#xff0c;逐步完成国产化转型。而操作系统作为上层应用的载体&#xff0c;在信息建设国产化中有着举足轻重的地位。 过去几十年&a…

虚函数求圆形、矩形面积

目录 题目 源码 结果示例 题目 写一个程序&#xff0c;定义抽象基类Shape&#xff0c;由它派生出2个派生类&#xff1a;Circle(圆形)、Rectangle(矩形)&#xff0c;用一个普通函数printarea分别输出以上二者的面积&#xff0c;2个图形的数据在定义对象时给定。 源码 #inc…

软考-系统集成项目管理中级--项目质量管理(输入输出很重要!!!本章占分较高,着重复习)

本章历年考题分值统计 本章重点常考知识点汇总清单 5、成本效益分析法:对每个质量活动进行成本效益分析&#xff0c;就是要比较其可能的成本与预期的效益。达到质量要求的主要效益包括减少返工、提高生产率、降低成本、提升干系人满意度及提升赢利能力。(掌握)17下64考题 本章…

【Flutter】GetX状态管理及路由管理用法

目录 一、安装二、使用1.安装GetX插件&#xff0c;快捷生成模版代码2.主入口MaterialApp改成GetMaterialApp3.定义路由常量RoutePath类、别名映射页面RoutePages类4. 初始initialRoute&#xff0c;getPages。5.调用 总结 一、安装 dependencies: get: ^4.6.6二、使用 1.安装G…

Java八股文4

Linux篇 1.free命令-查看内存状态 free命令用于显示内存状态&#xff0c;它可以提供关于系统内存使用情况的详细信息。这个命令会显示出内存的使用情况&#xff0c;包括实体内存、虚拟的交换文件内存、共享内存区段&#xff0c;以及系统核心使用的缓冲区等。 其中&#xff0c;参…