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

Spring Boot + Spring AI 最小可运行 Demo

一. 项目依赖(pom.xml)

<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.0https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-ai-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><java.version>17</java.version><spring.boot.version>3.2.5</spring.boot.version><spring.ai.version>1.0.0-M2</spring.ai.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- Spring Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring AI OpenAI Starter --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>${spring.ai.version}</version></dependency><!-- Lombok(可选) --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

二. 配置文件(application.yml)

server:port: 8080spring:ai:openai:api-key: ${OPENAI_API_KEY}   # 建议放到环境变量base-url: https://api.openai.com/v1chat:options:model: gpt-3.5-turbo

👉 如果你用的是 Ollama 本地模型(例如 Llama3),改成:

spring:ai:ollama:base-url: http://localhost:11434model: llama3

三. 启动类(SpringAiDemoApplication.java)

package com.example.springaidemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringAiDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringAiDemoApplication.class, args);}
}

四:控制器示例

4.1:基础对话接口

package com.example.springaidemo.controller;import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor
public class ChatController {private final ChatClient chatClient;@GetMapping("/chat")public String chat(@RequestParam String msg) {return chatClient.prompt().user(msg).call().content();}
}

访问:

http://localhost:8080/ai/chat?msg=你好,请用一句话介绍一下Spring AI

4.2:Prompt 模板示例

@GetMapping("/summary")
public String summarize(@RequestParam String text) {String template = "请用一句话总结以下文本: {input}";return chatClient.prompt().user(template, java.util.Map.of("input", text)).call().content();
}

4.3 :结构化输出示例

import lombok.Data;@Data
public class WeatherInfo {private String location;private String forecast;private int temperature;
}
@GetMapping("/weather")
public WeatherInfo getWeather(@RequestParam String place) {return chatClient.prompt().user("请提供 {place} 的天气情况", java.util.Map.of("place", place)).call().entity(WeatherInfo.class);
}

五: 启动 & 测试

5.1:在终端设置 API Key:

export OPENAI_API_KEY=sk-xxxx

(Windows 用 setx OPENAI_API_KEY sk-xxxx

5.2:启动项目:

mvn spring-boot:run

5.3:测试接口:

curl "http://localhost:8080/ai/chat?msg=Spring AI 是什么?"

六: 下一步扩展

接入向量数据库(Milvus、PgVector、Redis) → 实现 RAG 知识库问答

自定义 Prompt 模板 → 支持多角色对话

私有化部署模型 → 用 Ollama 跑 Llama3 本地模型

http://www.dtcms.com/a/341987.html

相关文章:

  • TensorFlow深度学习实战(33)——深度确定性策略梯度
  • 【知识储备】PyTorch / TensorFlow 和张量的联系
  • 29、工业网络威胁检测与响应 (IDS 模拟) - /安全与维护组件/industrial-network-ids
  • C# OpencvSharp获取Astra Pro奥比中光深度相机深度图
  • AXI GPIO S——ZYNQ学习笔记10
  • 基于OpenCV的物体识别与计数
  • 基于SpringBoot的流浪动物领养管理系统【2026最新】
  • 【Android】悬浮窗清理
  • 政务分建用户体系下基于OAuth2.0概念单点登录实现方案
  • CT02-20.有效的括号(Java)
  • 【Linux | 网络】多路转接IO之select
  • Linux软件编程--网络操作
  • FreeRTOS,事件标注组创建,xEventGroupCreate、xEventGroupCreateStatic
  • 【自记】Power BI 中 CALCULATETABLE 第二个及后续参数支持的两种类型说明
  • 基于混合注意力网络和深度信念网络的鲁棒视频水印技术基础理论深度解析
  • 【世纪龙科技】汽车专业虚拟仿真实训基地建设-理实虚一体化实践
  • 【lucene】lucene常用查询一览
  • 一键去除 Windows 图标角标(小箭头、盾牌与双箭头)
  • JeeSite V5.13.0 发布,升级 Spring Boot 3.5,Cloud 2025,AI 1.0,Vite 7
  • ORACLE中如何批量重置序列
  • 如何保证数据库和缓存的一致性?
  • 强化学习中的重要性采样:跨分布复用样本的核心技术
  • 大模型0基础开发入门与实践:第8章 “大力出奇迹”的哲学:大语言模型的核心技术揭秘
  • 【世纪龙科技】汽车专业虚拟仿真实训基地建设方案
  • 嵌入式软件典型架构:层次化模式 vs 递归模式
  • Java Main无法初始化主类的原因与解决方法(VsCode工具)
  • 【Java后端】Spring Boot 实现请求设备来源统计与UA解析全攻略
  • 智慧工厂的 “隐形大脑”:边缘计算网关凭什么重构设备连接新逻辑?
  • 编程刷题-资料分发1 图论/DFS
  • Kotlin-基础语法练习二