Spring AI 1.0.0-SNAPSHOT 在构件 ID、依赖管理和自动配置方面引入了几项重要变更。
本文将带你了解这些变更并提供项目更新指南。
最显著的变更是 Spring AI Starter 构件的命名模式:
模型 starter:spring-ai-{model}-spring-boot-starter → spring-ai-starter-model-{model} 向量存储 starter:spring-ai-{store}-store-spring-boot-starter → spring-ai-starter-vector-store-{store} MCP starter:spring-ai-mcp-{type}-spring-boot-starter → spring-ai-starter-mcp-{type} 此外,你需要添加快照仓库并更新 Dependency Management (依赖管理)配置。
有两种方式可以将项目更新到 Spring AI 1.0.0-SNAPSHOT:使用 AI 工具自动更新 或 手动更新。自动方式利用 Claude Code 快速转换你的项目,而手动方式为那些喜欢直接进行更改的人提供了逐步说明。
使用 Claude Code 自动更新 对于偏好自动化方式的用户,你可以使用 Claude Code CLI 工具,通过提供的提示自动将项目升级到 1.0.0-SNAPSHOT。这种方法可以在升级多个项目或复杂代码库时节省时间并减少错误。更多详情,请参阅升级说明中的 使用 AI 自动升级 部分。
这里仅以屏幕截图的形式展示 Claude Code CLI 工具将执行的步骤。
更新 BOM 版本。
添加仓库。
更新 starter。
全部完成!
手动更新 添加快照仓库 要使用 1.0.0-SNAPSHOT 版本,你需要在构建文件(pom.xml)中添加相应的快照仓库。其中,Central Sonatype Snapshots 仓库(https://central.
本文将带你了解如何在 Spring Boot 中使用 spring-ai 无缝接入 DeepSeek 和通义千问来构建自己的 AI 应用。
Spring & JDK 版本:
springboot 3.4.3 jdk17 1、maven依赖 <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> 2、application.yaml 配置 # DeepSeek 配置,完全兼容openai配置 # spring: # ai: # openai: # base-url: https://api.deepseek.com # DeepSeek的OpenAI式端点 # api-key: sk-xxxxxxxxx # chat.options: # model: deepseek-chat # 指定DeepSeek的模型名称 # 通义千问配置 spring: ai: openai: base-url: https://dashscope.aliyuncs.com/compatible-mode # 通义千问 api-key: sk-xxxxxxxxxxx chat.options: model: qwen-plus 3、Controller package org.example.springboot3ds.controller; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import org.
1、概览 现代 Web 应用越来越多地与大型语言模型(LLM)集成,以构建解决方案。
DeepSeek 是一家中国的 AI 研究公司,致力于开发功能强大的 LLM,最近凭借其 DeepSeek-V3 和 DeepSeek-R1 模型颠覆了人工智能世界。DeepSeek-V3 和 DeepSeek-R1 模型揭示了它的思维链(CoT),让我们了解了 AI 模型是如何解释和处理给定提示的。
本文将带你了解如何将 DeepSeek 模型与 Spring AI 集成,以构建一个能够进行多轮文本对话的简单聊天机器人。
2、依赖和配置 有多种方法可以将 DeepSeek 模型集成到我们的应用中。
2.1、使用 OpenAI DeepSeek 模型与 OpenAI API 完全兼容,可以使用任何 OpenAI 客户端或库进行访问。
首先,在项目的 pom.xml 文件中添加 Spring AI 的 OpenAI Starter 依赖:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>1.0.0-M6</version> </dependency> 由于当前的 1.0.0-M6 版本是里程碑版本,因此还需要在 pom.xml 中添加 Spring Milestones Repository:
<repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> 该 Repository 是发布里程碑版本的地方,而不是标准的 Maven Central Repository。无论我们选择哪种配置选项,都需要添加这个里程碑 Repository。
1、概览 搜索 是软件中的一个基本概念,目的是在大数据集中查找相关信息。它涉及在一系列项目中查找特定项目。
本文将带你了解如何使用 Spring AI、PGVector 和 Ollama 实现语义搜索。
2、基础概念 语义搜索是一种先进的搜索技术,它利用词语的含义来查找最相关的结果。要构建语义搜索应用,需要了解一些关键概念:
词嵌入(Word Embedding):词嵌入是一种词表示类型,允许具有相似含义的单词具有类似的表示形式。词嵌入将单词转换为数值向量,可以在机器学习模型中使用。 语义相似性:语义相似性是衡量两段文本在意义上相似程度的一种方法。它用于比较单词、句子或文档的含义。 向量空间模型:向量空间模型是一种数学模型,用于将文本文档表示为高维空间中的向量。在该模型中,每个单词都表示为一个向量,两个单词之间的相似度根据它们向量之间的距离来计算。 余弦相似度:余弦相似度是内积空间中两个非零向量之间的相似度量,它测量的是两个向量之间角度的余弦值。它计算向量空间模型中两个向量之间的相似度。 3、先决条件 首先,我们需要在机器上安装 Docker,以便运行 PGVector 和 Ollama。
然后,在 Spring 应用中添加 Spring AI Ollama 和 PGVector 依赖:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-pgvector-store-spring-boot-starter</artifactId> </dependency> 还要添加 Spring Boot 的 Docker Compose 支持,以管理 Ollama 和 PGVector Docker 容器:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-docker-compose</artifactId> <version>3.1.1</version> </dependency> 除了依赖外,还要在 docker-compose.yml 文件中描述这两个服务:
services: postgres: image: pgvector/pgvector:pg17 environment: POSTGRES_DB: vectordb POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres ports: - "5434:5432" healthcheck: test: [ "CMD-SHELL", "pg_isready -U postgres" ] interval: 10s timeout: 5s retries: 5 ollama: image: ollama/ollama:latest ports: - "11435:11434" volumes: - ollama_data:/root/.
1、概览 AI 驱动的应用已成为我们的新现实。我们正在广泛实现各种 RAG 应用和提示 API,并使用 LLM 创建令人印象深刻的项目。借助 Spring AI,我们可以更快、更稳定地完成这些任务。
本文将带你了解 Spring AI Advisor 这一功能,它可以为我们处理各种常规任务。
2、Spring AI Advisor 是什么? Advisors 是在 AI 应用程序中处理请求和响应的拦截器。我们可以使用它们为提示流程设置额外的功能。例如,可以建立聊天历史、排除敏感词或为每个请求添加额外的上下文。
该功能的核心组件是 CallAroundAdvisor 接口。我们通过实现该接口来创建 Advisor 链,从而影响我们的请求或响应。Advisor 流程如下图所示:
我们会将提示(prompt)发送到一个聊天模型,该模型关联了一个 Advisor 链。在发送提示之前,链上的每个 Advisor 都会执行其 before 操作。同样,在收到聊天模型的回复之前,每个 Advisor 都会调用自己的 after 操作。
3、ChatMemoryAdvisor ChatMemoryAdvisor 是一组非常有用的 Advisor 实现。我们可以使用这些 Advisor 提供与聊天提示的交流历史,从而提高聊天回复的准确性。
3.1、MessageChatMemoryAdvisor 使用 MessageChatMemoryAdvisor,我们可以通过 messages 属性提供聊天客户端调用的聊天历史记录。我们可以将所有消息保存在 ChatMemory 实现中,并控制历史记录的大小。
示例如下:
@SpringBootTest(classes = ChatModel.class) @EnableAutoConfiguration @ExtendWith(SpringExtension.class) public class SpringAILiveTest { @Autowired @Qualifier("openAiChatModel") ChatModel chatModel; ChatClient chatClient; @BeforeEach void setup() { chatClient = ChatClient.
1、概览 AI(人工智能)技术的使用正成为现代开发中的一项关键技能。在本文中,我们将构建一个 RAG Wiki 应用,它可以根据存储的文档回答问题。
我们会通过 Spring AI 将应用与 MongoDB Vector 数据库 和 LLM 集成。
2、RAG 应用 当自然语言生成需要依赖上下文数据时,我们就会使用 RAG(Retrieval-Augmented Generation)应用。RAG 应用的一个关键组成部分是向量数据库(Vector Database),它在有效管理和检索这些数据方面起着至关重要的作用:
我们使用 Embedding Model 来处理源文件。Embedding Model 将文档中的文本转换为高维向量。这些向量捕捉了内容的语义,使我们能够根据上下文而不仅仅是关键词匹配来比较和检索类似的内容。然后,我们将文档存储到向量数据库。
保存文档后,我们可以通过以下方式发送提示信息:
首先,我们使用 Embedding Model 来处理问题,将其转换为捕捉其语义的向量。 接下来,进行相似性搜索,将问题的向量与存储在向量库中的文档向量进行比较。 从最相关的文档中,为问题建立一个上下文。 最后,将问题及其上下文发送给 LLM,LLM 会根据所提供的上下文构建与查询相关的回复。 3、MongoDB Atlas Search 在本教程中,我们将使用 MongoDB Atlas Search 作为我们的向量数据库。它提供的向量搜索功能可以满足我们在本项目中的需求。为了测试,我们使用 mongodb-atlas-local Docker 容器来设置 MongoDB Atlas Search 的本地实例。
创建一个 docker-compose.yml 文件:
version: '3.1' services: my-mongodb: image: mongodb/mongodb-atlas-local:7.0.9 container_name: my-mongodb environment: - MONGODB_INITDB_ROOT_USERNAME=wikiuser - MONGODB_INITDB_ROOT_PASSWORD=password ports: - 27017:27017 4、依赖和配置 首先,添加必要的依赖项。由于我们的应用要提供 HTTP API,因此加入 spring-boot-starter-web 依赖:
Spring AI 现在支持 NVIDIA®(英伟达™)的 大型语言模型 API,可与各种 模型 集成。通过利用 NVIDIA 的 OpenAI 兼容 API,Spring AI 允许开发人员通过熟悉的 Spring AI API 使用 NVIDIA LLM。
本文将带你了解如何配置和使用 Spring AI OpenAI 聊天客户端来连接 NVIDIA LLM API。
完整的示例代码可从 nvidia-llm GitHub 仓库获取。 SpringAI / NVIDIA 整合文档。 先决条件 创建 NVIDIA 帐户并获得足够的积分。 从 NVIDIA 提供的 LLM 模型 中选择自己喜欢的模型。如下面截图中的 meta/llama-3.1-70b-instruct。 从模型页面获取所选模型的 API Key。 依赖 首先,将 Spring AI OpenAI Starter 添加到 Maven pom.xml 中:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> 对于 Gradle 来说,需要在 build.gradle 添加如下依赖:
OpenAI 最近 推出了 一项名为 “结构化输出”(Structured Outputs)的强大功能,可确保 AI 生成的响应严格遵守预定义的 JSON Schema。这一功能大大提高了 AI 生成的内容在实际应用中的可靠性和可用性。
Spring AI(1.0.0-SNAPSHOT) 已 完全集成 了对 OpenAI 的结构化输出的支持,以一种无缝的 Spring 原生方式为 Java 开发人员带来了这一功能。
下图显示了新的结构化输出功能如何扩展 OpenAI Chat API:
注:Spring AI 已经提供了 功能强大、与模型无关的结构化输出 工具,可用于包括 OpenAI 在内的各种 AI 模型。OpenAI 结构化输出功能提供了一个额外的、一致的、但针对特定模型的解决方案,目前仅适用于 gpt-4o、gpt-4o-mini 和更高版本的模型。
OpenAI 结构化输出功能可确保 AI 模型生成的响应符合所提供的 JSON Schema。这解决了 AI 驱动的应用程序中的几个常见难题:
类型安全:不再担心缺少必填 KEY 或枚举值无效; 明确拒绝:基于安全性的模型拒绝变得可以通过编程检测到; 简化的提示:实现一致的格式化,而无需使用过于具体的 Prompt(提示)。 Spring AI 允许开发人员以最少的配置利用这一功能。接下来看看如何在 Spring 应用中使用它。
编程式配置 你可以使用 OpenAiChatOptions Builder 以编程式设置响应格式,如下所示:
String jsonSchema = """ { "type": "object", "properties": { "steps": { "type": "array", "items": { "type": "object", "properties": { "explanation": { "type": "string" }, "output": { "type": "string" } }, "required": ["explanation", "output"], "additionalProperties": false } }, "final_answer": { "type": "string" } }, "required": ["steps", "final_answer"], "additionalProperties": false } """; Prompt prompt = new Prompt("how can I solve 8x + 7 = -23", OpenAiChatOptions.
更快的信息处理速度不仅能提供信息,还能改变我们的认知和创新方式。
Spring AI 是一个强大的框架,用于将 AI 能力集成到 Spring 应用中,现在已支持 Groq - 一个运行速度极快的 AI 推理引擎,并支持工具/函数调用。
利用 Groq 的 OpenAI 兼容 API,Spring AI 通过调整其现有的 OpenAI Chat 客户端实现了无缝集成。这种方法使开发人员能够通过熟悉的 Spring AI API 利用 Groq 的高性能模型。
本文将带你了解如何配置和使用 Spring AI OpenAI 聊天客户端与 Groq 进行连接。详细信息请查阅 Spring AI Groq 文档 和相关 测试。
Groq API Key 要与 Groq 交互,你需要从 https://console.groq.com/keys 获取 Groq API Key。
依赖 将 Spring AI OpenAI Starter 添加到项目中。
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> </dependency> 对于 Gradle,在 build.gradle 中添加以下内容:
本周早些时候,Ollama 推出 了一项令人兴奋的新功能:对大型语言模型(LLM)的工具支持。
今天,我们非常高兴地宣布 Spring AI(1.0.0-SNAPSHOT)已完全支持这一强大功能,将 Ollama 的函数调用功能引入 Spring 生态系统。
Ollama 的工具支持允许模型决定何时调用外部函数以及如何使用返回的数据。这为访问实时信息到执行复杂计算等各种可能性打开了大门。Spring AI 采用了这一概念,并将其与 Spring 生态系统无缝集成,使 Java 开发人员能够非常轻松地在其应用程序中利用这一功能。Spring AI 的 Ollama 函数调用支持的主要功能包括:
轻松集成:将 Java 函数注册为 Spring Bean,并与 Ollama 模型一起使用。 灵活配置:多种注册和配置函数的方法。 支持多种函数:在一个聊天会话中注册和使用多种函数。 运行时函数选择:动态选择为每个提示(Prompt)启用哪些函数。 代码可移植性:使用不同的 LLM 提供商(如 OpenAI、Mistral、VertexAI、Anthropic、Groq),无需修改代码即可重复使用你的应用代码。 工作原理 定义自定义 Java 函数并将其注册到 Spring AI。
执行可能需要调用函数才能完成回答的聊天请求。
当 AI 模型确定需要调用一个函数时,它会生成一个包含函数名称和参数的 JSON 对象。
Spring AI 会拦截该请求,调用你的 Java 函数,并将结果返回给模型。
该模型将函数的输出纳入其响应中。
入门 先决条件 首先需要在本地计算机上运行 Ollama(0.2.8 以上)。请参阅官方的 Ollama 项目 README,开始在本地计算机上运行模型。然后调出支持模型的工具,例如 Llama 3.1、Mistral、Firefunction v2、Command-R +。。。支持的模型列表可在 模型页面的工具类别 下找到。
ollama pull mistral 依赖 要开始在 Spring AI 中使用 Ollama 函数调用,请在项目中添加以下依赖: