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 本地模型