【SpringAI】4.多模態提問

SpringAI多模態提問

概述

SpringAI支持多模態輸入,允許AI模型同時處理文本和圖像內容。這對于需要視覺理解的AI應用場景非常有用,如圖像描述、視覺問答、圖像分析等。
在這里插入圖片描述

核心概念

1. Media類

SpringAI使用Media類來表示多模態內容,支持圖像、音頻、視頻等多種媒體類型。

2. UserMessage構建器

通過UserMessage.builder()可以構建包含媒體內容的消息,支持同時傳遞文本和媒體文件。

關鍵代碼實現

1. 多模態消息構建
@PostMapping(value = "/generateStreamWithFile", consumes = "application/json", produces = "text/event-stream;charset=UTF-8")
public Flux<FluxVO> generateStreamWithFile(@RequestBody QuestionVO body) {String model = body.getModel();// 1. 將Base64編碼的圖像轉換為Media對象List<Media> mediaList = new ArrayList<>();for (String fileBase64 : body.getFilebase64s()) {// 解碼Base64字符串為字節數組byte[] imageBytes = Base64.getDecoder().decode(fileBase64);// 創建ByteArrayResource包裝字節數組ByteArrayResource imageResource = new ByteArrayResource(imageBytes);// 創建Media對象,指定MIME類型為PNG圖像mediaList.add(new Media(MimeTypeUtils.IMAGE_PNG, imageResource));}// 2. 構建消息列表List<Message> messageList = new ArrayList<>();UserMessage userMessage;// 3. 根據是否有媒體內容選擇不同的消息構建方式if (!mediaList.isEmpty()) {// 構建包含媒體內容的多模態消息userMessage = UserMessage.builder().text(body.getMessage())        // 設置文本內容.media(mediaList)               // 設置媒體內容列表.build();} else {// 構建純文本消息userMessage = new UserMessage(body.getMessage());}messageList.add(userMessage);// 4. 添加系統提示詞String systemPrompt = body.getSystemPrompt();String finalSystemPrompt = (systemPrompt != null && !systemPrompt.trim().isEmpty())? systemPrompt: "中文回答";messageList.add(new SystemMessage(finalSystemPrompt));// 5. 獲取指定模型并生成響應DynamicModelFactory.MyModel myModel = dynamicModelFactory.getModelByName(model);if (myModel == null) {throw new RuntimeException("未找到指定模型: " + model);}// 6. 自定義處理流式輸出內容return getFluxVOFlux(messageList, myModel);
}

注意事項

  1. 接口一定要是POST接口,避免消息報文超大
  2. 文件大小限制:需要考慮模型的處理能力
  3. 模型兼容性:確保使用的模型支持多模態輸入
  4. 性能考慮:圖像處理可能比純文本慢,盡可能不要傳遞過多的歷史消息作為上下文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912856.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912856.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912856.shtml

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

相關文章

自動化提示工程:未來AI優化的關鍵突破

自動化提示工程:未來AI優化的關鍵突破 自動化提示工程能夠自動化或半自動化地生成或優化提示詞,以探索大規模的提示詞組合,并通過 自動優化技術提升提示詞生成的穩定性? 依據自動化提示工程實現形式在邏輯推理和效能導向 兩個維度的取舍上,將其分為基于思維鏈的自動化提示工…

多模態大語言模型arxiv論文略讀(148)

A Comprehensive Survey and Guide to Multimodal Large Language Models in Vision-Language Tasks ?? 論文標題&#xff1a;A Comprehensive Survey and Guide to Multimodal Large Language Models in Vision-Language Tasks ?? 論文作者&#xff1a;Chia Xin Liang, P…

關于.net core開發的實體所有注解詳解

以下是對 .NET Core 開發中實體類&#xff08;用于數據模型&#xff09;和 Web API 控制器/方法&#xff08;用于定義接口&#xff09;常用注解屬性&#xff08;Attributes&#xff09;的詳細說明與示例&#xff0c;涵蓋數據驗證、API 行為控制、序列化、Swagger/OpenAPI 文檔生…

【安全工具】SQLMap 使用詳解:從基礎到高級技巧

目錄 簡介 一、安裝與基礎配置 1. 安裝方法 2. 基本語法 二、基礎掃描技術 1. 簡單檢測 2. 指定參數掃描 3. 批量掃描 三、信息收集 1. 獲取數據庫信息 2. 獲取當前數據庫 3. 獲取數據庫用戶 4. 獲取數據庫版本 四、數據提取技術 1. 列出所有表 2. 提取表數據 …

Redis大Key拆分實戰指南:從問題定位到落地優化

引言 最近在項目里遇到一個棘手問題&#xff1a;生產環境的Redis突然變“卡”了&#xff01;查詢延遲從幾毫秒飆升到幾百毫秒&#xff0c;監控面板顯示某個節點CPU使用率飆到90%。排查半天才發現&#xff0c;原來是某個用戶訂單的Hash Key太大了——單Key存了100多萬個訂單字段…

RabbitMQ簡單消息發送

RabbitMQ簡單消息發送 簡單代碼實現RabbitMQ消息發送 需要的依賴 <!--rabbitmq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId><version>x.x.x</version>&l…

【閱讀筆記】基于雙邊濾波改進的空域濾波算法

一、雙邊濾波空域濾波算法 雙邊濾波是一種典型的非線性濾波算法。基于高斯濾波&#xff0c;雙邊濾波利用強度的變化來保存邊緣信息&#xff0c;解決了邊緣模糊在視覺觀感上認為重要信息丟失的問題。雙邊濾波的濾波效果主要取決于兩個參數&#xff1a;兩個像素的空間鄰近性和灰…

華為交換機堆疊與集群技術深度解析附帶腳本

一、引言 在企業園區網、數據中心等網絡場景中&#xff0c;為了提升網絡的可靠性、擴展性和管理效率&#xff0c;華為交換機提供了堆疊&#xff08;Stack&#xff09;和集群&#xff08;CSS&#xff0c;Cluster Switch System &#xff09;技術。這兩種技術能夠將多臺物理交換…

Python網絡爬蟲(十三)- 數據解析模塊 BeautifulSoup

1、BS4簡介 BeautifulSoup(簡稱 BS4) 是一個用于解析 HTML 和 XML 文檔的 Python 第三方庫。它能夠從網頁或其他 HTML/XML 格式的文本中提取數據,并將其轉換為結構化的對象,方便開發者快速定位、提取和操作所需信息。它的核心功能是通過解析器將無序的標記語言轉換為樹形結…

如何使用 Pytorch Lightning 啟用早停機制

【PL 基礎】如何啟用早停機制 摘要1. on_train_batch_start()2. EarlyStopping Callback 摘要 本文介紹了兩種在 PyTorch Lightning 中實現早停機制的方法。第一種是通過重寫on_train_batch_start()方法手動控制訓練流程&#xff1b;第二種是使用內置的EarlyStopping回調&#…

深入理解前綴和與差分算法及其C++實現

前綴和與差分是算法競賽和編程中非常重要的兩種技巧&#xff0c;它們能夠高效地處理區間查詢和區間更新問題。本文將詳細介紹這兩種算法的原理、應用場景以及C實現。 一、前綴和算法 1.1 前綴和的基本概念 前綴和&#xff08;Prefix Sum&#xff09;是一種預處理技術&#x…

HugeGraph【部署】Linux單機部署

注: hugegraph從版本 1.5.0 開始&#xff0c;需要 Java11 運行時環境 一、安裝JDK11 1.下載JDK11 https://www.oracle.com/java/technologies/downloads/#java11 2.解壓縮包 tar -zxvf jdk-11.0.27_linux-x64_bin.tar.gz 3.修改/etc/profile環境變量 export JAVA_HOME/usr…

C++異步編程里避免超時機制

C標準庫中時鐘&#xff08;Clock&#xff09; 這段內容主要介紹了C標準庫中**時鐘&#xff08;Clock&#xff09;**的概念和分類&#xff0c;以及它們在時間測量中的作用。以下是關鍵信息的解讀&#xff1a; 一、時鐘的核心特性 C中的時鐘是一個類&#xff0c;提供以下四個基…

npm install安裝不成功(node:32388)怎么解決?

如果在執行 npm install 時出現問題&#xff0c;尤其是 node:32388 相關的錯誤&#xff0c;這通常意味著某些依賴或配置出了問題。這里有一些常見的解決方法&#xff0c;你可以嘗試&#xff1a; 1. 清除 npm 緩存 有時候&#xff0c;npm 緩存問題會導致安裝失敗。你可以清除 …

Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list 更換國內鏡像軟件源 筆記250702

Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list更換國內鏡像軟件源 筆記250702 為 Ubuntu 18.04 LTS&#xff08;代號 Bionic Beaver&#xff09;更換 /etc/apt/sources.list 為國內鏡像源 備份/etc/apt/sources.list文件 sudo cp -a /etc/apt/sources.list /etc/apt/sou…

【運維系列】【ubuntu22.04】安裝GitLab

一.下載安裝文件 rootgitlab:~# wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/9/gitlab-ce-17.4.0-ce.0.el9.x86_64.rpm二.執行安裝腳本 2.1 先執行安裝前的命令 rootgitlab:~# apt install -y perl-interpreter rootgitlab:~# apt install -y openssh-s…

Cisco ASA防火墻查看ACL的條目數量

這里顯示的條目數量為ACE, ACE是啥&#xff1f; ACE全稱&#xff1a; access-list entry ACE指的是ACL條目展開后的數量&#xff0c; 啥叫展開&#xff1f; 示例&#xff1a; access-list out-in extend permit tcp80&443 host 1.1.1.1 host 2.2.2.2這種配置是占1條&#…

npm install安裝的node_modules是什么

node_modules 是一個由 npm&#xff08;Node Package Manager&#xff09;管理的文件夾&#xff0c;存放著你的 Node.js 項目中所有安裝的依賴包。當你運行 npm install 時&#xff0c;npm 會根據你的項目中 package.json 文件中的依賴配置&#xff0c;下載并安裝相應的包到 no…

【實時Linux實戰系列】實時Linux項目的部署與維護

在實時 Linux 項目的開發過程中&#xff0c;開發階段的工作僅僅是開始&#xff0c;生產環境中的部署與維護同樣至關重要。實時 Linux 系統廣泛應用于工業自動化、航空航天、智能交通等對實時性和穩定性要求極高的領域。例如&#xff0c;在工業自動化中&#xff0c;實時系統的部…

Go并發模式精要:掌握Goroutine與Channel的實戰藝術

在現代軟件開發中&#xff0c;有效利用并發能力已成為提升系統性能的關鍵。Go語言憑借其原生的Goroutine和Channel機制&#xff0c;為開發者提供了優雅的并發解決方案。本文將深入解析Go并發編程的核心模式與最佳實踐。 一、并發基石&#xff1a;Goroutine與Channel // 輕量級…