1、背景
現代 AI 正以前所未有的速度改變著世界。它是基于復雜算法和強大計算能力的技術體系,涵蓋了機器學習、深度學習、自然語言處理等多個領域。
在日常生活中,AI 廣泛應用于智能語音助手、圖像識別、推薦系統等。比如,智能音箱能理解并回應語音指令,為人們提供信息查詢、音樂播放等服務;圖像識別技術助力醫療診斷,精準識別疾病。
在工業領域,AI 通過自動化流程提高生產效率、優化供應鏈管理。無人駕駛汽車的出現,更是對交通出行方式的變革性探索。
AI 的發展也帶來了諸多挑戰,如數據隱私、倫理問題等。但不可否認,它正不斷推動人類社會向智能化邁進 ,為生活和工作帶來無限可能 。
2、Spring Ai介紹
Spring AI 是一個專為 Java 開發者設計的面向 AI 大模型的開發框架。以下是對它的詳細介紹:
主要特性
豐富的模型支持:集成了 OpenAI、Microsoft、Amazon、Google 和 Huggingface 等多家主流的 AI 模型提供商,支持多種模型類型,如聊天機器人、文本到圖像轉換等,還提供了跨不同 AI 提供商的可移植 API,方便開發者在不同服務提供商之間切換
- 自然語言處理能力:提供豐富的 NLP 工具,可進行文本生成、情感分析、語音識別等,例如可以輕松地處理用戶輸入的文本,然后利用機器學習模型來預測用戶問題的意圖,最終給出相應的回答。
機器學習集成:允許開發者輕松加載、訓練和推理 AI 模型,能將訓練好的模型嵌入到 Spring 應用程序中,進行預測、分類、聚類等任務 - 圖像處理與計算機視覺:支持圖像識別、目標檢測、圖像分割等任務,為應用程序增加更多智能。
檢索增強生成(RAG):結合檢索和生成技術,提高生成內容的準確性和相關性。 函數調用:允許開發者自定義函數,使 AI
模型能夠與外部系統交互。 矢量數據庫集成:覆蓋了 Azure Vector
Search、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis
和 Weaviate 等主流的矢量數據庫引擎,并提供跨 Vector Store 提供程序的可移植 API 和類似 SQL 的元數據過濾器
API
優勢
簡化集成流程:提供簡單易用的 API 和工具,使得將人工智能功能集成到 Spring 應用程序中變得輕而易舉,開發者無需深入研究 AI 技術的細節,就可以快速實現復雜的 AI 功能。
提高開發效率:利用其豐富功能和工具,可更快地開發出功能強大的應用程序,大大縮短開發周期。
增強應用智能性:通過集成自然語言處理、機器學習、圖像識別等功能,使應用程序更加智能化,提升用戶體驗。
熟悉的開發環境:對于熟悉 Spring 框架的 Java 開發者來說,無需學習全新的工具或語言,能利用現有的開發技能和經驗快速上手 AI 項目。
應用場景
- 智能客服系統:可以通過自然語言處理理解用戶的問題,并給出相應的解答。
- 數據分析與預測:結合機器學習模型對大量數據進行分析和預測,如銷售趨勢預測、風險評估等。
- 圖像識別與處理:用于圖像識別、目標檢測、圖像分割等任務,如安防監控中的人臉識別、醫療影像分析等。
- 智能推薦系統:根據用戶的行為和偏好,利用機器學習算法進行個性化推薦。
3、spring ai使用
(1)使用前準備
導依賴
【這里用open ai做例子,若要使用其他模型,可以自行導入對于大模依賴】
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>自定義</version>
</dependency>
open ai官網地址
https://openai.com/
因為openai是國外的,所以調用比較耗時,所以各位可以使用中轉【中轉服務可以到淘寶等電商平臺購買】
以為用對接deepseek做例子實現對接【deepseek是兼容openai的springboot包】
(1)添加配置
spring:ai:openai:chat:options:model: deepseek-reasoner #【模型名稱】api-key: xxxxxxxxbase-url: https://api.deepseek.com
https://platform.deepseek.com/api_keys
備注:新注冊是會送¥10,若是老用戶,請自行充值對接使用
模型名稱 | 模型 |
---|---|
deepseek-chat | deepseek-v3 |
deepseek-reasoner | deepseek-r1 |
(2)注入bean
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SpringAiConfig {@Beanpublic ChatClient springAiClient(ChatClient.Builder chatClientBuilder) {return chatClientBuilder.build();}
}
(3)實現簡單對話
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.client.ChatClient;
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("/ai")
@RequiredArgsConstructor
public class AiController {private final ChatClient chatClient;@GetMapping("chat")public String chat(@RequestParam("mesg") String mesg) {return chatClient.prompt(