Spring AI 介绍以及与 Spring Boot 项目整合

news2024/10/23 16:17:31

Spring AI 项目旨在简化使用 Spring Boot 开发包含人工智能功能的应用程序,提供抽象和支持多种模型提供商及矢量数据库提供商。

Spring AI 的功能特点

  • 支持主流模型提供商:如 OpenAI、Microsoft、Amazon、Google 和 Huggingface 等。
  • 支持多种模型类型:包括聊天、文本到图像、音频转录、文本到语音等。
  • 提供可移植 API:支持同步和流 API 选项,还支持访问模型特定功能。
  • 实现 AI 模型输出到 POJO 的映射
  • 支持主流矢量数据库提供商:如 Apache Cassandra、Azure Vector Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis 和 Weaviate 等。
  • 提供跨 Vector Store 提供程序的可移植 API,包括类似 SQL 的元数据过滤器 API。
  • 支持 Function calling(函数调用)
  • 提供 Spring Boot 自动配置和启动器的 AI 模型
  • 包含数据工程的 ETL 框架

Spring Boot 项目整合 Spring AI 的步骤

  1. 初始化 Spring Boot 项目
    • 使用 Spring Initializr:访问 https://start.spring.io/,选择 Maven 或 Gradle 作为构建工具,选择 Java 作为语言,勾选“Web”依赖以启用 Spring Web 支持,选择 OpenAI 依赖,然后生成项目。

在这里插入图片描述
手动添加依赖

添加仓库依赖:在 pom.xml 文件中添加以下仓库依赖:

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

使用 BOM:通过将以下内容添加到 pom.xml 文件中来使用 BOM,使用的 BOM 版本决定了使用的依赖项版本,它还可确保默认使用受支持和测试的依赖项版本。

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

添加 OpenAI 的 maven 依赖:在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
  1. 配置 OpenAi API KEY:请加入你生成的 OpenAI 的 API key,可以通过直连或者中转的方式进行访问,具体可以百度和淘宝。在 application.properties 文件中添加以下配置:
spring.application.name=spring-ai
spring.ai.openai.api-key=sk-8*******************
spring.ai.openai.base-ur=h*******************
  1. 在控制器中调用 Spring API 的方法进行访问和输出
@RestController
@RequestMapping("/openai")
public class OpenAiChatController {

    @Resource
    private OpenAiChatModel openAiChatModel;

    @GetMapping("/chat/generate")
    public String chat(@RequestParam(value = "message", defaultValue = "你是谁?") String message) {
        String result = openAiChatModel.call(message);
        System.out.println(result);
        return result;
    }
}
  1. 运行和测试
    启动 Spring Boot 应用,访问 http://localhost:8080/openapi/generate?message=请介绍一下 Spring AI

你应该能看到来自 ChatGPT 的响应。

在这里插入图片描述
在这里插入图片描述
Spring AI 为开发人员提供了一个强大的平台,帮助他们更轻松地利用人工智能和机器学习技术,提升应用程序的智能化水平。通过与 Spring Boot 的整合,开发人员可以更方便地构建包含人工智能功能的应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot大学生体质测试管理系统 LW+PPT+源码

3 系统需求分析 3.1 系统可行性分析及目的 3.1.1 系统设计目的 如今我们已经越来越离不开互联网给我们带来的生活便利&#xff0c;希望大学生体质测试管理系统也能通过活泼、清新的界面给用户提供简单的与互动的网站。方便用户在平时利用有限的时间对测试信息进行查看&#xf…

crontab异常任务删除不了,清除挖矿病毒

1、事件原因 当天发现服务器访问速度异常缓慢&#xff0c;通过top命令查看系统资源使用情况&#xff0c;发现名为systemd-mont&#xff08;可能是一个误写或自定义的进程名&#xff09;的两个异常线程占用了大量的CPU资源&#xff0c;几乎导致CPU满载。 2、查找问题 为了确定这…

椭圆的矩阵表示法

椭圆的矩阵表示法 flyfish 1. 标准几何表示法 标准几何表示法是通过椭圆的几何定义来表示的&#xff1a; x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1其中&#xff0c; a a a 是椭圆的长半轴长度&#xff0c; b b b 是椭圆的短半轴长度。 2.…

JavaBean与内省,注解的语法及使用

JavaBean Javabean 是 Java 中最重要的一个可重用的组件(减少代码重复,可重用,封装业务逻辑,封装数据).组件:一些符合某种规范的类,可以完成特定的功能. JavaBean 的规范要求: 使用 public 修饰.字段私有化.提供 get/set 方法.公共的无参数的构造器.(使用反射,使用字节码对象.n…

记录一次递归查询导致的 java.lang.StackOverflowError: null

问题截图&#xff1a; 由于作者使用递归统计信息&#xff0c;刚开始这个接口运行得正常&#xff0c;但是上线运行一段时间后接口就出现了&#xff0c;如图的栈溢出错误。可以看出确实是堆栈溢出了&#xff0c;解决栈溢出目前只有两种方式&#xff1a; 第一种调大栈的大小&…

MySQL 离线安装客户端

1. 官方网址下载对应架构的安装包。 比如我的是centOs 7 x64。则需下载如图所示的安装包。 2. 安装 使用如下命令依次安装 devel , client-plugins, client. rpm -ivh mysql-community-*.x86_64.rpm --nodeps --force 在Linux系统中&#xff0c;rpm是一个强大的包管理工具&…

Java面试八股之Mybatis和JPA的区别

Mybatis和JPA的区别 Mybatis 和 JPA&#xff08;Java Persistence API&#xff09;是两种在 Java 应用程序中用于数据持久化的框架&#xff0c;它们各有特点和适用场景。下面是它们之间的一些主要区别&#xff1a; 映射方式&#xff1a; Mybatis 是半自动的 ORM 框架&#xf…

移植案例与原理 - HPM包描述文件bundle.json

发现各个子系统、组件、三方库目录下都添加了bundle.json&#xff0c;了解下该文件的用途、用法并快速记录下。 1、HPM Bundle的基本概念 Bundle是OpenHarmony中一个用来表示分发单元的术语&#xff0c;等同于包&#xff0c;一个Bundle中通常包含以下内容&#xff1a; 被分发…

股票核心因子解读以及如何从接口获取股票数据信息

目录 1 股票基础信息1.1 股票核心因子1.2 获取股票信息 2 如何从接口获取股票数据2.1 yfinance2.2 finnhub-python2.3 alpha_vantage2.4 efinance2.4 Tushare 3 如何从各大金融平台获取咨询信息3.1 国外3.2 国内 1 股票基础信息 1.1 股票核心因子 基本面因子 因子名称计算公…

23种设计模式之桥接模式

桥接模式 1、定义 桥接模式&#xff1a;将抽象部分与它的实现部分解耦&#xff0c;使得两者都能独立变化 2、桥接模式结构 Abstraction&#xff08;抽象类&#xff09;&#xff1a;它是用于定义抽象类的&#xff0c;通常是抽象类而不是接口&#xff0c;其中定义了一个Imple…

基于JSP的高校信息资源共享平台

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果你对高校信息资源共享平台感兴趣或者有相关需求&#xff0c;可以通过文末的联系方式找到我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;IDEA…

2024/6/20 驱动day7GPIO子系统

GPIO子系统点六盏灯 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/gpio.h> #include <linux/of_gpio.h> struct device_node* node; struct device_node* child_node1; struct device_node* child…

CRMEB多商户阿里云集群部署流程

注意: 1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区 2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示 一、 创建容器镜像服务&#xff0c;容器镜像服务(aliyun.com) ,个人版本就可以 先创建一个命名空间然后创建一个镜像仓库查看并记录镜像公网地址创建…

基于功率谱密度的旋转机械故障诊断方法(MATLAB R2021b)

关于功率谱密度&#xff0c;可以参考如下文章&#xff1a; https://zhuanlan.zhihu.com/p/417454806 在实际应用中&#xff0c;一个信号我们不可能获得无穷长时间段内的点&#xff0c;对于数字信号&#xff0c;只能通过采样的方式获得N个离散的点。实际信号基本上是随机信号&…

机器学习——RNN、LSTM

RNN 特点&#xff1a;输入层是层层相关联的&#xff0c;输入包括上一个隐藏层的输出h1和外界输入x2&#xff0c;然后融合一个张量&#xff0c;通过全连接得到h2&#xff0c;重复 优点&#xff1a;结构简单&#xff0c;参数总量少&#xff0c;在短序列任务上性能好 缺点&#x…

当游戏遭遇安全问题,我们应该怎么做?

在游戏安全领域&#xff0c;专业性最差、但最常见的案例类型是DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;。出于它的特性&#xff0c;中小厂商、独立开发者较容易遭受这类攻击。 例如&#xff0c;今年2月29日上线的手游《雷索纳斯》就遭受了名为ACCN组织发起的DDoS攻…

Windows反截屏开发实现

文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力&#xff0c;所谓反截屏就是我们无法通过截图软件&#xff08;微信&#xff0c;QQ&#xff0c;截图等程序&#xff09;截取桌面的…

RTSP/Onvif安防监控平台EasyNVR抓包命令tcpdump使用不了的解决方法

安防视频监控汇聚EasyNVR智能安防视频监控平台&#xff0c;是基于RTSP/Onvif协议的安防视频平台&#xff0c;可支持将接入的视频流进行全平台、全终端分发&#xff0c;分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。平台可提供的视频能力包括&#xff1a;…

FLEXPART拉格朗日粒子扩散模式建模技术及研究大气污染物源-汇关系

原文链接&#xff1a;FLEXPART拉格朗日粒子扩散模式建模技术及研究大气污染物源-汇关系 当前&#xff0c;大气污染是我国重要的环境问题之一。为了高效、精准地治理区域大气污染&#xff0c;需要弄清污染物的来源。拉格朗日粒子扩散模式FLEXPART通过计算点、线、面或体积源释放…