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参数的作用和影响
-
影响生成文本的随机性:
-
低temperature(接近0):生成结果更确定、更可预测,适用于需要高确定性的任务,如代码生成、数学计算或正式写作。可能会导致回答较为死板,缺乏创造性。
-
高temperature(接近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;}}
测试: