当前位置: 首页 > news >正文

01:SpringAI

一:SpringAI基础理论

Spring AI 是 Spring 官方在 2024 年推出的 AI 开发框架,旨在将 Spring 的设计原则——可移植性、模块化设计和 POJO 编程模型——应用到 AI 工程领域。它不是一个简单的 "AI SDK",而是一套完整的 AI 应用开发框架,让 Java 开发者可以用熟悉的 Spring Boot 风格来构建 AI 应用。

该项目的创立基于一个信念:下一波生成式 AI 应用程序将普及到多种编程语言,而不仅限于 Python 开发者。它借鉴了 LangChain 和 LlamaIndex 等 Python 项目的灵感,但并非直接移植。

核心定位:将企业的"数据"和"API"与"AI 模型"连接起来。

1.1:核心设计理念

Spring AI 的设计哲学完全传承自 Spring 框架:

理念说明
依赖注入通过 DI 管理 AI 组件,实现松耦合
POJO 编程使用普通 Java 对象进行开发,降低复杂度
模块化架构各功能模块独立,可按需引入
可配置性通过配置文件灵活切换实现
非侵入式集成无需修改现有业务代码即可接入 AI 能力
约定优于配置遵循 Spring Boot 的自动配置哲学

1.2:核心特性

1.2.1:全栈多供应商模型适配

深度对接主流 AI 服务商:

  • 聊天模型:OpenAI、Anthropic (Claude)、通义千问、DeepSeek、Ollama 等

  • 嵌入模型:文本向量化、语义搜索

  • 多模态模型:图像识别、视频理解、音频转录

  • 语音交互:音频转录、文本转语音

所有模型统一接口封装,切换模型无需修改业务代码。


1.2.2:标准化抽象 API

提供ChatClientEmbeddingModelImageModel等标准化接口,支持:

  • 同步和流式 API 调用

  • 结构化输出:将 AI 非结构化响应自动映射到 Java POJO

  • 模型特定高级功能(如 Function Calling)


1.2.3:原生集成 Spring Boot

  • 通过 Starter 依赖与自动装配实现一键集成

  • Spring Initializr 可快速生成项目骨架

  • 支持虚拟线程、GraalVM 原生镜像

  • 通过 Micrometer 实现可观测性

  • 集成 Spring Boot DevTools、Docker Compose 和 Testcontainers


1.2.4:向量数据库与 RAG 支持

跨向量存储提供商提供便携式 API,支持:

  • Apache Cassandra、Milvus、PGVector、Redis、Elasticsearch、Chroma 等

  • 类 SQL 元数据过滤器 API

  • 检索增强生成(RAG)


1.2.5:工具/函数调用

允许 AI 模型请求执行客户端工具和函数,按需访问实时信息并采取行动。支持通过@Tool注解或java.util.Function对象定义工具。

1.2.6:ETL 框架与可观测性

  • 数据工程的文档摄取 ETL 框架

  • AI 相关操作的可观测性支持

  • AI 模型评估工具,帮助防止幻觉响应


1.2.7:Advisors API

封装常见的生成式 AI 模式,转换发送给和来自 LLM 的数据,实现"针对文档的问答"等常见用例。


1.3:核心概念与架构

1.3.1:核心概念

概念说明
Model(模型)处理和生成信息的算法,Spring AI 支持语言、图像、音频的输入输出
Prompt(提示词)引导 AI 模型产生特定输出的语言输入,包含 system/user 等角色
Prompt Template(提示模板)使用 StringTemplate 创建和管理提示,支持占位符填充
Embedding(嵌入)文本/图像/视频的向量表示,用于捕捉语义关系
Token(令牌)AI 模型工作的基本单元,约 0.75 个英文单词

1.3.2:架构分层

Spring AI 的架构可分为三层

  1. 接口层:通过AIClient等接口定义 AI 服务的标准调用方式,支持同步/异步

  2. 核心引擎层:模型管理与动态路由,支持模型版本管理和 A/B 测试

  3. 基础设施层:通过自动配置机制支持自定义序列化器、请求拦截器、健康检查等扩展

核心模块包括:

  • Core Abstractions:统一的 AI 任务抽象

  • Extensions:通过 Spring 自动配置集成企业级组件

  • Ecosystem:与 Spring Cloud、Spring Data 等无缝融合


1.4:快速上手

1.4.1:添加依赖

pom.xml中添加 Spring Milestones 仓库和 BOM:

<repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> <properties> <spring-ai.version>1.1.2</spring-ai.version> </properties> <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> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> </dependencies>

1.4.2:配置 API Key

application.yml中配置:

spring: ai: openai: api-key: ${OPENAI_API_KEY} chat: options: model: gpt-4o

国内开发者可使用阿里云通义千问。

1.4.3:编写调用代码

通过ChatClient即可完成 AI 调用。


1.5:适用场景

场景说明
智能客服传统企业应用快速接入智能问答
RAG 知识库从零搭建基于文档的问答系统
内容生成代码生成、文案创作、文本摘要
语义搜索基于文本嵌入的相似性检索
微服务 AI 模块独立部署 AI 服务模块
AI Agent 开发构建具备工具调用能力的智能体

1.6:总结

Spring AI 的核心价值在于:

  1. 统一抽象:一套接口覆盖所有主流 AI 模型,切换零成本

  2. 降低门槛:Java 开发者无需 AI 底层知识即可集成 AI 能力

  3. 企业级就绪:继承 Spring Boot 的生产级特性,开箱即用

  4. 完整生态:覆盖模型调用、向量存储、RAG、Agent 等全流程


官方资源

  • 官网:https://spring.io/projects/spring-ai[reference:64]

  • 官方文档:https://docs.spring.io/spring-ai/reference/index.html[reference:65]

  • 中文文档:https://spring-ai.springdoc.cn/docs/1.0.0/index.html[reference:66]


二:SpringAI特性介绍

Spring AI 是一个面向人工智能工程的应用框架。解决了 AI 集成的基本挑战:将企业数据和API与AI 模型连接起来。


2.1:特性

2.1.1:提示词工厂

可以说是大模型应用中最简单也是最核心的一个技术。他是我们更大模型交互的媒介,提示词给的好大模型才能按你想要的方式响应。


2.1.2:对话拦截advisors

面向切面的思想对对模型对话和响应进行增强。


2.1.3:对话记忆

@Autowired ChatMemoryRepository chatMemoryRepository;

通过一个bean组件就可以让大模型拥有对话记忆功能,可谓是做到了开箱即用


2.1.4:tools

让大模型可以跟企业业务API进行互联 ,这一块实现起来也是非常的优雅

class DateTimeTools { @Tool(description = "Get the current date and time in the user's timezone") String getCurrentDateTime() { return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString(); } }

2.1.5:RAG技术下的 ETL

让大模型可以跟企业业务数据进行互联(包括读取文件、分隔文件、向量化) 向量数据库支持 目前支持20+种向量数据库的集成。


2.1.6:MCP

让tools外部化,形成公共工具让外部开箱即用。 原来MCP协议的JAVA SDK就是spring ai团队提供的 提供了MCP 客户端、服务端、以及MCP认证授权方案 ,还有目前正在孵化的Spring MCP Agent 开源项目:


2.1.7:模型的评估

可以测试大模型的幻觉反应


2.1.8:可观察性

它把AI运行时的大量关键指标暴露出来, 可以提供Spring Boot actuctor进行观测


2.1.9:agent应用

springai 提供了5种agent模式的示例

  • Evaluator Optimizer – The model analyzes its own responses and refines them through a structured process of self-evaluation.

  • Routing – This pattern enables intelligent routing of inputs to specialized handlers based on classification of the user request and context.
  • Orchestrator Workers – This pattern is a flexible approach for handling complex tasks that require dynamic task decomposition and specialized processing
  • Chaining – The pattern decomposes complex tasks into a sequence of steps, where each LLM call processes the output of the previous one.
  • Parallelization – The pattern is useful for scenarios requiring parallel execution of LLM calls with automated output aggregation.

学完这5种你会对对模型下的agent应用有一个完整认识


2.2:langchain4j vs springAI

生态

不依赖Spring,需要单独集成Spring

Spring官方,和Spring无缝集成

诞生

更早,中国团队,受 LangChain 启发

稍晚,但是明显后来居上

jdk

v0.35.0 前的版本支持jdk8 ,后支持jdk17

全版本jdk17

功能

没有mcp server, 官方建议使用quarkus-mcp-server

早期落后langchain4j, 现在功能全面,并且生态活跃,开源贡献者众多

易用性

尚可,中文文档

易用,api优雅

最终

不需要spring选择!

无脑选!


三:SpringAi快速使用-DeepSeek

代码git地址:


3.1:父工程-MyAi

3.1.1:pom

<?xml version="1.0" encoding="UTF-8"?> <!-- Maven项目对象模型(POM)根元素 --> <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"> <!-- POM模型版本 --> <modelVersion>4.0.0</modelVersion> <!-- 父项目配置:继承Spring Boot的默认配置 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.5.3</version> <relativePath/> </parent> <!-- 项目组织标识符 --> <groupId>com.zgs</groupId> <!-- 项目名称 --> <artifactId>MyAi</artifactId> <!-- 项目版本 --> <version>1.0-SNAPSHOT</version> <!-- 项目名称显示名 --> <name>MyAi</name> <!-- 项目描述 --> <description>MyAi</description> <!-- 打包方式:pom表示这是一个聚合项目或父项目 --> <packaging>pom</packaging> <!-- 子模块配置 --> <modules> <module>ai-quick-start</module> </modules> <!-- 项目属性配置 --> <properties> <!-- Java编译器源码版本 --> <maven.compiler.source>17</maven.compiler.source> <!-- Java编译器目标版本 --> <maven.compiler.target>17</maven.compiler.target> <!-- 项目构建编码格式 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Spring AI版本号 --> <spring-ai.version>1.0.0</spring-ai.version> </properties> <!-- 项目依赖配置 --> <dependencies> <!-- Spring Boot Web starter:提供Web开发功能(包含Tomcat、Spring MVC等) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot Test starter:提供测试功能(JUnit、Mockito等) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- 依赖管理:统一管理依赖版本,不直接引入依赖 --> <dependencyManagement> <dependencies> <!-- Spring AI BOM:统一管理的AI相关依赖版本 --> <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> <!-- 构建配置 --> <build> <!-- 插件配置 --> <plugins> <!-- Spring Boot Maven插件:支持打包和运行Spring Boot应用 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

3.2:子工程-ai-quick-start

3.2.1: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>com.zgs</groupId> <artifactId>MyAi</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>ai-quick-start</artifactId> <version>1.0-SNAPSHOT</version> <name>ai-quick-start</name> <description>ai-quick-start</description> <properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-ai.version>1.1.0</spring-ai.version> </properties> <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> <dependencies> <!--接入deepseek--> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-deepseek</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

3.2.2:application.yml

spring: application: name: ai-quick-start ai: deepseek: api-key: ${DEEPSEEK_API_KEY} chat: options: model: deepseek-v4-flash


3.2.3:DeepSeekTest

<artifactId>spring-ai-starter-model-deepseek</artifactId>会为你增加自动配置类, 其中DeepSeekChatModel这个就是专门负责智能对话的。

package com.zgs.deepseek; import org.junit.jupiter.api.Test; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.deepseek.DeepSeekAssistantMessage; import org.springframework.ai.deepseek.DeepSeekChatModel; import org.springframework.ai.deepseek.DeepSeekChatOptions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import reactor.core.publisher.Flux; /** * @description: deepseek测试 * @author: zgs * @date: 2026/6/17 10:36 */ @SpringBootTest public class DeepSeekTest { /** * <artifactId>spring-ai-starter-model-deepseek</artifactId> * 会为你增加自动配置类, * 其中DeepSeekChatModel这个就是专门负责智能对话的。 * * @author: zgs * @date: 2026/6/17 11:22 */ @Test public void testDeepSeek(@Autowired DeepSeekChatModel chatModel) { String call = chatModel.call("你好 你是谁"); System.out.println(call); } /** * 流式演示 * * @author: zgs * @date: 2026/6/17 11:22 */ @Test public void testDeepSeekStream(@Autowired DeepSeekChatModel chatModel) { Flux<String> stream = chatModel.stream("你好 你是谁"); stream.toIterable().forEach(System.out::println); } /** * 其它参数演示 * * @author: zgs * @date: 2026/6/17 11:22 */ @Test public void testDeepSeekParams(@Autowired DeepSeekChatModel chatModel) { DeepSeekChatOptions build = DeepSeekChatOptions.builder() .model("deepseek-v4-pro") .temperature(0.7) // .maxTokens(1024) .build(); Prompt prompt = new Prompt("给我讲一个笑话,请基于程序员思维讲一个笑话,不要讲其他的", build); ChatResponse response = chatModel.call(prompt); System.out.println(response.getResult().getOutput().getText()); } /** * 思考过程打印 * * @author: zgs * @date: 2026/6/17 11:22 */ @Test public void testDeepSeekThink(@Autowired DeepSeekChatModel chatModel) { DeepSeekChatOptions build = DeepSeekChatOptions.builder() .model("deepseek-v4-pro") .temperature(0.7) .maxTokens(1024) .build(); Prompt prompt = new Prompt("给我讲一个笑话,请基于程序员思维讲一个笑话,不要讲其他的", build); ChatResponse call = chatModel.call(prompt); DeepSeekAssistantMessage assistantMessage = (DeepSeekAssistantMessage) call.getResult().getOutput(); System.out.println(assistantMessage.getReasoningContent()); System.out.println("-----------------------------------------"); System.out.println(assistantMessage.getText()); } }

3.3:参数讲解

3.3.1:temperatur

0-2 浮点数值

数值越高更有创造性 热情

数值越低 保守

也可以通过提示词降低他的主观臆想:

  • 只引用可靠来源中的信息,不做任何假设或扩展描述。
  • 请只基于已知事实回答,不要主观臆想或添加额外内容。
  • 请简明、客观地给出答案,不要进行修饰或补充未经请求的信息。

建议

temperature 范围

建议业务场景

输出风格

说明/应用举例

0.0 ~ 0.2

严谨问答、代码补全、数学答题

严格、确定、标准

法律/金融答题、接口返回模板、考试答卷等

0.3 ~ 0.6

聊天机器人、日常摘要、辅助写作

稍有变化、较稳妥

公众号摘要、普通对话、邮件生成等

0.7 ~ 1.0

创作内容、广告文案、标题生成

丰富、有创意、灵活

诗歌、短文案、趣味对话、产品描述等

1.1 ~ 1.5

脑洞风格、头脑风暴、灵感碰撞场景

大开脑洞、变化极强

故事创作、异想天开的推荐语、多样化内容


说明:

  • 温度越低,输出越收敛和中规中矩;
  • 温度越高,输出越多变、富有惊喜但有风险;
  • 实战用法一般建议选0.5~0.8作为日常生产起点,需要根据业务不断测试调整。

3.3.2:maxTokens

默认低 token

maxTokens:限制AI模型生成的最大token数(近似理解为字数上限)。

  • 需要简洁回复、打分、列表、短摘要等,建议小值(如10~50)。
  • 防止用户跑长对话导致无关内容或花费过多token费用。
  • 如果遇到生成内容经常被截断,可以适当配置更大maxTokens。

3.3.3:stop

截断你不想输出的内容 比如:

spring: ai: deepseek: api-key: ${DEEP_SEEK_KEY} chat: options: model: deepseek-chat max-tokens: 20 stop: - "\n" #只想一行 - "。" #只想一句话 - "政治" #敏感词 - "最后最总结一下" #这种AI惯用的模板词, 减少AI词汇, 让文章更拟人

3.4:原理


3.4.1:入口:ChatModel.call(String message)默认方法

default String call(String message) { Prompt prompt = new Prompt(new UserMessage(message)); Generation generation = call(prompt).getResult(); return (generation != null) ? generation.getOutput().getText() : ""; }

你调用的chatModel.call("你好")并非DeepSeekChatModel直接实现,而是ChatModel接口提供的一个默认方法。这个方法充当了便捷入口的角色。

它的核心作用是将字符串参数转换为框架内部的标准对象

  • "你好"封装成一个UserMessage对象。

  • 再将UserMessage封装进一个Prompt对象。

Prompt是 Spring AI 的核心数据结构,可以包含多个Message(如系统消息、用户消息、AI消息等),用于构建完整的对话上下文。完成封装后,它会调用另一个重载方法call(Prompt)


3.4.2:核心:DeepSeekChatModel.internalCall()

public ChatResponse internalCall(Prompt prompt, ChatResponse previousChatResponse) { // a ChatCompletionRequest request = createRequest(prompt, false); //..省略 ResponseEntity<ChatCompletion> completionEntity = this.retryTemplate // b .execute(ctx -> this.deepSeekApi.chatCompletionEntity(request)); var chatCompletion = completionEntity.getBody(); //..省略 ChatResponse chatResponse = new ChatResponse(generations, from(completionEntity.getBody(), accumulatedUsage)); observationContext.setResponse(chatResponse); return chatResponse; //.. 省略 return response; }

框架会调用到DeepSeekChatModel类中对call(Prompt)方法的实现,其核心逻辑在internalCall方法中。这是整个流程的枢纽,主要完成三件事:

  • 步骤a:构建请求 (createRequest)
    此步骤是一个适配器模式的体现。它将统一的Prompt对象,转换为 DeepSeek API 所能识别的ChatCompletionRequest对象。转换后的请求体通常包含:

    • model: 指定使用的模型名称。

    • messages: 将Prompt中的Message列表转换为 API 要求的格式(如{"role": "user", "content": "你好"})。

    • 参数: 如temperaturemax_tokens等生成参数。


  • 步骤b:发起远程调用 (retryTemplate.execute)
    DeepSeekChatModel内置了RetryTemplate,用于安全可靠地发起 HTTP 请求。当网络抖动或服务端临时不可用时,它会自动重试。
    真正执行 HTTP 请求的是DeepSeekApi类,它封装了 DeepSeek 的 REST API。

    • 请求时会通过HTTP Header携带 API Key 进行认证。

    • https://api.deepseek.com/chat/completions等端点发送一个POST请求,请求体是步骤a构建的 JSON。


  • 步骤c:封装响应
    收到 DeepSeek API 返回的 HTTP 响应后(一个包含模型输出等信息的 JSON 对象),此步骤会解析 JSON,并将数据重新封装成 Spring AI 的标准对象ChatResponseChatResponse中包含一个或多个Generation对象,每个Generation都包含了模型的输出文本。


3.4.3:返回:结果提取

最后,控制权回到最外层的ChatModel.call(String)默认方法。它会从返回的ChatResponse中提取第一个Generation的文本内容,并将其作为String返回给你。至此,一次完整的 AI 调用就结束了。


3.4.4:总结

从源码角度看,DeepSeekChatModel.call("你好")的执行路径清晰地展示了 Spring AI 的设计哲学:

  1. 统一抽象:通过ChatModel接口和Prompt/ChatResponse等对象,为开发者提供一致的编程模型。

  2. 适配与转换:在核心实现层 (internalCall) 完成从通用模型到特定厂商 API 的适配与数据转换。

  3. 生产就绪:内置了重试 (RetryTemplate)、可观测性 (ObservationContext)等企业级特性。


四:百炼

代码git地址:

阿里自己的团队维护spring-ai-alibaba. 但是也必须依赖spring-ai 。 好处是扩展度更高,坏处是必须是springai先出来, spring-ai-alibaba.延迟几天出来。

如果需要接入阿里的百炼平台, 就必须用该组件


4.1:SpringAI中接入百炼

4.1.1:申请api-key

在调用前,您需要开通模型服务并获取API Key,再配置API Key到环境变量。

获取APIKEY

写入到环境变量


4.1.2:父工程-POM

<?xml version="1.0" encoding="UTF-8"?> <!-- Maven项目对象模型(POM)根元素 --> <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"> <!-- POM模型版本 --> <modelVersion>4.0.0</modelVersion> <!-- 父项目配置:继承Spring Boot的默认配置 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.5.3</version> <relativePath/> </parent> <!-- 项目组织标识符 --> <groupId>com.zgs</groupId> <!-- 项目名称 --> <artifactId>MyAi</artifactId> <!-- 项目版本 --> <version>1.0-SNAPSHOT</version> <!-- 项目名称显示名 --> <name>MyAi</name> <!-- 项目描述 --> <description>MyAi</description> <!-- 打包方式:pom表示这是一个聚合项目或父项目 --> <packaging>pom</packaging> <!-- 子模块配置 --> <modules> <module>ai-quick-start</module> </modules> <!-- 项目属性配置 --> <properties> <!-- Java编译器源码版本 --> <maven.compiler.source>17</maven.compiler.source> <!-- Java编译器目标版本 --> <maven.compiler.target>17</maven.compiler.target> <!-- 项目构建编码格式 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Spring AI版本号 --> <spring-ai.version>1.0.0</spring-ai.version> <!-- 阿里云AI BOM 版本号 --> <spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version> </properties> <!-- 项目依赖配置 --> <dependencies> <!-- Spring Boot Web starter:提供Web开发功能(包含Tomcat、Spring MVC等) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot Test starter:提供测试功能(JUnit、Mockito等) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- 依赖管理:统一管理依赖版本,不直接引入依赖 --> <dependencyManagement> <dependencies> <!-- Spring AI BOM:统一管理的AI相关依赖版本 --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>${spring-ai.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 阿里云AI BOM:统一管理的阿里云AI相关依赖版本 --> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-bom</artifactId> <version>${spring-ai-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 构建配置 --> <build> <!-- 插件配置 --> <plugins> <!-- Spring Boot Maven插件:支持打包和运行Spring Boot应用 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>


4.1.3:子工程-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>com.zgs</groupId> <artifactId>MyAi</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>ai-quick-start</artifactId> <version>1.0-SNAPSHOT</version> <name>ai-quick-start</name> <description>ai-quick-start</description> <properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-ai.version>1.1.0</spring-ai.version> </properties> <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> <dependencies> <!--接入deepseek--> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-deepseek</artifactId> </dependency> <!--接入dashscope--> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter-dashscope</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>


4.1.4:配置YML

spring: application: name: ai-quick-start profiles: active: local ai: # deepseek deepseek: api-key: ${DEEPSEEK_API_KEY} chat: options: model: deepseek-v4-flash # 阿里qWen dashscope: api-key: ${ALI_API_KEY} # chat: # options: # model: qwen-plus

4.1.5:简单测试示例

/** * @description: qwen测试 * @author: zgs * @date: 2026/6/17 17:31 */ @SpringBootTest public class QWenTest { @Test public void testQWen(@Autowired DashScopeChatModel chatModel) { DashScopeChatOptions options = DashScopeChatOptions.builder() .withModel("qwen3.6-plus") .build(); Prompt prompt = new Prompt("你好 你是谁", options); String message = chatModel.call(prompt).getResult().getOutput().getText(); System.out.println(message); } }

4.2:文生图

4.3:文生语音text2audio

4.4:语音翻译audio2text

4.5:多模态

4.6:文生视频


四:Ollama

http://www.jsqmd.com/news/1034383/

相关文章:

  • 时间序列五大基本性质:趋势、季节性、平稳性、自相关与异常性的工程化诊断框架
  • 如何快速解锁加密音乐文件:3步实现跨平台音乐自由播放
  • 郑州市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989
  • 【招聘】创业公司引力场:用F=ma重新理解你的人才竞争力
  • AI工程的本质不是调参,而是系统思维重构
  • 5个实战技巧:深度解析SecHex-Spoofy系统标识伪装工具的应用场景
  • 深度解析 Kotlin 运算符重载:提升 Android 开发效率的核心技巧
  • 分析抛丸厂商哪家好,晟丰电气优势突出 - mypinpai
  • 深入探索nf-core/sarek基因组变异检测架构:高性能实战指南
  • wifi是怎么连接的---四次握手(四)
  • 中山市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989
  • 腾讯智绘App:移动端AIGC轻量化实践与中文提示词工程
  • OpenGL帧缓冲与后处理全链路实战|全网独家复现FBO构建、多通道渲染、滤镜优化,助力游戏特效、AR画面、图像美化高效落地
  • 中卫市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989
  • 机器学习实验追踪:构建可复现、可交付的模型研发流程
  • SH9多尺度实验检验矩阵设计:桌面凝聚态模拟、地面精密测量和高能天体观测三个尺度的立体化检验矩阵(世毫九实验室原创研究)
  • ArcGIS实战:从数据到地图,掌握克里金插值核心流程
  • Android应用安全:Play Integrity API检测器构建与设备完整性验证实战
  • 机器学习模型生产化落地:从可运行到可运维的四层设计
  • 构建可信模型评估数学:从业务损益出发的指标设计方法
  • 为什么你用 AI 做的网站总有一股 AI 味?教你用 FlowyAIPC 快速生成高质量官网
  • WSL 幽灵入口清理记录与技术解析
  • 过拟合诊断与防治:从数据根因到工业级七层防御体系
  • AI寻聘方案评估:人才地图自动绘制、推荐理由及无简历匹配
  • 2026龙井茶场叶记茶铺十大口碑榜单,茶友精选攻略不踩雷 - mypinpai
  • 攀枝花市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989
  • 2026 安徽蚌埠全域彩钢瓦修缮四大正规企业权威评测|皖北冻融高温厂房金属屋面除锈防水完整榜单 + 本地专属避坑指南 - 本地便民网
  • 随州市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989
  • 2026 安徽淮北全市域彩钢瓦翻新防水修缮公司 TOP4 权威测评|4 家企业优劣对比 + 完整避坑指南 - 本地便民网
  • 黄石市黄金回收+白银回收+铂金回收+彩金回推荐收门店 本地靠谱店铺指南及地联系方式址和 - 大熊猫898989