Spring AI简介

在当今这样一个快速发展的技术时代,人工智能(AI)已经成为各行各业的一种标配。而作为一款主流的Java应用开发框架Spring,肯定会紧跟时代的潮流,所以,推出了Spring AI框架。

官网描述:

  • 官网地址 Spring AI

 

 

  • Spring AI是一个AI工程领域的应用程序框架;

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

  • 它的目标是将Spring生态系统的设计原则应用于 AI 领域,比如Spring生态系统的可移植性和模块化设计,并促进使用 POJO 作为应用程序的构建块到 AI 领域;

  • Spring AI 的核心是提供了开发 AI 大模型应用所需的基本抽象模型,这些抽象拥有多种实现方式,使得开发者可以用很少的代码改动就能实现组件的轻松替换;

  • 简言之,Spring AI 是一个 AI 工程师的应用框架,它提供了一个友好的 API 和开发 AI 应用的抽象,旨在简化 AI 大模型应用的开发工作。

 发行版本

 

  • 目前Spring AI 推出了一个预览版(PRE)和一个快照版(SNAPSHOT),GA版尚未发布,大家可以提前学习,等GA版发布后再真正用在项目中。

  •  SNAPSHOT指的是快照版,会在此版本上持续更新。
    PRE指的是预览版,主要提供给开发测试人员找bug,不到修改完善的。
    GA指的是 General Availability,意为正式发布的版本,推荐使用(主要是稳定)

Spring AI的主要功能

  • 第一、 对主流 AI 大模型供应商提供了支持,比如:OpenAI、DeepSeek、Microsoft、Ollama、Amazon、Google HuggingFace等。

  • 第二、 支持AI大模型类型包括:聊天、文本到图像、文本到声音等。

  • 第三、 支持主流的Embedding Models(嵌入模型)和向量数据库,比如:Azure Vector Search、Chroma、Milvus、Neo4j、Redis、PineCone、PostgreSQL/PGVector 等。

  • 第四、 把 AI 大模型输出映射到简单的 Java 对象(POJOs)上。

  • 第五、 支持了函数调用(Function calling)功能。

  • 第六、 为数据工程提供 ETL(数据抽取、转换和加载)框架。

  • 第七、 支持 Spring Boot 自动配置和快速启动,便于运行 AI 模型和管理向量库。

快速入门 

1 、准备DeepSeek模型

DeepSeek 是一款由深度求索所开发的 AI 人工智能大模型,其基于深度学习和多模态数据融合技术,采用先进的 Transformer 架构和跨模态协同算法,可实现对复杂文档和图像的自动化解析与结构化信息提取。

依托于最新推出的“深度思考”模式(R1),这款AI大模型在极低成本下实现了与国际顶尖模型ChatGPT-o1相媲美的性能表现,其中文理解与输出能力更是远超ChatGPT、Claude等顶尖模型。再加上极具竞争力的API定价和全面开源的策略,让这款AI大模型成功在国际上火爆出圈

如果说AI是一个广泛的概念,那么DeepSeek就是是AI领域中的一个具体产品。

DeepSeek的特点‌:

  • 成本‌:DeepSeek致力于降低AI应用的成本。通过采用先进的技术和独特的模型架构,DeepSeek在保持高性能的同时,显著降低了推理和训练的成本。

  • 性能‌:DeepSeek在性能上表现出色。它使用强化学习技术训练,推理过程中包含大量反思与验证,能够处理更加复杂的数据和任务。在一些benchmark测试中,其性能与OpenAI的模型相当,但推理成本远低于同类产品。

  • 功能‌:DeepSeek擅长处理数学、编程和复杂逻辑推理等任务。它的推理能力源于深度思考特性,推理长度与准确率呈正相关。此外,DeepSeek还支持多模态信息处理,能够应对更加多样化的应用场景。

  • 应用领域‌:DeepSeek在多个领域展现出巨大的应用潜力。无论是在医疗、教育、交通等传统领域,还是在智能制造、智慧城市等新兴领域,DeepSeek都有望发挥重要作用。

综上所述,AI是一个广泛的概念,涵盖了人工智能领域的所有技术和应用。而DeepSeek则是AI领域中的一个具体产品,它在成本、性能、功能和应用领域等方面都有着独特的特点和优势。两者之间的关系可以理解为:DeepSeek是AI领域中的一个具体实现和优秀代表。

如何使用Java集成DeepSeek:

DeepSeek 作为一款卓越的国产 AI 模型,越来越多的公司考虑在自己的应用中集成。对于 Java 应用来说,我们可以借助 Spring AI 集成 DeepSeek,非常简单方便!

1.1、DeepSeek开放平台创建API KEY

  • 进入DeepSeek官网 DeepSeek | 深度求索 点击右上角的 API开放平台

 需要登陆注册。

注意事项:

​​​​​

  • Spring AI 的 openai starter 本质上是通过 RestTemplate 发请求 

 2、创建一个SpringBoot工程

 引入依赖:

pom文件: 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.8</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.example</groupId><artifactId>springai-deepseek</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><spring-ai.version>1.0.0-M5</spring-ai.version></properties><dependencies><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

application.properties文件:

spring.application.name=springaispring.ai.openai.api-key=sk-c36eb1189bdb4d39b12636fdfd553843spring.ai.openai.base-url=https://api.deepseek.com
spring.ai.openai.chat.options.model=deepseek-chat
spring.ai.openai.chat.options.temperature=0.7
  • temperature参数用于控制生成文本的多样性。

    temperature参数的取值范围因不同的AI平台而有所不同:

    • 温度参数区间在[0-1]的AI平台‌:如Claude、Cohere、智谱清言、文心一言、Kimi、豆包、百川、Mistral、MiniMax等‌。

    • 温度参数区间在[0-2]的AI平台‌:如OpenAI、DeepSeek、Gemini、通义千问、腾讯混元、零一万物、讯飞星火、微软Phi、Grok、Llama、Nova等‌。

    temperature参数的作用和影响

    1. 影响生成文本的随机性‌:

      • 低temperature(接近0)‌:生成结果更确定、更可预测,适用于需要高确定性的任务,如代码生成、数学计算或正式写作。可能会导致回答较为死板,缺乏创造性‌。

      • 高temperature(接近2)‌:生成结果更加多样,充满创造性,适用于诗歌、故事创作或聊天机器人等任务。可能会导致结果不够精准,甚至出现胡言乱语‌。

    2. 影响词汇选择的多样性‌:

      • 低temperature‌:更倾向于选择概率最高的词,生成的文本较为单一‌。

      • 高temperature‌:更加愿意探索概率较低的词汇,使文本更有变化,但可能降低连贯性‌。

    实际应用中的调整建议

    • 代码生成‌:temperature设置为0.2-0.5,保持确定性‌。

    • 客服回复‌:temperature设置为0.3-0.6,平衡专业与自然‌。

    • 创意写作‌:temperature设置为0.7-1.0,放飞想象力‌。

    • 诗歌生成‌:temperature设置为0.8-1.2,追求意外之喜。

 创建Controller

@RestController
class DeepSeekController {@Autowiredprivate OpenAiChatModel chatModel;@GetMapping("/ai/generate")public String generate(@RequestParam(value = "message", defaultValue = "hello")String message) {String response = this.chatModel.call(message);System.out.println("response : "+response);return response;}}

测试: 

 

 

 

 

 

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

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

相关文章

Flask中的render_template与make_response:生动解析与深度对比

文章目录 Flask中的render_template与make_response&#xff1a;生动解析与深度对比一、&#x1f31f; 核心概念速览二、&#xfffd; render_template - 网页内容的主厨特点与内部机制适用场景高级用法示例 三、&#x1f381; make_response - 响应的包装专家核心功能解析适用…

WordPress目录说明

在WordPress建站过程中&#xff0c;理解服务器目录结构是非常重要的。以下是一个基础的WordPress服务器目录指南&#xff1a; /wp-admin/ &#xff1a;这个目录包含了WordPress网站的所有管理功能&#xff0c;包括用于处理网站后台的所有PHP文件。 /wp-includes/ &#xff1a;…

HTTP面试题——缓存技术

目录 HTTP缓存技术有哪些&#xff1f; 什么是强制缓存&#xff1f; 什么是协商缓存&#xff1f; HTTP缓存技术有哪些&#xff1f; 对于一些具有重复性的HTTP请求&#xff0c;比如每次请求得到的数据都是一样的&#xff0c;我们可以把这对 请求-响应的数据都缓存在本地&#x…

virtual box 不能分配 USB设备 IFX DAS JDS TriBoard TC2X5 V2.0 [0700] 到虚拟电脑 win10

VirtualBox: Failed to attach the USB device to the virtual machine – Bytefreaks.net ISSUE&#xff1a; virtual box 不能分配 USB设备 IFX DAS JDS TriBoard TC2X5 V2.0 [0700] 到虚拟电脑 win10. USB device IFX DAS JDS TriBoard TC2X5 V2.0 with UUID {91680aeb-e1…

Deepoc大模型重构核工业智能基座:混合增强架构与安全增强决策技术​

面向复杂系统的高可靠AI赋能体系构建 Deepoc大模型通过多维度技术突破&#xff0c;显著提升核工业知识处理与决策可靠性。经核能行业验证&#xff0c;其生成内容可验证性提升68%&#xff0c;关键参数失真率<0.3%&#xff0c;形成覆盖核能全链条的定制化方案&#xff0c;使企…

第12章:冰箱里的CT扫描仪——计算机视觉如何洞穿食材的“生命密码“

第11章:冰箱里的CT扫描仪——计算机视觉如何成为食材健康的"超级诊断官" “糟了!冰箱里草莓长出了白色绒毛,鸡胸肉渗出了可疑的粉红色液体!” 这揭示了厨房生存的更基本挑战:如何像经验丰富的主厨一样,一眼洞穿食材的健康密码? 本章将揭示计算机视觉技术如何赋…

虚幻基础:窗口——重定向

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 重定向&#xff1a;给骨架添加兼容骨架。使得不同模型间复用动画资源 重定向&#xff1a;给骨架添加兼容骨架。使得不同模型间复用动画资源

CSS 逐帧动画

CSS 逐帧动画实现指南 逐帧动画(frame-by-frame animation)是一种通过快速连续显示一系列静态图像来创造运动效果的技术。以下是使用CSS实现逐帧动画的几种方法。 1. 使用 steps() 计时函数 这是实现逐帧动画最常用的方法&#xff0c;通过animation-timing-function的steps(…

高版本IDEA如何开发低版本jdk项目

问题描述 我这个人比较喜欢新的东西&#xff0c;比如使用idea的时候&#xff0c;我就喜欢最新版本。 但是有个问题&#xff0c;最新版本的idea好像不支持jdk1.6&#xff0c;导致我无法去用新版本idea开发项目。 直到有一天&#xff0c;idea给了我一个提示如下&#xff0c;之…

Java设计模式->责任链模式的介绍

目录 1、责任链模式概念 1.1、定义介绍 1.2、流程图 1.3、优缺点 2、实现 3、应用场景 3.1、Springmvc流程 3.2、mybatis的执行流程 3.3、Spring的过滤器和拦截器 3.4、sentinel限流熔断 3.5、aop的加载和使用 4、举例 前言 是一种 行为型设计模式&#xff0c;它通…

【Bluedroid】蓝牙启动之 btm_acl_device_down 流程源码解析

本文详细分析Android蓝牙协议栈在设备故障时的处理流程。当蓝牙设备发生硬件故障或系统异常时,协议栈通过btm_acl_device_down触发多层次的资源清理和状态重置,包括ACL连接终止、L2CAP通道释放、SCO连接清理、BLE拓扑更新、设备数据库重置等关键操作,确保系统安全恢复。 一、…

随记:WebMvcConfigurationSupport 和WebMvcConfigurer 的区别

WebMvcConfigurationSupport &#xff08;抽象类&#xff09; 他是一个完整的 MVC 配置基类&#xff0c;他会禁用所有自动配置。默认静态资源映射也没有了。默认消息转换器&#xff08;json、xml&#xff09;也没有了。错误处理页默认的error也没有了。 WebMvcConfigurer &am…

npm run dev报错

1. 引言 1.1 什么是npm run dev npm run dev 是一个在 Node.js 项目中常用的命令&#xff0c;它允许开发者运行一个预定义的脚本&#xff0c;通常用于启动开发服务器或者执行开发环境的构建任务。这个命令是通过 package.json 文件中的 scripts 部分定义的&#xff0c;例如&…

Kotlin环境搭建与基础语法入门

目标&#xff1a;完成开发环境配置&#xff0c;编写第一个Kotlin程序&#xff0c;理解变量、数据类型和基本输出。 1. 环境搭建 步骤1&#xff1a;安装JDK 下载并安装 JDK 17&#xff08;Kotlin兼容性最佳版本&#xff09;。 配置环境变量 JAVA_HOME&#xff0c;并在终端验证…

CLion开发Qt桌面程序_git的简单使用_小团体

OS&#xff1a;Windows Qt&#xff1a;6.8.1&#xff08;6.x&#xff09; Eg&#xff1a;学生信息管理系统 前言 Qt Creator编写代码不是太方便&#xff0c;使用CLion编写代码或许是个不错的主意&#xff0c;CLion在此处主要是用于后端和测试的开发&#xff0c;界面方面还是…

C语言专题:8.函数指针(Function Pointer)

​ 在 C 语言中&#xff0c;函数也是一种“对象”&#xff0c;它在内存中有地址。因此可以定义指向函数的指针&#xff0c;用于动态调用、回调处理、构建函数表等。 掌握函数指针是理解 C 语言“底层抽象”与“模块化编程”的关键。 一、函数指针的基本概念 ​ 函数指针是一个变…

快速傅里叶变换(FFT)是什么?

快速傅里叶变换(FFT)是什么&#xff1f; 快速傅里叶变换&#xff08;FFT&#xff09; 本质上是一种极其高效的算法&#xff0c;用来计算**离散傅里叶变换&#xff08;DFT&#xff09;**及其逆变换。它是数字信号处理、科学计算和工程应用中最重要的算法之一。 要理解 FFT&…

EEG分类 - Theta 频带 power

在EEG&#xff08;脑电图&#xff09;信号处理的背景下&#xff0c;theta波段功率&#xff08;Theta Band Power&#xff09;是一个重要的特征&#xff0c;广泛应用于认知、神经科学和临床监测等领域。接下来&#xff0c;我将详细介绍theta波段功率的定义、特性、计算方法以及在…

苍穹外卖day3--公共字段填充+新增菜品

1.公共字段填充 1.1 问题分析 在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段&#xff0c;在编辑员工或者编辑菜品分类时需要设置修改时间、修改人等字段。这些字段属于公共字段&#xff0c;也就是也就是在我们的系统中很多表中都会有这些字段…

每次选择都是成本

概述 我们每个人都在做选择&#xff0c;而且无时无刻不在做选择。 有的人有的选&#xff0c;而有的人却没得选。 因此从侧面来说&#xff0c;有的选反而更是一种幸福。 我们学习的目的就是为了让我们自己在未来能有更好地选择&#xff0c;也可以底气十足地选择不去做什么&a…