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.pswp.cn/pingmian/93898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93898.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI重塑校園教育:中小學AI智慧課堂定制方案+AI作業批改減負,告別一刀切學生進步快

家長們&#xff0c;你有沒有聽過孩子抱怨上學的煩惱&#xff1f;課堂上老師講的內容&#xff0c;有的同學覺得太簡單 “吃不飽”&#xff0c;有的卻跟不上 “聽不懂”&#xff1b;放學后作業堆成山&#xff0c;老師要熬夜批改到半夜&#xff0c;錯題反饋要等第二天才能拿到&…

舊物循環,交易新生——舊物回收二手交易小程序,引領綠色消費新風尚

在資源日益緊張、環境污染問題日益突出的今天&#xff0c;綠色消費已經成為時代發展的必然趨勢。舊物回收二手交易小程序&#xff0c;作為綠色消費的重要載體&#xff0c;正以其獨特的優勢和魅力&#xff0c;引領著一場關于舊物循環、交易新生的綠色革命。一、舊物循環&#xf…

刷機維修進階教程-----如何清除云賬號 修復wifi 指南針 相機 指紋等刷機故障

在刷機、系統升級或降級過程中,是否遇到過以下問題:WiFi無法開啟、相機無響應、指南針或陀螺儀失靈 指紋等故障?另外,云賬號是否仍會保留,即使通過9008模式刷機也無法徹底清除?那么這篇博文都可以找到答案。 通過博文了解?????? 1??????----云賬號信息分區如…

AI翻唱實戰:用[靈龍AI API]玩轉AI翻唱 – 第6篇

歷史文章 [靈龍AI API] 申請訪問令牌 - 第1篇 [靈龍AI API] AI生成視頻API&#xff1a;文生視頻 – 第2篇 圖生視頻實戰&#xff1a;用[靈龍AI API]玩轉AI生成視頻 – 第2篇&#xff0c;從靜圖到大片 單圖特效實戰&#xff1a;用[靈龍AI API]玩轉AI生成視頻 – 第3篇&#…

大模型0基礎開發入門與實踐:第11章 進階:LangChain與外部工具調用

第11章 進階&#xff1a;LangChain與外部工具調用 1. 引言 在上一章&#xff0c;我們成功地創造了我們的第一個“生命”——一個可以對話的機器人。我們為它的誕生而興奮&#xff0c;但很快我們就會發現它的局限性。它就像一個被囚禁在玻璃房中的天才大腦&#xff0c;擁有淵博…

SQL 日期處理:深入解析與高效實踐

SQL 日期處理&#xff1a;深入解析與高效實踐 引言 在數據庫管理中&#xff0c;日期和時間數據的處理是不可或缺的一部分。SQL&#xff08;結構化查詢語言&#xff09;提供了豐富的日期和時間函數&#xff0c;使得對日期的處理變得既靈活又高效。本文將深入探討SQL日期處理的相…

源代碼部署 LAMP 架構

源代碼部署 LAMP 架構 &#xff08;Linux Apache MySQL PHP&#xff09; 一、LAMP 架構概述 LAMP 是一套經典的開源 Web 服務架構&#xff0c;通過源代碼安裝可實現高度定制化&#xff0c;適用于對軟件版本、功能模塊有特定需求的場景。本指南基于 CentOS 7 系統&#xf…

GO環境變量中GO111MODULE到底是干啥的?

查看GO111MODULE變量GO111MODULE的作用GO111MODULE的案例演示 一&#xff0c;查看GO111MODULE變量 ]# go env GO111MODULE 或者 ]# go env | grep GO111MODULE二&#xff0c;GO111MODULE的作用 auto : 自動判斷機制 當項目位于 $GOPATH/src 目錄外且包含 go.mod 文件時&…

在線培訓機構如何降低培訓視頻被盜錄的風險

每一節精心錄制的培訓視頻&#xff0c;都凝聚著講師的心血與機構的巨大投入。然而&#xff0c;只需一個簡單的錄屏軟件&#xff0c;這一切都可能被輕易竊取。一旦被盜取&#xff0c;不但會損失經濟利益&#xff0c;還可能會影響機構的聲譽。那么&#xff0c;在線培訓機構如何降…

Docker:安裝配置

目錄一、卸載舊版本二、配置Docker的yum庫三、安裝Docker3.1 在線安裝方式3.2 離線安裝方式四、配置阿里云鏡像加速【選配】五、Docker服務相關命令六、導出和導入鏡像官網 一、卸載舊版本 首先如果系統中已經存在舊版本的Docker&#xff0c;則先卸載&#xff1a; yum remov…

RabbitMQ:SpringAMQP 入門案例

目錄一、概述二、基礎配置三、生產者四、消費者一、概述 這是一篇Java集成RabbitMQ的入門案例&#xff0c;在這里我們做一個小案例&#xff0c;來體會一下RabbitMQ的魅力。 首先我們要做的就是創建一個生產者一個消費者&#xff1a; 生產者直接向RabbitMQ的隊列&#xff08;Q…

Ubuntu 下面安裝搜狗輸入法debug記錄

目錄0. 整體安裝流程1. 在鍵盤輸入法系統中&#xff0c;沒有“fcitx”選項解決方法0. 整體安裝流程 詳細的Ubuntu搜狗輸入法安裝指南請參考官方教程&#xff1a;Ubuntu搜狗輸入法安裝指南 1. 在鍵盤輸入法系統中&#xff0c;沒有“fcitx”選項 即使是安裝完 fcitx&#xff0…

Jenkins+GitLab在CentOS7上的自動化部署方案

最近在安裝jenkins實現微服務的自動發布&#xff0c;記錄配置過程以免再次踩坑。 Centos7環境準備 jenkins、gitlab配置&#xff0c;全程使用ftpuser普通用戶操作 &#xff08;1&#xff09;安裝好jdk并配置好環境變量 安裝路徑/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.…

打開或者安裝Navicat時出現Missing required library libcurl.dll,126報錯解決方法(libmysql_e.dll等)

提示 Missing required library libcurl.dll 出現原因是由于Navicat安裝目錄下libcurl.dll可能不能用了&#xff0c;下載該文件放到Navicat安裝目錄下即可。下載地址&#xff1a;libcurl.dll — download free for Windows 下載解壓包里只有個libcurl.dll 提示 Missing requir…

基于SpringBoot的流浪動物領養管理系統【2026最新】

作者&#xff1a;計算機學姐 開發技術&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源碼”。 專欄推薦&#xff1a;前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄&#xff1a;…

Qt實現TabWidget通過addTab函數添加的頁,頁內控件自適應窗口大小

前言&#xff1a;因為項目的要求&#xff0c;需要把幾個不同類型功能的界面集成在同一個窗口中&#xff0c;方便用戶不切換窗口&#xff0c;也能快捷的操作不同類型的功能。我首先想到的是通過選項卡方式&#xff0c;讓幾個類別的功能界面通過不同選項卡進行切換&#xff0c;這…

代碼隨想錄算法訓練營27天 | ??56. 合并區間、738.單調遞增的數字、968.監控二叉樹(提高)

題目鏈接&#xff1a;56. 合并區間、738.單調遞增的數字、968.監控二叉樹 文章鏈接&#xff1a;代碼隨想錄 貪心算法 1. 合并區間 &#xff08;待更新...&#xff09; class Solution { private:static bool cmp(const vector<int>& a, const vector<int>&…

從 H.264/H.265 到 H.266:RTSP播放器的跨代際演進

引言&#xff1a;H.266與實時視頻的交匯點 視頻編解碼的發展歷程&#xff0c;始終是 帶寬效率與視覺體驗的博弈。從 H.264 的普及&#xff0c;到 H.265/HEVC 的深化應用&#xff0c;每一次標準迭代&#xff0c;都在推動視頻向更高分辨率、更高幀率、更復雜場景的應用邁進。而 …

oc-mirror plugin v2 錯誤could not establish the destination for the release i

openshift 4.19使用的鏡像倉庫為harbor. 運行disk to registry時出現下面的錯誤&#xff1a; 2025/08/19 17:51:13 [ERROR] : [Executor] [release collector] could not establish the destination for the release image 備注&#xff1a; 我沒有賬戶&#xff0c;無法打開…

Android auncher3實現簡單的負一屏功能

Android launcher3實現簡單的負一屏功能 1.前言&#xff1a; 之前實現過Launcher3從湊提修改成單層&#xff0c;今天來講解一下如何實現一個簡單的負一屏功能&#xff0c;涉及的類如下&#xff0c;直接看代碼。 2.NegativeScreenAdapter&#xff1a; package com.example.ne…