(二十一)springboot实战——Spring AI劲爆来袭

前言

本节内容是关于Spring生态新发布的Spring AI的介绍,Spring AI 是一个面向人工智能工程的应用框架。其目标是将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用到人工智能领域,并推广使用普通的Java对象(POJOs)作为构建应用程序的基础。其官方文档地址如下:

Spring AI

目前其集成了主流的Chat Models(聊天模型)、Text-to-image Models(文生图模型)、Transcription (audio to text) Models(语音转文本模型)、Embedding Models(嵌入式模型)、Vector Databases(向量数据库模型)。通过引入spring-ai-openai-spring-boot-starter启动器,就可以很方便的调用各种ai客户端工具,例如openai、Ollama等文本模型。本节内容以open ai 调用为例。

正文

①项目工程版本,低版本springboot不支持此功能

版本说明
JDKJDK17
springboot3.2.5
spring-ai-openai-spring-boot-starter0.8.1

②使用springboot初始化向导创建一个springboot项目

 ③引入pom时可能存在无法引入pom依赖的情况,这是因为在maven中心仓库还没有发布此启动器,我们需要配置spring仓库下载springai相关的启动器,本地如果使用了阿里云的maven仓库也需要屏蔽掉

④ 在application.properties中配置OpenAI的相关参数

⑤创建一个open ai请求,用于测试open ai的功能

package com.yundi.atp.controller;

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 OpenAiController {

    @Autowired
    private OpenAiChatClient openAiChatClient;

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "你叫什么名字?") String message) {
        return Map.of("generation", openAiChatClient.call(message));
    }
    
}

⑥测试open ai chat会话模型,注意,这里需要开启魔法,需要能够访问open ai的地址,集成一个web客户端就能实现自己的chat ai聊天室

⑦ spring ai还提供了许多的ai场景启动器,需要集成什么ai功能就引入什么ai场景启动器,例如Ollama开源模型、微软openai模型等,相信其生态会越来越丰富,当然我们也可以自定义一些自己的ai启动器

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

⑧文生图的AI模型

 

结语

至此,关于spring ai相关的内容到这里就结束了,我们下期见。。。。。。

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

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

相关文章

ES6语法教程

简介&#xff1a; ECMA European Computer Manufactures Association 欧洲计算机制造商协会&#xff0c;该组织的目标是评估、开发、和认可电信和计算机标准&#xff0c;94年后该组织改名为Ecma国标。 ECMAScript是由Ecma国际通过ECMA-262标准化的脚本程序设计语言 Ecma国…

将Flutter程序打包为ios应用并进行安装使用

如果直接执行flutter build ios: Building com.example.myTimeApp for device (ios-release)...════════════════════════════════════════════════════════════════════════════════No vali…

抖音小店怎么找达人带货的?分享几个成功率超高的沟通话术!

哈喽~我是电商月月 做抖音小店&#xff0c;特别是无货源的商家想要更多的流量&#xff0c;必定会尝试直播卖货&#xff0c;不会自己直播卖货&#xff0c;就会开通精选联盟&#xff0c;在里面找达人合作 那精选联盟到底是怎样找达人带货的呢&#xff1f; 有的达人打招呼了根本…

院校信息 | 伯明翰大学24Fall新增3个专业!附截止时间!

伯明翰大学针对2024年秋季入学&#xff0c;推出3个新的授课型硕士项目&#xff1a; MSc Financial Data Science 金融数据科学理学硕士 MSc Statistical Data Science 统计学数据科学理学硕士 MSc Statistics 统计学理学硕士 以上所有课程24fall申请截止时间为6月1日&#xf…

百病之源,根在肝脏!4种养肝法,助您对症养肝,越养越健康~

如今生活节奏比较快&#xff0c;人们的身体和精神都承受着巨大的压力&#xff0c;熬夜加班、喝酒应酬、通宵上网等&#xff0c;这些习惯都在悄悄损耗我们的肝脏&#xff0c;使得大家长期处于亚健康的边缘&#xff01; 中医讲&#xff0c;百病之源&#xff0c;根在肝脏。肝不好…

Vue.js-----vue组件

能够说出vue生命周期能够掌握axios的使用能够了解$refs, $nextTick作用能够完成购物车案例 Vue 生命周期讲解 1.钩子函数 目标&#xff1a;Vue 框架内置函数&#xff0c;随着组件的生命周期阶段&#xff0c;自动执行 作用: 特定的时间点&#xff0c;执行特定的操作场景: 组…

数字IC乘法器结构

目录 一、原理分析二、Xinlinx中的乘法器结构1.直接相乘2.移位相加乘法器3.加法树加法器 在数字IC中乘法器的结构是什么样的呢&#xff1f;接下来我们以两个4bit数的乘法进行举例&#xff0c;假定有两个4bit数据&#xff0c;分别为X(X3&#xff0c;X2&#xff0c;X1&#xff0c…

Ti雷达常用工具

Ti雷达常用工具 名称网站功能雷达开箱界面mmWave Demo Visualizer (ti.com)显示距离谱、RD谱图雷达参数估计mmWaveSensingEstimator根据性能设计估计参数雷达项目资料Embedded Software (ti.com)Ti雷达示例及说明书官方论坛Sensors forum - Sensors - TI E2E support forumsTi…

【复试分数线】四电四邮历年分数线汇总(第一弹)

24年考研国家线预计3月中旬公布&#xff0c;接下来各大院校就会公布自己的复试分数线。这次会为大家整理四电四邮的整理了近三年各院校的复试分数线作为参考&#xff0c;大家可以参考&#xff01; 大多数院校采取的是1.2:1差额的形式复试。举个例子&#xff0c;比如学校今年拟…

人工智能|推荐系统——工业界的推荐系统之涨指标

一、推荐系统的评价指标 涨指标的方法有哪些? 二、涨指标的方法:召回 2.1 改进双塔模型 2.2 Item-to-Item (I2I) 2.3 类似I2I 的模型

三.搜索与图论(未完结)

DFS(深搜) 之前写过三篇关于dfs的 练习总结: 基础算法--递归搜索DFS练习总结(上)-CSDN博客 基础算法--递归搜索DFS练习总结(中)-CSDN博客 基础算法--递归搜索DFS练习总结(下)-CSDN博客 以下题目均为 补充练习: P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins …

使用Python将数据表中的浮点数据转换为整数:详细教程与案例分析

目录 一、引言 二、环境准备 三、读取数据表 四、浮点数据转换为整数 五、写入数据表 六、案例分析 步骤一&#xff1a;读取数据表 步骤二&#xff1a;浮点数据转换为整数 步骤三&#xff1a;写入新的数据表 七、注意事项 八、总结 在数据处理和分析的过程中&#x…

58. 【Android教程】音频录制:MediaRecord

在第 57 节我们使用 MediaPlayer 实现了一个 mp3 播放器&#xff0c;除了播放 Android 还提供了 MediaRecorder 用于录音。Android 设备基本都会有一个麦克风&#xff0c;通过 MediaRecorder 可以打开麦克风进行语音采集&#xff0c;这一节我们就来学习如何在 Android 系统上实…

将ESP工作为AP路由模式并当成服务器

将ESP8266模块通过usb转串口接入电脑 ATCWMODE3 //1.配置成双模ATCIPMUX1 //2.使能多链接ATCIPSERVER1 //3.建立TCPServerATCIPSEND0,4 //4.发送4个字节在链接0通道上 >ATCIPCLOSE0 //5.断开连接通过wifi找到安信可的wifi信号并连接 连接后查看自己的ip地址变为192.168.4.…

太牛逼了,用ComfyUI中一键完成电商模特换装换背景!商业级教程附上!

&#x1f310; 大背景&#xff1a;电商时代的画卷正在翻页 在全球电子商务风起云涌的今天&#xff0c;市场竞争愈发激烈。商家们始终在寻求提高效率、减少成本和增强用户体验的新方法。然而&#xff0c;一个关键问题一直困扰着电商行业——**如何高效且经济地展示商品&#xff…

python如何整体缩进

python自带编辑器的缩进和取消缩进快捷键&#xff1a; 整体缩进 Ctrl【 整体取消缩进 Ctrl】 pycharm编辑器的缩进和取消缩进快捷键&#xff1a; 整体缩进&#xff1a; tab 整体取消缩进&#xff1a; tabshift

ADOP带你了解:温度如何影响您的室外以太网电缆?

温度&#xff1a;室外以太网电缆的隐形敌人 在构建和维护室外以太网网络时&#xff0c;我们通常会考虑到许多物理因素&#xff0c;如电缆的长度、宽带容量和连接质量。然而&#xff0c;有一个不那么显眼但同样重要的因素常常被忽视&#xff0c;那就是温度。温度的波动不仅影响…

力扣-21. 合并两个有序链表-js实现

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} list1* param {ListNode} list2* return {ListNode}*/ const mergeTwoList…

数据库索引回表困难?揭秘PolarDB存储引擎优化技术

引言 数据库系统为了高效地存储、检索和维护数据&#xff0c;采用了多种不同的数据组织结构。不同的组织结构有其特定的用途和优化点&#xff0c;比如提高查询速度、优化写入性能、减少存储空间等。常见的数据库记录组织结构有&#xff1a; B-Tree B-Tree是一种平衡的多路搜索…

【MySQL 数据宝典】【索引原理】- 007 索引优化示例

一、单表优化 1.1 数据准备 下面是一张用户通讯表的表结构信息,这张表来源于真实企业的实际项目中,有接近500万条数据. CREATE TABLE user_contacts (id INT(11) NOT NULL AUTO_INCREMENT,user_id INT(11) DEFAULT NULL COMMENT 用户标识,mobile VARCHAR(50) DEFAULT NULL C…