JAVA简单走进AI世界~Spring AI

1、背景

现代 AI 正以前所未有的速度改变着世界。它是基于复杂算法和强大计算能力的技术体系,涵盖了机器学习、深度学习、自然语言处理等多个领域。

在日常生活中,AI 广泛应用于智能语音助手、图像识别、推荐系统等。比如,智能音箱能理解并回应语音指令,为人们提供信息查询、音乐播放等服务;图像识别技术助力医疗诊断,精准识别疾病。

在工业领域,AI 通过自动化流程提高生产效率、优化供应链管理。无人驾驶汽车的出现,更是对交通出行方式的变革性探索。

AI 的发展也带来了诸多挑战,如数据隐私、伦理问题等。但不可否认,它正不断推动人类社会向智能化迈进 ,为生活和工作带来无限可能 。

2、Spring Ai介绍

在这里插入图片描述

Spring AI 是一个专为 Java 开发者设计的面向 AI 大模型的开发框架。以下是对它的详细介绍:
主要特性

丰富的模型支持:集成了 OpenAI、Microsoft、Amazon、Google 和 Huggingface 等多家主流的 AI 模型提供商,支持多种模型类型,如聊天机器人、文本到图像转换等,还提供了跨不同 AI 提供商的可移植 API,方便开发者在不同服务提供商之间切换

  • 自然语言处理能力:提供丰富的 NLP 工具,可进行文本生成、情感分析、语音识别等,例如可以轻松地处理用户输入的文本,然后利用机器学习模型来预测用户问题的意图,最终给出相应的回答。
    机器学习集成:允许开发者轻松加载、训练和推理 AI 模型,能将训练好的模型嵌入到 Spring 应用程序中,进行预测、分类、聚类等任务
  • 图像处理与计算机视觉:支持图像识别、目标检测、图像分割等任务,为应用程序增加更多智能。
    检索增强生成(RAG):结合检索和生成技术,提高生成内容的准确性和相关性。 函数调用:允许开发者自定义函数,使 AI
    模型能够与外部系统交互。 矢量数据库集成:覆盖了 Azure Vector
    Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis
    和 Weaviate 等主流的矢量数据库引擎,并提供跨 Vector Store 提供程序的可移植 API 和类似 SQL 的元数据过滤器
    API

优势
简化集成流程:提供简单易用的 API 和工具,使得将人工智能功能集成到 Spring 应用程序中变得轻而易举,开发者无需深入研究 AI 技术的细节,就可以快速实现复杂的 AI 功能。
提高开发效率:利用其丰富功能和工具,可更快地开发出功能强大的应用程序,大大缩短开发周期。
增强应用智能性:通过集成自然语言处理、机器学习、图像识别等功能,使应用程序更加智能化,提升用户体验。
熟悉的开发环境:对于熟悉 Spring 框架的 Java 开发者来说,无需学习全新的工具或语言,能利用现有的开发技能和经验快速上手 AI 项目。

应用场景

  • 智能客服系统:可以通过自然语言处理理解用户的问题,并给出相应的解答。
  • 数据分析与预测:结合机器学习模型对大量数据进行分析和预测,如销售趋势预测、风险评估等。
  • 图像识别与处理:用于图像识别、目标检测、图像分割等任务,如安防监控中的人脸识别、医疗影像分析等。
  • 智能推荐系统:根据用户的行为和偏好,利用机器学习算法进行个性化推荐。

3、spring ai使用

(1)使用前准备
导依赖
【这里用open ai做例子,若要使用其他模型,可以自行导入对于大模依赖】
在这里插入图片描述

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>自定义</version>
</dependency>

open ai官网地址

https://openai.com/

因为openai是国外的,所以调用比较耗时,所以各位可以使用中转【中转服务可以到淘宝等电商平台购买】

以为用对接deepseek做例子实现对接【deepseek是兼容openai的springboot包】
(1)添加配置

spring:ai:openai:chat:options:model: deepseek-reasoner  #【模型名称】api-key: xxxxxxxxbase-url: https://api.deepseek.com

https://platform.deepseek.com/api_keys

在这里插入图片描述
备注:新注册是会送¥10,若是老用户,请自行充值对接使用

模型名称模型
deepseek-chatdeepseek-v3
deepseek-reasonerdeepseek-r1

(2)注入bean

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SpringAiConfig {@Beanpublic ChatClient springAiClient(ChatClient.Builder chatClientBuilder) {return chatClientBuilder.build();}
}

(3)实现简单对话

import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor
public class AiController {private final ChatClient chatClient;@GetMapping("chat")public String chat(@RequestParam("mesg") String mesg) {return chatClient.prompt(

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

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

相关文章

stm32wb55rg (4) 启用usart串口

code repo: 访问gitee 上节课成功点亮了LED&#xff0c;这次来把usart 用起来&#xff0c;毕竟有交互才是系统。 技术准备 首先查看手册&#xff0c;发现mcu有1个usart和1个 lpuart。 usart 的使用需要两个pin&#xff0c;一个接收一个发送。继续查看pin and ball definition…

Python生活手册-NumPy数组创建:从快递分拣到智能家居的数据容器

一、快递分拣系统&#xff08;列表/元组转换&#xff09; 1. 快递单号录入&#xff08;np.array()&#xff09; import numpy as np快递单号入库系统 快递单列表 ["SF123", "JD456", "EMS789"] 快递数组 np.array(快递单列表) print(f"…

数据库-数据类型,表的约束和基本查询操作

一、数值类型 1. 整数类型 类型字节有符号范围无符号范围操作注意事项TINYINT1-128 ~ 1270 ~ 255默认有符号&#xff0c;UNSIGNED定义无符号SMALLINT2-32768 ~ 327670 ~ 65535无符号需显式声明INT4-2^31 ~ 2^31-10 ~ 2^32-1推荐优先使用INTBIGINT8-2^63 ~ 2^63-10 ~ 2^64-1存…

【C语言编译】编译原理和详细过程

文章目录 1. C 语言编译原理和详细过程1.1 预处理阶段1.2 编译阶段1.3 汇编阶段1.4 链接阶段 2. 疑问点解析2.1 三地址码是什么&#xff1f;有什么作用2.2 符号表是什么&#xff1f;有何作用2.3 重定位的含义与作用2.3 符号表和重定位在整个编译过程中的作用2.4 动态链接库.so和…

游戏引擎学习第251天:完成调试层级结构

运行游戏&#xff0c;查看当前调试层级的状态。 我们正在直播中开发一个完整的游戏&#xff0c;目前正进行调试代码的整理和清理工作。现在我们直接进入正题&#xff0c;虽然还不完全确定今天要完成哪些具体内容&#xff0c;但有几个明确的目标&#xff1a; 首先&#xff0c;…

关于Python:9. 深入理解Python运行机制

一、Python内存管理&#xff08;引用计数、垃圾回收&#xff09; Python&#xff08;CPython&#xff09;采用的是&#xff1a; “引用计数为主&#xff0c;垃圾回收为辅” 的内存管理机制。 也就是说&#xff1a; 引用计数机制&#xff1a;负责大部分内存释放&#xff0c;简…

【STM32单片机】#13 RTC实时时钟

主要参考学习资料&#xff1a; B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接&#xff1a;https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装&#xff1a;STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 目录 Uni…

SecureCRT 使用指南:安装、设置与高效操作

目录 一、SecureCRT 简介 1.1 什么是 SecureCRT&#xff1f; 1.2 核心功能亮点 1.3 软件特点 二、SecureCRT 安装与激活 2.1 安装步骤&#xff08;Windows 系统&#xff09; 2.2 激活与破解&#xff08;仅供学习参考&#xff09; 三、基础配置与优化 3.1 界面与编码设…

3.5/Q1,GBD数据库最新一区文章解读

文章题目&#xff1a;Global burden of low vision and blindness due to age-related macular degeneration from 1990 to 2021 and projections for 2050 DOI&#xff1a;10.1186/s12889-024-21047-x 中文标题&#xff1a;1990年至2021年因年龄相关性黄斑变性导致的低视力和失…

【Hive入门】Hive安全管理与权限控制:基于SQL标准的授权GRANT REVOKE深度解析

目录 引言 1 Hive权限模型概述 2 SQL标准授权基础 2.1 核心概念解析 2.2 授权模型工作流程 3 GRANT/REVOKE语法详解 3.1 基础授权语法 3.2 权限回收语法 3.3 参数说明 4 授权场景 4.1 基础授权示例 4.2 列级权限控制 4.3 视图权限管理 5 权限查询与验证 5.1 查看…

无缝监控:利用 AWS X-Ray 增强 S3 跨账户复制的可见性

您准备好提升您的云和 DevOps 技能了吗? 🐥《云原生devops》专门为您打造,我们精心打造的 30 篇文章库,这些文章涵盖了 Azure、AWS 和 DevOps 方法论的众多重要主题。无论您是希望精进专业知识的资深专业人士,还是渴望学习相关知识的新手,这套资源库都能满足您的需求。 …

Python Cookbook-7.2 使用 pickle 和 cPickle 模块序列化数据

任务 你想以某种可以接受的速度序列化和重建Python 数据结构&#xff0c;这些数据既包括基本Python 对象也包括类和实例。 解决方案 如果你不想假设你的数据完全由基本 Python 对象组成&#xff0c;或者需要在不同的 Python 版本之间移植&#xff0c;再或者需要将序列化后的…

2025.5.5总结

今日感悟&#xff1a;这假期就这样结束了&#xff0c;玩了一次滑板&#xff0c;打扫了一次租房&#xff0c;出去逛了一次街&#xff0c;看完了一本书&#xff0c;追了一部剧。既没有家人&#xff0c;也没有能一同畅饮的同学&#xff0c;更没有对象&#xff0c;显得确实有些孤独…

MySQL | DQL语句-连接查询

MySQL | DQL语句-连接查询 &#x1fa84;个人博客&#xff1a;https://vite.xingji.fun 什么是连接查询 从一张表中查询数据称为单表查询。从两张或更多张表中联合查询数据称为多表查询&#xff0c;又叫做连接查询。什么时候需要使用连接查询&#xff1f; 比如这样的需求&…

Vite简单介绍

Vite 是一个现代化的前端构建工具&#xff0c;由 Vue.js 的创始人 Evan You 开发&#xff0c;旨在提供更快的开发体验和更高效的构建流程。它的名字来源于法语单词“vite”&#xff0c;意为“快速”&#xff0c;这也反映了它的核心优势——极速的冷启动和热模块替换&#xff08…

C语言-回调函数

回调函数 通过函数指针调用函数&#xff0c;而这个被调用的函数称为回调函数 回调函数是C语言中一种强大的机制&#xff0c;允许将函数作为参数传递给其他函数&#xff0c;从而在特定时机由后者调用。它的核心在于函数指针的使用 以下是回调函数的使用例子 先创建好一个函数…

启发式算法-禁忌搜索算法

禁忌搜索是一种可以用于解决组合优化问题的启发式算法&#xff0c;通过引入记忆机制跳出局部最优&#xff0c;避免重复搜索。该算法从一个初始解开始&#xff0c;通过邻域搜索策略来寻找当前解的邻域解&#xff0c;并在邻域解中选择一个最优解作为下一次迭代的当前解&#xff0…

Python 整理3种查看神经网络结构的方法

1. 网络结构代码 import torch import torch.nn as nn# 定义Actor-Critic模型 class ActorCritic(nn.Module):def __init__(self, state_dim, action_dim):super(ActorCritic, self).__init__()self.actor nn.Sequential(# 全连接层&#xff0c;输入维度为 state_dim&#xf…

Linux 查询CPU飙高的原因

获取进程ID ps -efgrep xxxx查询占用最高的线程ID top -Hp 线程ID线程ID 转 16进制数 printf 0x%x\n 线程ID基于jstack工具 跟踪堆栈定位代码位置 jstack 进程ID | grep 16禁止线程ID -A 20

Oracle OCP认证考试考点详解083系列09

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 41. 第41题&#xff1a; 题目 解析及答案&#xff1a; 关于应用程序容器&#xff0c;以下哪三项是正确的&#xff1f; A) 它可以包含单个…