第 2 章 · SpringAI环境搭建与 Hello World

Java+SpringAI 2.0实战:从基础到企业级AI应用开发教程 RAG(检索增强生成)和AI Agent是当前人工智能领域的热门技术,它们通过结合检索系统和生成模型,显著提升了AI系统的准确性和实用性。RAG技术基于向量检索原理,能够从知识库中精准获取相关信息,再结合大语言模型生成高质量回答,有效解决了传统AI模型的知识局限问题。在Java生态中,SpringAI 2.0框架为开发者提供了完整的AI能力集成方案,结合Langchain4j等工具,实现了RAG系统和智能Agent的快速构建。这种技术组合特别适合企业级应用场景,如智能客服、知识库问答和数据分析助手,让Jav 阅读详情

版本:Spring AI 2.0.1 · Spring Boot 4.x · JDK 17+(推荐 21)

目标:用 BOM + model starter + 最小配置,跑通一次同步调用和一次流式调用。

四步心智模型:

引入 spring-ai-bom
  → 加 spring-ai-starter-model-*(本章用 openai 或 ollama)
    → 配置 api-key / base-url / model
      → ChatClient.call / stream 跑通

2.1 准备工作

项要求
JDK17+(日常推荐 21)
Spring Boot4.0 / 4.1(与 Spring AI 2.0.x 对齐)
构建Maven 3.9+ 或 Gradle 8+
模型后端OpenAI 兼容 API Key,或本机 Ollama

本章不需要 Docker、向量库、Redis。若本机有 Spring AI 上游源码,只适合对照接口,不要当工程依赖源。

密钥放入环境变量(不要写进仓库):

# Linux / macOS
export OPENAI_API_KEY=sk-...
​
# Windows PowerShell
$env:OPENAI_API_KEY = "sk-..."

2.2 用 BOM 把版本钉住

Spring AI 各模块必须齐步走。手写零散版本(一部分 2.0.1、一部分旧版)容易出现 NoSuchMethodError 或配置前缀对不上。BOM import 是默认做法,不是可选项。

Maven(最小可运行片段)

父工程用 Boot 父 POM(或自行 import spring-boot-dependencies),再 import Spring AI BOM:

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>4.0.0</version> <!-- 以你选用的 Boot 4.x 为准 -->
  <relativePath/>
</parent>
​
<properties>
  <java.version>21</java.version>
  <spring-ai.version>2.0.1</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>
  <!-- 同步 HTTP:MVC -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <!-- 流式 Hello 返回 Flux:加 WebFlux(可与 web 并存做演示) -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-openai</artifactId>
    <!-- 不要写 <version>,交给 BOM -->
  </dependency>
</dependencies>

Gradle(Kotlin DSL)

dependencies {
  implementation(platform("org.springframework.ai:spring-ai-bom:2.0.1"))
  implementation("org.springframework.boot:spring-boot-starter-web")
  implementation("org.springframework.boot:spring-boot-starter-webflux")
  implementation("org.springframework.ai:spring-ai-starter-model-openai")
}

2.3 starter 实际带来了什么

以 spring-ai-starter-model-openai 为例:

spring-ai-starter-model-openai
  ├─ openai 实现(如 OpenAiChatModel)
  ├─ autoconfigure-model-openai(条件装配 @Bean)
  └─ 传递依赖:model 抽象 / client-chat / commons …

启动成功后,容器里通常已有:

Bean用途
ChatModel与供应商对话的抽象
ChatClient.Builder组装默认 system / advisors / tools
Options / Observation 钩子模型参数与可观测性

按场景记几组常见 starter 即可:

  • Model:…-openai / …-ollama / …-anthropic

  • Memory:…-chat-memory + repository

  • Vector:…-vector-store-*

  • MCP:…-mcp-server-webmvc 等

同时引入多个 model starter 时,容器里会有多个 ChatModel。不要裸 @Autowired ChatModel,改用 @Qualifier,或为每个模型各建一个 ChatClient Bean。


2.4 最小配置

OpenAI 及兼容网关

# application.yml
spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      base-url: https://api.openai.com   # 兼容网关时只改这里与 key/model
      chat:
        options:
          model: gpt-4o-mini
          temperature: 0.7

注意:model 落在 spring.ai.openai.chat.options 下,不要写成 openai 根下的平铺字段(部分旧文会写错)。

Ollama(本地,无云端 Key)

依赖换成:

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: llama3.1

本机先执行:ollama pull llama3.1,并确认 ollama list 能看到该模型。

Hello 阶段先记住的默认值

配置 / 行为默认含义
spring.ai.tools.resolution.fallback.enabledfalse只执行当前请求 / defaultTools 上挂的工具
OpenAI strictfalse需要严格 JSON schema 时再显式打开
ChatClient.Builder自动配置提供业务里通常 @Bean ChatClient 补默认 system

2.5 工程骨架

建议包结构:

src/main/java/com/example/demo/
  DemoApplication.java
  config/AiConfig.java
  web/HelloController.java
src/main/resources/
  application.yml
package com.example.demo;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
package com.example.demo.config;
​
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
​
@Configuration
public class AiConfig {
​
    @Bean
    ChatClient chatClient(ChatClient.Builder builder) {
        // Builder 由自动配置注入;这里只补默认值并 build
        return builder
                .defaultSystem("你是简洁准确的中文助手,回答控制在必要篇幅内。")
                .build();
    }
}

为什么要 @Bean ChatClient:Controller 直接注入成品客户端,避免每个接口重复写 system / advisors。需要按请求覆盖时,再在 prompt() 链上临时 .system(...) / .advisors(...)。


2.6 Hello World:同步调用

package com.example.demo.web;
​
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatResponse;
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("/demo")
public class HelloController {
​
    private final ChatClient chatClient;
​
    public HelloController(ChatClient chatClient) {
        this.chatClient = chatClient;
    }
​
    @GetMapping("/sync")
    public String sync(
            @RequestParam(defaultValue = "用一句话解释依赖注入") String q) {
        return chatClient.prompt()
                .user(q)
                .call()
                .content();
    }
}

调用链拆开看:

prompt()     → ChatClientRequestSpec
.user(q)     → 写入 UserMessage
.call()      → 走 Advisor 链,末端到达 ChatModel.call
.content()   → 取出助手文本(空结果时要警惕,生产需判空)

需要 Usage、finishReason 时:

ChatResponse response = chatClient.prompt()
        .user(q)
        .call()
        .chatResponse();
​
String text = response.getResult().getOutput().getText();
var usage = response.getMetadata().getUsage();

更短的写法(整段当作 user 文本):

chatClient.prompt(q).call().content();

验证:

curl "http://localhost:8080/demo/sync?q=你好"

2.7 Hello World:流式调用

import org.springframework.http.MediaType;
import reactor.core.publisher.Flux;
​
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> stream(
        @RequestParam(defaultValue = "讲一个很短的冷知识") String q) {
    return chatClient.prompt()
            .user(q)
            .stream()
            .content();
}

要点:

  1. 依赖:返回 Flux 做 SSE,本章示例已加 spring-boot-starter-webflux。若坚持纯 MVC,改用 SseEmitter 桥接(见第 12 章),不要在请求线程上 blockLast()。

  2. 出口:.stream().content() 是文本增量;要 finishReason / 分块元数据用 .stream().chatResponse()。

  3. 范围:Hello 阶段不要挂 Tool。流式下的工具循环更复杂,放到工具 / 流式专章。

验证(-N 关闭缓冲,才能看到逐块输出):

curl -N "http://localhost:8080/demo/stream?q=你好"

2.8 补充:Options、手工组装与多模型

请求级 Options

import org.springframework.ai.openai.OpenAiChatOptions;
​
@GetMapping("/sync-options")
public String syncOptions(@RequestParam String q) {
    return chatClient.prompt()
            .user(q)
            .options(OpenAiChatOptions.builder()
                    .temperature(0.2)
                    .maxTokens(256)
                    .build())   // 记得 build()
            .call()
            .content();
}

.options(...) 的入参类型以 IDE 中 ChatClientRequestSpec#options 为准;OpenAI 路径通常传 OpenAiChatOptions。

临时覆盖 system

String answer = chatClient.prompt()
        .system("你是气象解说员,只用短句。")
        .user("用科普口吻说明什么是露点温度")
        .call()
        .content();

关闭自动配置时的手工组装(单测 / 自定义节点)

import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.api.OpenAiApi;
​
ChatModel chatModel = OpenAiChatModel.builder()
        .openAiApi(OpenAiApi.builder().apiKey(apiKey).build())
        .defaultOptions(OpenAiChatOptions.builder()
                .model("gpt-4o-mini")
                .build())
        .build();
​
ChatClient client = ChatClient.create(chatModel);
String answer = client.prompt("ping").call().content();

生产仍建议 starter + yaml。

多模型预期

  • 一个应用可有多个 ChatModel,用 Bean 名或 @Qualifier 区分。

  • 许多国产 / 代理网关仍用 spring-ai-starter-model-openai,改 base-url、api-key、model 即可。

  • 改了 base-url ≠ Image / Audio 一定可用;能力以该兼容端实际支持为准。


2.9 测试时怎么接模型

方式适用
真调用@SpringBootTest + 测试 Key(管费用与 CI 密钥)
Stub ChatModel单测业务编排,不花 token
Testcontainers向量库 / Redis 等周边;Chat Hello 通常不需要

最小 stub:

import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.model.Generation;
​
ChatModel stub = prompt -> {
    AssistantMessage msg = new AssistantMessage("pong");
    return new ChatResponse(List.of(new Generation(msg)));
};
ChatClient client = ChatClient.create(stub);
assertThat(client.prompt("ping").call().content()).isEqualTo("pong");

(Generation / ChatResponse 构造若随小版本调整,以你依赖中的签名为准;语义都是「固定返回一句助手消息」。)


2.10 常见问题排查

现象先查什么
找不到 ChatModel / Builder是否漏了 model starter;api-key 是否为空导致自动配置跳过;Boot 是否仍是 3.x
401 / 403环境变量名与 ${OPENAI_API_KEY} 是否一致;兼容网关是否要额外 Header
400:schema / strict / tools是否误开 strict(true) 却声明可选字段;Tool 名是否含空格等非法字符
.getResult() 为空先看 getResults();Hello 用 .content(),生产要处理空结果与异常
流式卡住或只有一块客户端是否未缓冲(curl -N);是否缺 WebFlux / SSE 配置
NoSuchMethodError是否手写了旧版 spring-ai-*;是否混入 Spring AI Alibaba 坐标 → 统一 BOM 2.0.1
Tool 挂了却不调2.0.1 fallback 默认关;确认挂在当前请求或 defaultTools(见第 8 章)

2.11 本章边界与验收

Docker Compose / Testcontainers 用于数据库、向量库等周边,不是 Chat Hello 的前提。

到这里应能:

  1. 用 BOM + model starter 建起最小工程(含密钥环境变量)

  2. 完成 /demo/sync 与 /demo/stream 并完成 curl 验证

  3. 区分配置问题、鉴权问题与依赖冲突

下一章看一次调用里真正流动的对象:Message、Prompt、ChatResponse。

SpringAI集成DeepSeek:从Chat到RAG的完整实战指南 大模型API集成是现代应用开发的关键技术,它通过统一的接口抽象让开发者能够便捷地调用各类AI能力。其核心原理在于将复杂的模型调用封装为标准化服务,通过HTTP协议与云端或本地模型进行交互。这一技术的价值在于显著降低了AI能力集成的门槛,使开发者能够快速为应用添加智能对话、文本理解等高级功能。在实际应用场景中,开发者常面临成本控制、网络稳定性与合规性等挑战,特别是在企业级Java生态中。SpringAI作为Spring官方推出的AI集成框架,提供了与Spring Boot生态无缝融合的解决方案,通过ChatM 阅读详情

相关推荐

SpringAI实战:从ChatModel到RAG,构建企业级AI应用工程化方案

大语言模型集成已成为现代应用开发的关键技术,其核心在于将AI能力标准化、工程化地融入现有系统。SpringAI作为Spring生态的AI抽象层,通过统一接口(如ChatModel、EmbeddingModel)屏蔽了底层模型差异,让开发者能以熟悉的依赖注入和配置管理方式调用各类模型服务。这一设计大幅降低了集成复杂度,但其真正的技术价值在于为构建稳定、可维护的AI应用提供了工程化底座。在实际应用中,开发者常面临模型接入、Embedding本地化、RAG效果优化等挑战。例如,通过合理配置将OpenAI兼容的Ch

weixin_34226706的博客 362

SpringAI环境配置实战:从零搭建稳定可复现的大模型集成开发环境

在AI应用开发领域,大模型集成已成为提升应用智能化的关键技术路径。其核心原理在于通过API或SDK将外部大语言模型的能力无缝嵌入现有系统,实现自然语言理解与生成。这一技术为开发者提供了强大的语义处理能力,显著降低了构建智能对话、内容生成等功能的门槛。在实际工程实践中,环境配置是确保集成稳定性的首要环节,涉及依赖管理、版本对齐和安全配置等关键步骤。SpringAI作为Spring官方推出的AI开发框架,通过模块化设计和熟悉的Spring风格,让Java开发者能够高效调用大模型。本文聚焦于构建稳定、可复现的Sp

weixin_34357928的博客 427

SpringAI提示词模板实战:告别字符串拼接,构建可维护AI应用

在大模型应用开发中,提示词工程是连接业务逻辑与AI能力的核心环节。其原理在于通过预定义的结构化模板,将动态变量与静态指令分离,从而实现提示词的可复用与高效管理。这一技术价值在于将原本硬编码、难以维护的字符串拼接逻辑,转化为清晰、可配置的工程化组件,显著提升代码的可读性和迭代效率。在应用场景上,无论是构建多轮对话系统、实现动态上下文注入,还是根据不同用户角色生成差异化指令,提示词模板都提供了标准化解决方案。本文聚焦于SpringAI框架中的提示词模板功能,通过一个完整的技术问答助手项目示例,详细解析了如何利用

weixin_34174105的博客 479

本地搭建搜索Agent(SpringAI + RAG + SearXNG + MCP)

课程链接:https://coding.imooc.com/class/948.html其实现在的Agent平台把这个课的东西都实现得很好用,让我自己搭个agent我也大概率不会选择用这份代码从头搭建。就当手动搭建了下,对原理多些了解吧。

美好的事情即将发生 1176

AI Agent面试实战沙盘:RAG、Workflow、MCP生产级决策解析

AI Agent不是LLM加Tool的简单拼接,而是融合感知、决策、执行与协同的工程系统。其核心能力依赖RAG构建动态知识网络、Workflow实现可运维状态编排、MCP提供跨Agent通用协议。技术价值在于将模糊意图转化为可监控、可回滚、可权衡的落地决策——例如RAG分块需兼顾时间语义与向量召回精度,Workflow必须嵌入黄金三指标实现秒级故障定位,MCP则要求消息体只传引用标识以规避IO阻塞。典型应用场景覆盖微信智能客服、订单查询链路、多系统协同审批等生产环境。本文聚焦真实项目中的技术取舍、约束条件与

weixin_33976072的博客 433

VGG16

VGG16学习笔记

一去不复返的通信er 1177

【人工智能应用技术】-基础实战-小程序应用(基于springAI+百度语音技术)智能语音控制-单片机环境搭建

本文专为ESP32新手设计,核心目标是让你快速搞定开发环境搭建,并写出第一个极简的Hello World程序(串口打印)。全程避开复杂术语,步骤清晰可复制,为后续开发ESP32与Java平台交互程序打下基础。

Coder_Boy_的博客 878

【PVE9.1使用教程】

弹窗代码在 /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js 中,通过 void({…}) 可以让弹窗部分代码不执行,实现删除弹窗的效果。安装过程这里不再赘述,记得不要使用网络版本进行安装,安装的时候不要使用镜像,否则安装过程会很卡。把下面的配置添加进去,允许同一个网段下的所以主机访问/mnt/pve_share文件夹。可以自己搭建也可以去咸鱼购买,本人在咸鱼上面购买的,暂时可用。也可以使用下面的命令,版本号需要自己查看最新的版本号。

weixin_42950821的博客 960

SpringAI快速入门-对接deepseek大模型

本文介绍了SpringAI快速入门指南,主要包括:1) 配置Maven依赖,要求JDK17+;2) 通过Ollama配置AI模型;3) 创建ChatClient和ChatController实现聊天功能;4) 使用Advisor实现日志记录和会话记忆功能;5) 解决跨域问题和保存聊天历史记录。关键点包括配置ChatMemory实现会话隔离,通过CONVERSATION_ID区分不同会话,以及使用InMemoryChatHistoryRepository存储聊天记录。

qq_52884824的博客 460

别再手动算考勤了!教你用Python+企业微信API自动生成月度报表

本文介绍如何利用Python和企业微信API构建自动化考勤分析系统,实现从数据获取到可视化报表生成的全流程自动化。通过企业微信打卡接口获取数据,使用Pandas进行高效清洗和分析,并生成Excel和HTML格式的报表,大幅提升考勤统计效率。系统支持智能判定考勤状态,如迟到、早退等,并可通过定时任务实现月度自动化运行。

weixin_27875131的博客 290

基于simulink的变压器保护仿真设计【MATLAB源码+Word文档】

电力系统变压器保护MATLAB/simulink仿真设计。纵联差动保护-过电流保护-距离保护

weixin_761237174的博客 1271

SpringAI学习之Hello,World!(2)

然后启动springboot,访问/api/v1/chat接口。

m0_73264708的博客 299

【实战指南】RF-DETR多场景部署:从工业质检到自动驾驶的SOTA模型应用

本文深入解析了SOTA目标检测模型RF-DETR在工业质检与自动驾驶等多场景下的实战部署指南。该模型基于Transformer架构,在COCO数据集上实现了实时检测与高精度的突破,并凭借其强大的泛化能力,在RF100-VL等复杂数据集上表现出色。文章提供了从快速Demo、工业缺陷检测微调、车载自适应部署到多硬件平台性能优化的完整解决方案,帮助开发者高效应用这一先进模型。

weixin_29070861的博客 475

Spring AI简单入门:Hello World

通过以上项目验证,证明了在Java语言中,基于SpringBoot+SpringAI开源框架,并使用阿里云国内大模型服务,在SpringBoot工程中集成并使用AI大模型服务是初步可行的。

3505

高通SA8295P音频接口深度解析:全面掌握SA8295P的LS-I2S、PCM/TDM与高性能音频处理技术设计

SA8295P提供丰富的音频接口选项,包括LS-I2S、PCM/TDM和HS-I2S接口,具备灵活的配置选项,适合各种高保真音频和高速数据传输应用。结合LS-I2S和PCM/TDM接口:在复杂的音频编解码器设计中,可结合使用LS-I2S和PCM/TDM接口,以处理和传输不同的音频数据流。使用HS-I2S接口:在软件定义无线电(SDR)系统中,高速I2S接口可处理高速数据流,如无线电信号的解码和处理。LS-I2S(低速I2S)接口是SA8295P的一部分,提供了丰富的音频数据传输选项。

weixin_43199439的博客 1406

本地部署大模型:dgx-spark-ai项目硬件选型、部署与私有化AI构建指南

大语言模型(LLM)的本地部署是当前AI工程实践中的重要方向,其核心原理在于将模型权重与计算过程完全置于用户可控的硬件环境中。这项技术的核心价值在于实现了数据主权与隐私安全,避免了云端服务的延迟、持续订阅成本及数据外泄风险。从技术实现看,本地部署的关键在于硬件选型与软件环境适配,尤其是NVIDIA GPU的CUDA生态、显存容量与内存带宽的匹配。在应用场景上,本地化部署特别适合对数据敏感性要求高的领域,如企业内部代码助手、金融分析或医疗研究,能够支持私有化模型微调与定制化工作流构建。本文以dgx-spark

weixin_42531579的博客 505

Spring AI 2.0:Hello World

Spring Boot 4 + Spring 7 + IDEA 2025 + JDK17 ,Spring AI 的定位是:大模型基础对话 + RAG + MCP + Tool + Memory等基础功能。

人不风流枉少年 412

[Unity3D]水族馆游戏教程四

文章目录0.接上篇1.速度控制器2.修改FishAI3.修改后的效果4.总结 0.接上篇 上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。 本篇将继续优化鱼AI。 1.速度控制器 上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。 我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢...

延澈左的专栏 1039

SpringAI系列|第1篇:SpringAI概述与快速上手

从事 Java 开发多年,笔者最初对 AI 领域持审慎态度。彼时 AI 技术栈以 Python 生态为主导,LangChain、LlamaIndex 等框架虽成熟,但切换技术栈对 Java 团队而言成本较高。2024 年 Spring AI 正式发布后,这一局面得以改观。Java 开发者得以在熟悉的 Spring 生态中构建大模型应用,无需迁移至 Python 技术栈。

weixin_45226411的博客 867

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringAI的那些事儿

说实话,Spring AI 这个框架确实不完美。1.x 版本刚 GA 没多久,有些功能还在完善中,文档也谈不上详尽。但话说回来,作为一个 Spring Boot 开发者,能在自己熟悉的生态里做大模型应用,而不用被迫切换到 Python,这本身就是一件很爽的事情。Spring AI 的核心价值不是“能调模型”,而是把 Spring 的工程化理念带到了 AI 场景里。依赖注入、自动配置、AOP、可观测性——这些你熟悉的东西,现在都能用在 AI 应用上了。

慕容卡卡 725

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识

摘要: Spring AI 2.0(2026最新版)是Spring官方推出的企业级AI开发框架,基于Spring Boot 4+Java 21,提供统一API集成多模型(如OpenAI、Ollama等)、向量数据库及RAG能力。核心特性包括ChatClient对话接口、PromptTemplate提示模板、Advisor拦截器及结构化输出,显著降低Java开发者使用LLM的门槛。通过Spring Initializr快速创建项目,配置API密钥后即可实现对话、流式响应及POJO转换。2.0版本新增语义缓存、

likuolei的博客 440

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring AI Alibaba入门示例Hello World

本文通过一个经典的“HelloWorld”示例,初步地验证了基于SpringBoot集成SpringAIAlibaba开源框架的可行性和简便性。该实验不仅展示了如何通过编程方式灵活定义`ChatClient`,还深入探讨了利用SpringAIAlibaba框架调用阿里巴巴AI大模型API接口的具体实现路径,从而支持普通文本问答和流式问答两种交互模式。这一集成不仅为Java开发者提供了一种高效、便捷的方式去探索和利用最新的AI技术,同时也为未来更复杂的AI应用场景奠定了坚实的技术基础。

2347

实战:Spring AI Alibaba + Redis:搞定多轮对话持久化的 Hello World(附全部代码)

在AI浪潮席卷下,Java开发迎来巨变。SpringAI与阿里巴巴AI(SpringAiAlibaba)横空出世,为Java程序员打开智能应用开发大门。多轮对话持久化作为核心功能之一,资料却极为稀缺。今天,我将深入剖析Spring AI Alibaba项目中基于Redis实现多轮对话持久化的全过程,助你掌握这一关键技能。从环境搭建到代码实现,从序列化配置到对话管理,每一步都折腾了我很久。完整代码呈现,让你直接上手,快速验证效果,少走弯路。

二流的吃货 4383

01:SpringAI

ai

weixin_43761434的博客 422

实战:Spring AI + Tool Calling :大模型轻松接内、外服务,打造智能助手的 Hello World(附全部代码)

在现代应用开发中,如何高效地整合内部和外部服务是开发者面临的一个重要挑战。Spring AI 的功能提供了一种优雅的解决方案,通过将工具和服务抽象化,开发者可以轻松地调用外部 API 或内部服务,而无需复杂的集成逻辑。简化开发流程:通过统一的工具调用接口,开发者可以专注于业务逻辑,而无需处理繁琐的 HTTP 请求和响应解析。增强扩展性:工具可以动态注册和调用,支持快速集成新服务。提升用户体验:通过工具调用,应用可以实时获取外部数据(如天气、假期等),为用户提供了一个更智能、更全面的服务体验。

二流的吃货 2897

Spring-AI-2.0-完整教程

本文是一份完整的Spring AI 2.0开发教程,详细介绍了如何基于智谱AI(GLM)平台实现各类AI功能。教程采用"零跳跃"设计理念,每章内容都建立在前一章基础上,确保学习路径自然连贯。 教程主要内容包括: 从基础对话功能开始,逐步实现流式输出、结构化返回、多轮对话记忆 进阶功能:函数调用、视觉理解、文生图、文生视频 核心AI技术:文本向量化、检索增强生成 综合实战:构建北邮智能问答客服系统 部署总结与全链路复盘 技术栈采用最新版本: Java 25 + Spring Boot 4.1.0 Spring

桃李不言下自成蹊 992
上一篇: 第 1 章 · Spring AI 技术概览
下一篇: 第 3 章 · Message / Prompt / ChatResponse
AI深栈
博客等级 码龄14年 1粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值