總字數：約22000字 | 預計閱讀時長：60-70分鐘​

一、SpringAI框架概述​

1.1 什麼是SpringAI​

SpringAI 是Spring生態中專為AI工程設計的應用框架，於2024年正式推出，2025年5月20日釋出1.0 GA正式版本。它是Java開發者構建生成式AI應用的首選工具，簡化了與大型語言模型（LLM）、嵌入模型和向量資料庫的整合。​

簡單來說，SpringAI就像一個"Java版的LangChain"——它把構建AI應用所需的各種元件封裝成標準化的Spring Bean，讓Java開發者能夠用熟悉的方式構建AI應用，無需切換到Python生態。​

為什麼需要SpringAI？​

在SpringAI出現之前，Java開發者構建AI應用面臨諸多挑戰：​

​



| 挑戰 | 傳統方式 | 使用SpringAI |
| --- | --- | --- |
| 模型呼叫 | 手動封裝HTTP請求，處理各種API差異 | 統一的ChatClient介面，一行程式碼切換模型 |
| 提示詞管理 | 硬編碼字串，難以維護 | 模板化管理，支援動態變數 |
| 對話記憶 | 手動管理上下文，容易丟失 | 內建ChatMemory元件，自動管理 |
| 向量儲存 | 需要學習各種向量資料庫API | 統一的VectorStore抽象層 |
| 工具呼叫 | 需要自行實現函式呼叫邏輯 | @Tool註解，宣告式定義 |
| 生產就緒 | 需要自行實現監控、日誌、快取 | 內建可觀測性、Advisors機制 |



​

SpringAI的核心價值：​

1）Java原生：無需切換到Python，保持端到端Java開發體驗​

2）Spring整合：無縫嵌入Spring Boot，支援自動裝配和Starter​

3）多提供商支援：統一API接入20+AI服務，避免供應商鎖定​

4）企業級特性：工具呼叫、RAG、評估框架，解決幻覺和安全性問題​

1.2 SpringAI在AI Agent開發中的地位​

在Java生態的AI Agent技術棧中，SpringAI處於應用層框架的核心位置：​

​

Code block​

Plain Text

┌─────────────────────────────────────────────┐​

│ 應用層（Spring Boot應用） │​

├─────────────────────────────────────────────┤​

│ Agent框架層（SpringAI） │​

│ ┌─────────┬─────────┬─────────┬─────────┐ │​

│ │ChatClient│ Advisors│ Memory │ Tools │ │​

│ └─────────┴─────────┴─────────┴─────────┘ │​

├─────────────────────────────────────────────┤​

│ 模型層（DeepSeek/GPT等） │​

├─────────────────────────────────────────────┤​

│ 資料層（向量資料庫/知識庫） │​

└─────────────────────────────────────────────┘​

​

SpringAI的核心價值在於：​

•

標準化介面：統一了不同模型廠商的呼叫方式，透過ChatClient介面實現可移植性​

•

元件化設計：每個功能都是獨立的Spring Bean，可以靈活組合和替換​

•

生態豐富：整合了20+向量資料庫、20+AI模型提供商​

•

生產就緒：內建可觀測性、快取、重試、評估等企業級特性​

SpringAI支援的主要AI提供商：​

​



| 類別 | 提供商示例 | 支援功能 |
| --- | --- | --- |
| 聊天/LLM | OpenAI、Anthropic、DeepSeek、Ollama | 聊天、流式、工具呼叫 |
| 嵌入模型 | OpenAI、Hugging Face、Cohere | 文字向量化 |
| 向量資料庫 | Pinecone、Weaviate、Redis、PGVector | 向量儲存與檢索 |
| 多模態 | OpenAI、Google Gemini | 影象、音訊處理 |



​

1.3 SpringAI與LangChain的對比分析​

作為Java和Python生態中最主流的AI應用框架，SpringAI和LangChain各有優勢：​

​



| 對比維度 | SpringAI | LangChain |
| --- | --- | --- |
| 程式語言 | Java/Kotlin | Python/JavaScript |
| 框架基礎 | Spring Boot | 獨立框架 |
| 學習曲線 | Java開發者友好 | Python開發者友好 |
| 企業級特性 | 強（Spring生態） | 中（需要額外整合） |
| 社群活躍度 | 快速增長 | 非常活躍 |
| 模型支援 | 20+提供商 | 100+提供商 |
| 向量資料庫 | 20+種 | 50+種 |
| 生產就緒 | 高（內建監控、快取） | 中（需要額外配置） |
| 適用場景 | 企業級Java應用 | 快速原型、Python專案 |



​

選擇建議：​

•

選擇SpringAI：團隊以Java為主、需要與現有Spring應用整合、注重企業級特性和生產穩定性​

•

選擇LangChain：團隊以Python為主、需要快速原型驗證、需要更豐富的第三方整合​

經驗分享：​

很多開發者會問："既然LangChain這麼流行，為什麼還要用SpringAI？"答案很簡單：技術棧一致性。如果你的團隊已經在使用Spring Boot構建微服務，那麼引入SpringAI可以無縫整合到現有架構中，利用Spring的依賴注入、AOP、事務管理等特性，而無需引入Python執行時。​

二、SpringAI核心元件​

2.1 模型客戶端（Model Client）​

模型客戶端是SpringAI最基礎的元件，負責與大模型進行互動。SpringAI提供了統一的ChatClient介面，遮蔽了不同模型提供商的API差異。​

1）ChatClient介面​

ChatClient是SpringAI的核心抽象，類似於Spring WebFlux中的WebClient，提供了流式和同步兩種呼叫方式：​

​

Code block​

Java

​

ChatClient的核心方法：​

​



| 方法 | 說明 | 使用場景 |
| --- | --- | --- |
| user() | 設定使用者訊息 | 傳送使用者輸入 |
| system() | 設定系統提示詞 | 定義AI角色和行為 |
| call() | 同步呼叫 | 簡單的請求-響應場景 |
| stream() | 流式呼叫 | 實時輸出、長文字生成 |
| content() | 獲取文字內容 | 獲取AI回覆 |
| entity() | 獲取結構化物件 | 解析為Java物件 |



​

2）DeepSeek模型整合示例​

在Spring Boot專案中整合DeepSeek模型非常簡單：​

步驟1：新增依賴​

​

Code block​

XML

<!-- pom.xml -->​

<dependency\>​

<groupId\>org.springframework.ai</groupId\>​

<artifactId\>spring-ai-openai-spring-boot-starter</artifactId\>​

</dependency\>​

​

步驟2：配置API金鑰​

​

Code block​

YAML

\# application.yml​

spring:​

ai:​

openai:​

api-key: ${DEEPSEEK\_API\_KEY}​

base-url: https://api.deepseek.com​

chat:​

options:​

​

步驟3：使用ChatClient​

​

Code block​

Java

​

引數說明：​

•

temperature：控制輸出的隨機性。值越小，輸出越確定；值越大，輸出越多樣。安全場景建議使用較低值（0.3-0.7）。​

•

max\_tokens：最大輸出token數。根據任務複雜度調整。​

•

model：模型名稱。DeepSeek提供deepseek-chat（通用）和deepseek-coder（程式碼專用）。​

3）多模型支援​

SpringAI支援同時配置多個模型，透過@Qualifier註解指定使用哪個模型：​

​

Code block​

Java

​

2.2 提示詞模板（Prompt Template）​

提示詞模板用於動態生成提示詞，避免硬編碼，提高程式碼可維護性。​

1）基本模板使用​

​

Code block​

Java

​

2）系統提示詞與角色定義​

系統提示詞用於定義AI的行為和角色，是構建專業AI應用的關鍵：​

​

Code block​

Java

​

提示詞設計經驗：​

•

明確角色：告訴AI它是誰，具備什麼能力​

•

定義格式：指定輸出格式，便於後續處理​

•

提供示例：透過Few-Shot示例引導AI輸出​

•

設定約束：明確AI的行為邊界和限制​

2.3 輸出解析器（Output Parser）​

輸出解析器用於將AI的文字輸出轉換為結構化的Java物件，便於程式處理。​

1）結構化輸出​

​

Code block​

Java

// StructuredOutputDemo.java​

@Service​

public class StructuredOutputDemo {​

​

private final ChatClient chatClient;​

​

public StructuredOutputDemo(ChatClient.Builder builder) {​

this.chatClient = builder.build();​

}​

​

public VulnerabilityReport analyzeCode(String code) {​

return chatClient.prompt()​

.user("分析以下程式碼的安全漏洞：" + code)​

.call()​

.entity(VulnerabilityReport.class);​

}​

}​

​

// VulnerabilityReport.java​

public record VulnerabilityReport(​

String vulnerabilityType,​

String severity,​

String description,​

String recommendation,​

List<String> affectedLines​

) {}​

​

2）JSON格式輸出​

​

Code block​

Java

​

2.4 向量儲存（Vector Store）​

向量儲存是實現RAG（檢索增強生成）的基礎，用於儲存和檢索文字的向量表示。​

1）向量儲存抽象​

SpringAI提供了統一的VectorStore介面，支援20+種向量資料庫：​

​

Code block​

Java

​

2）支援的向量資料庫​

​



| 向量資料庫 | 特點 | 適用場景 |
| --- | --- | --- |
| PGVector | 基於PostgreSQL，成熟穩定 | 企業級應用 |
| Redis | 高效能，支援快取 | 實時檢索場景 |
| Pinecone | 雲託管，易擴充套件 | 快速上線專案 |
| Weaviate | 支援多模態 | 複雜檢索需求 |
| Milvus | 開源，高效能 | 大規模資料 |
| Chroma | 輕量級，易部署 | 原型驗證 |



​

3）文件處理流程​

SpringAI內建了完整的文件ETL（提取、轉換、載入）框架：​

​

Code block​

Java

​

文件處理最佳實踐：​

•

分塊大小：根據模型的上下文視窗調整，一般800-1500 tokens​

•

重疊比例：建議10-20%的重疊，確保上下文連續性​

•

後設資料：新增來源、時間、類別等後設資料，便於後續過濾​

三、SpringAI安全應用場景​

3.1 安全日誌分析系統​

安全日誌分析是SpringAI在網路安全領域的典型應用場景。透過AI模型，可以自動識別日誌中的異常行為和潛在威脅。​

1）系統架構​

​

Code block​

Plain Text

┌─────────────────────────────────────────────┐​

│ 安全日誌分析系統 │​

├─────────────────────────────────────────────┤​

│ 日誌採集 → 日誌解析 → AI分析 → 告警生成 │​

├─────────────────────────────────────────────┤​

│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │​

│ │ Filebeat │ │ SpringAI │ │ 告警中心 │ │​

│ └─────────┘ └─────────┘ └─────────┘ │​

├─────────────────────────────────────────────┤​

│ 向量資料庫（歷史日誌） │​

└─────────────────────────────────────────────┘​

​

2）核心實現​

​

Code block​

Java

// SecurityLogAnalysisService.java​

@Service​

public class SecurityLogAnalysisService {​

​

3）日誌型別支援​

​



| 日誌型別 | 關鍵欄位 | 分析重點 |
| --- | --- | --- |
| Web訪問日誌 | IP、URL、狀態碼、User-Agent | 異常訪問模式、掃描行為 |
| 防火牆日誌 | 源IP、目標IP、埠、協議 | 埠掃描、異常連線 |
| 系統日誌 | 時間、程序、事件型別 | 異常程序、許可權提升 |
| 資料庫日誌 | 使用者、SQL語句、執行時間 | SQL隱碼攻擊、異常查詢 |



​

3.2 智慧漏洞檢測平臺​

智慧漏洞檢測平臺利用AI技術，自動分析程式碼和配置中的安全漏洞。​

1）程式碼漏洞檢測​

​

Code block​

Java

​

2）配置安全檢測​

​

Code block​

Java

​

3.3 威脅情報分析系統​

威脅情報分析系統利用AI技術，自動處理和分析威脅情報資料，幫助安全團隊快速響應威脅。​

1）情報資料處理​

​

Code block​

Java

// ThreatIntelligenceService.java​

@Service​

public class ThreatIntelligenceService {​

​

private final ChatClient chatClient;​

private final VectorStore vectorStore;​

​

public ThreatIntelligenceService(​

ChatClient.Builder builder,​

VectorStore vectorStore) {​

this.chatClient = builder​

.defaultSystem("""​

你是一個威脅情報分析專家，擅長分析各種威脅情報資料。​

​

分析能力：​

1\. 識別IOC（入侵指標）​

2\. 關聯攻擊活動​

​

2）IOC自動提取​

​

Code block​

Java

​

四、SpringAI實戰專案​

4.1 環境搭建與配置​

1）開發環境要求​

​



| 環境 | 版本要求 | 說明 |
| --- | --- | --- |
| JDK | 21+ | Spring Boot 4.0要求 |
| Spring Boot | 3.4+ | SpringAI 1.x要求 |
| Maven | 3.9+ | 構建工具 |
| IDE | IntelliJ IDEA | 推薦使用 |



​

2）專案初始化​

使用Spring Initializr建立專案，選擇以下依賴：​

​

Code block​

XML

<!-- pom.xml -->​

<parent\>​

<groupId\>org.springframework.boot</groupId\>​

<artifactId\>spring-boot-starter-parent</artifactId\>​

<version\>3.4.0</version\>​

</parent\>​

​

<dependencies\>​

<!-- Spring Boot Web -->​

<dependency\>​

​

3）配置檔案​

​

Code block​

YAML

​

4.2 DeepSeek模型整合​

1）配置類​

​

Code block​

Java

​

2）服務類​

​

Code block​

Java

​

4.3 智慧安全配置審計系統開發​

1）系統架構​

智慧安全配置審計系統是一個基於SpringAI的安全配置檢查工具，能夠自動分析伺服器、資料庫、網路裝置等安全配置，識別潛在的安全風險，並提供修復建議。​

系統架構圖：​

​

Code block​

Plain Text

┌─────────────────────────────────────────────────────┐​

│ 智慧安全配置審計系統 │​

├─────────────────────────────────────────────────────┤​

│ 配置採集 → 格式解析 → AI審計 → 報告生成 → 修復建議 │​

├─────────────────────────────────────────────────────┤​

│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │​

│ │ 配置採集器 │ │ SpringAI │ │ 報告生成器 │ │​

│ └──────────┘ └──────────┘ └──────────┘ │​

├─────────────────────────────────────────────────────┤​

​

2）核心模型定義​

​

Code block​

Java

​

3）配置採集器​

​

Code block​

Java

​

4）AI審計服務​

​

Code block​

Java

​

5）REST API控制器​

​

Code block​

Java

​

6）安全基線初始化​

​

Code block​

Java

​

7）啟動類​

​

Code block​

Java

// SecurityAuditApplication.java​

@SpringBootApplication​

public class SecurityAuditApplication {​

​

public static void main(String\[\] args) {​

SpringApplication.run(SecurityAuditApplication.class, args);​

}​

}​

​

8）測試示例​

​

Code block​

Bash

​

五、SpringAI安全風險與防護​

5.1 API金鑰安全管理​

API金鑰是訪問AI服務的憑證，一旦洩露可能導致嚴重的安全問題。​

1）金鑰儲存最佳實踐​

​



| 儲存方式 | 安全等級 | 適用場景 |
| --- | --- | --- |
| 環境變數 | 中 | 開發環境 |
| 配置中心 | 高 | 生產環境 |
| 金鑰管理服務 | 最高 | 企業級應用 |



​

2）Spring Security整合​

​

Code block​

Java

// ApiKeySecurityConfig.java​

@Configuration​

@EnableWebSecurity​

public class ApiKeySecurityConfig {​

​

@Value("${app.api.key}")​

private String apiKey;​

​

@Bean​

public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {​

http​

.csrf(csrf -> csrf.disable())​

.authorizeHttpRequests(auth -> auth​

.requestMatchers("/api/audit/\*\*").authenticated()​

.anyRequest().permitAll()​

)​

.addFilterBefore(new ApiKeyAuthFilter(apiKey), ​

UsernamePasswordAuthenticationFilter.class);​

return http.build();​

}​

}​

​

// ApiKeyAuthFilter.java​

public class ApiKeyAuthFilter extends OncePerRequestFilter {​

​

private static final String API\_KEY\_HEADER \= "X-API-Key";​

​

3）配置加密​

​

Code block​

Java

​

5.2 輸入輸出過濾與驗證​

1）輸入驗證​

​

Code block​

Java

​

2）輸出過濾​

​

Code block​

Java

​

5.3 模型呼叫安全防護​

1）速率限制​

​

Code block​

Java

​

2）呼叫監控​

​

Code block​

Java

​

3）異常處理​

​

Code block​

Java

​

六、SpringAI與企業級安全架構​

6.1 微服務整合方案​

1）服務架構​

​

Code block​

Plain Text

​

2）服務間通訊​

​

Code block​

Java

​

6.2 許可權控制與審計​

1）RBAC許可權模型​

​

Code block​

Java

// SecurityAuditPermission.java​

@Entity​

@Table(name = "audit\_permissions")​

@Data​

public class SecurityAuditPermission {​

​

@Id​

@GeneratedValue(strategy = GenerationType.IDENTITY)​

private Long id;​

​

​

2）操作審計日誌​

​

Code block​

Java

// AuditLog.java​

@Entity​

@Table(name = "audit\_logs")​

@Data​

public class AuditLog {​

​

@Id​

@GeneratedValue(strategy = GenerationType.IDENTITY)​

private Long id;​

​

private String userId;​

private String action;​

private String resourceType;​

private String resourceId;​

private String details;​

private String ipAddress;​

private LocalDateTime timestamp;​

private String status; // SUCCESS, FAILURE​

}​

​

// AuditLogService.java​

@Service​

@Slf4j​

public class AuditLogService {​

​

private final AuditLogRepository auditLogRepository;​

​

public void logAction(String userId, String action, String resourceType,​

String resourceId, String details, String ipAddress) {​

AuditLog auditLog \= new AuditLog();​

auditLog.setUserId(userId);​

auditLog.setAction(action);​

​

6.3 效能最佳化與監控​

1）快取策略​

​

Code block​

Java

// CacheConfig.java​

@Configuration​

@EnableCaching​

public class CacheConfig {​

​

@Bean​

​

2）效能監控​

​

Code block​

Java

// PerformanceMonitor.java​

@Component​

@Slf4j​

public class PerformanceMonitor {​

​

private final MeterRegistry meterRegistry;​

private final Timer aiCallTimer;​

private final DistributionSummary tokenUsage;​

​

public PerformanceMonitor(MeterRegistry meterRegistry) {​

this.meterRegistry = meterRegistry;​

this.aiCallTimer = Timer.builder("spring.ai.call.duration")​

.description("AI model call duration")​

.publishPercentiles(0.5, 0.95, 0.99)​

.register(meterRegistry);​

this.tokenUsage = DistributionSummary.builder("spring.ai.token.usage")​

.description("Token usage per call")​

.register(meterRegistry);​

}​

​

public void recordCall(long durationMs, int tokensUsed) {​

aiCallTimer.record(Duration.ofMillis(durationMs));​

tokenUsage.record(tokensUsed);​

}​

}​

​

// HealthCheckController.java​

​

3）日誌配置​

​

Code block​

YAML

\# logback-spring.xml​

<?xml version="1.0" encoding="UTF-8"?>​

<configuration>​

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">​

<encoder>​

<pattern>%d{yyyy-MM-dd HH:mm:ss} \[%thread\] %-5level %logger{36} \- %msg%n</pattern>​

</encoder>​

</appender>​

​

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">​

<file>logs/spring-ai-audit.log</file>​

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">​

<fileNamePattern>logs/spring-ai-audit.%d{yyyy-MM-dd}.log</fileNamePattern>​

<maxHistory>30</maxHistory>​

</rollingPolicy>​

<encoder>​

<pattern>%d{yyyy-MM-dd HH:mm:ss} \[%thread\] %-5level %logger{36} \- %msg%n</pattern>​

</encoder>​

</appender>​

​

<logger name="org.springframework.ai" level="DEBUG"/>​

<logger name="com.security.audit" level="INFO"/>​

​

<root level="INFO">​

<appender-ref ref="CONSOLE"/>​

​

七、總結與展望​

7.1 SpringAI的優勢與侷限​

核心優勢：​

1）Java生態無縫整合：對於已有的Spring Boot應用，SpringAI可以零成本整合，無需引入Python執行時​

2）企業級特性完善：內建可觀測性、快取、重試、評估等生產就緒特性​

3）多模型支援廣泛：統一API接入20+AI服務，避免供應商鎖定​

4）社群活躍：Spring官方支援，版本迭代快速，2025年已釋出1.0 GA和1.1 GA​

當前侷限：​

1）生態成熟度：相比LangChain，第三方整合和社群資源相對較少​

2）學習曲線：需要同時掌握Spring和AI概念​

3）效能開銷：Spring框架本身有一定開銷，對延遲敏感場景需要最佳化​

7.2 未來發展趨勢​

技術趨勢：​

1）MCP協議普及：Model Context Protocol將成為AI應用間通訊的標準協議​

2）多模態支援增強：影象、音訊、影片處理能力將更加完善​

3）Agent框架成熟：SpringAI Agents專案將提供更強大的智慧體構建能力​

4）評估工具完善：SpringAI Bench將提供標準化的AI應用評估框架​

應用趨勢：​

1）安全領域深入應用：AI驅動的安全運營、威脅檢測、漏洞挖掘將更加普及​

2）企業級AI平臺：SpringAI將成為Java企業構建AI應用的標準選擇​

3）低程式碼整合：與Spring Cloud Data Flow等工具整合，實現AI工作流的低程式碼編排​

7.3 學習資源推薦​

官方資源：​

•

[Spring AI官方文件](https://docs.spring.io/spring-ai/reference/)​

•

[Spring AI GitHub倉庫](https://github.com/spring-projects/spring-ai)​

•

[Spring AI示例專案](https://github.com/spring-projects/spring-ai-examples)​

社群資源：​

•

[Spring AI Community](https://springaicommunity.mintlify.app/)​

•

[Spring中國社群](https://springframework.org.cn/)​

實踐建議：​

1.

從簡單開始：先實現一個簡單的聊天應用，熟悉ChatClient的使用​

2.

循序漸進：逐步新增記憶、工具呼叫、RAG等高階特性​

3.

關注安全：在生產環境中，務必做好API金鑰管理、輸入驗證、訪問控制​

4.

持續學習：關注SpringAI的版本更新，及時應用新特性和安全修復​

​

​

本文回顧：​

本文全面介紹了SpringAI框架在網路安全領域的應用，從框架概述、核心元件到實戰專案，再到安全防護和企業級架構，為Java開發者提供了完整的SpringAI安全應用開發指南。​

透過智慧安全配置審計系統的實戰案例，展示瞭如何利用SpringAI構建企業級安全工具，實現了配置採集、AI審計、報告生成的完整流程。​

SpringAI作為Java生態的AI應用框架，正在快速發展和完善。對於Java開發者來說，掌握SpringAI將是進入AI時代的重要技能。​

​

​

作者：無涯​