Amazon Bedrock Converse API:開啟對話式AI新體驗

Amazon Bedrock Converse API:開啟對話式AI新體驗

前言

在當今人工智能飛速發展的時代,對話式AI已成為眾多應用的核心組成部分。從智能客服到智能助手,對話式AI為用戶帶來了便捷且高效的交互體驗。而Amazon Bedrock Converse API的出現,更是為這一領域注入了強大的動力。它為對話式AI模型提供了統一接口,并具備一系列令人矚目的增強功能,如工具/函數調用、多模態輸入和流式響應等,使得開發者能夠更輕松地構建出功能強大、交互豐富的對話式AI應用。本文將深入探討Amazon Bedrock Converse API的各項特性、使用方法以及在實際項目中的應用示例,幫助讀者全面了解并掌握這一強大工具。

Amazon Bedrock Converse API 特性解析

強大的工具/函數調用功能

在對話期間,該API支持使用函數定義和工具。這意味著開發者可以讓模型在對話過程中調用特定的函數或工具,從而實現更復雜的任務。例如,通過定義一個天氣查詢函數,當用戶詢問天氣相關問題時,模型能夠自動調用該函數獲取準確的天氣信息并回復用戶。這種能力極大地拓展了對話式AI的應用場景,使其不再局限于簡單的文本交流,而是能夠真正解決用戶的實際問題。

多模態輸入處理能力

多模態輸入是Amazon Bedrock Converse API的一大亮點。它能夠在對話中同時處理文本和圖像輸入,甚至對于部分模型還支持視頻等其他格式的輸入。例如,對于支持視覺多模態的模型,如Amazon Nova、Anthropic Claude、Llama 3.2等,用戶可以發送包含圖像的消息,模型能夠分析圖像內容并結合文本問題生成準確的回答。這在圖像描述、圖像分析等領域具有巨大的應用潛力。同時,對于一些模型,還支持將文檔(如pdf、docx等)包含在有效負載中,實現基于文檔內容的問答和總結等功能。

實時流式響應

流式處理支持使得模型響應能夠實時返回給用戶。在傳統的對話式AI應用中,用戶往往需要等待模型完成整個處理過程后才能得到完整的回答,這在一些對響應速度要求較高的場景中可能會影響用戶體驗。而Amazon Bedrock Converse API的流式響應功能,能夠讓模型在生成回答的過程中就逐步將結果返回給用戶,大大提高了交互的實時性和流暢性。

系統消息支持

系統消息功能允許開發者設置系統級指令和上下文,為對話提供更豐富的背景信息。通過合理設置系統消息,模型能夠更好地理解用戶的意圖,給出更符合預期的回答。例如,可以設置模型的角色、對話的主題范圍等,使得模型在對話過程中始終保持在特定的語境中,避免回答偏離主題。

使用Amazon Bedrock Converse API 的步驟

前提條件準備

  1. 設置API訪問:首先需要按照Amazon Bedrock入門指南來設置API訪問,確保能夠順利調用API。
  2. 獲取AWS憑證:如果尚未配置AWS賬戶和AWS CLI,可以參考相關視頻指南(如“AWS CLI和SDK設置在不到4分鐘的時間內”)來獲取訪問密鑰和安全密鑰。
  3. 啟用要使用的模型:在Amazon Bedrock中,從左側的Model Access菜單中配置對所需模型的訪問權限。

自動配置項目

在Spring AI項目中,需要對自動配置、啟動模塊的artifact名稱進行相應調整(具體可參考升級說明)。然后添加spring - ai - starter - model - bedrock - converse依賴項到項目的Maven pom.xml或Gradle build.gradle文件中。同時,將Spring AI BOM添加到構建文件中以進行依賴管理。

配置聊天屬性

通過一系列屬性來配置與AWS Bedrock的連接。例如,“spring.ai.bedrock.aws.region”用于指定要使用的AWS區域,默認值為“us - east - 1”;“spring.ai.bedrock.aws.timeout”設置AWS超時時間,默認5分鐘等。此外,還需要配置AWS訪問密鑰、密鑰以及會話令牌等信息。啟用和禁用聊天自動配置通過“spring.ai.model.chat”屬性來控制,若要啟用Bedrock Converse聊天模型,可設置“spring.ai.model.chat = bedrock - converse”(默認啟用)。

運行時選項設置

可以使用便攜式ChatOptions或ToolCallingChatOptions來創建模型配置,如設置temperature、maxToken、topP等參數。在啟動時,可以通過構造函數或相關性能屬性來設置這些參數。在運行時,也可以通過向Prompt中添加特定配置來動態調整模型行為。

工具調用實現

為了實現工具調用功能,可以定義基于@Tool的工具類。例如,創建一個WeatherService類,通過在方法上添加@Tool注解來定義工具,然后在對話中通過ChatClient調用該工具。此外,也可以將java.util.function bean用作工具,通過在Spring中定義相應的bean并在ChatClient中指定工具名稱來使用。

多模態應用示例

在多模態方面,以圖像輸入為例,Spring AI的Message界面引入了Media類型來支持多模態輸入。通過以下代碼示例可以實現用戶文本與圖像的組合發送:

多模態測試圖像

String response = ChatClient.create(chatModel).prompt().user(u -> u.text("Explain what do you see on this picture?").media(Media.Format.IMAGE_PNG, new ClassPathResource("/test.png"))).call().content();

它將test.png圖像:

在這里插入圖片描述
以及文本消息“Explain what do you see on this picture?”,并生成如下響應:

The image shows a close-up view of a wire fruit basket containing several pieces of fruit.

類似地,對于視頻和文檔輸入,也有相應的代碼示例來展示如何將用戶文本與這些多模態數據結合,讓模型進行綜合處理并生成回答。

視頻

Amazon Nova 模型允許您在負載中包含單個視頻,該視頻可以采用 base64 格式或通過 Amazon S3 URI 提供。
目前,Bedrock Nova 支持video/x-matros,video/quicktime,video/mp4,video/video/webm,video/x-flv,video/mpeg,video/x-ms-wmv和image/3gppMIME 類型。

Spring AI 的Message界面通過引入Media`類型。 它包含有關消息中媒體附件的數據和信息,使用 Spring 的org.springframework.util.MimeType以及java.lang.Object對于原始媒體數據。

下面是一個簡單的代碼示例,演示了用戶文本與視頻的組合。

String response = ChatClient.create(chatModel).prompt().user(u -> u.text("Explain what do you see in this video?").media(Media.Format.VIDEO_MP4, new ClassPathResource("/test.video.mp4"))).call().content();logger.info(response);

它將test.video.mp4圖像:

多模態測試視頻

在這里插入圖片描述

以及文本消息“Explain what do you see in this video?”,并生成如下響應:

The video shows a group of baby chickens, also known as chicks, huddled together on a surface

文件

對于某些模型,Bedrock 允許您通過 Converse API 文檔支持將文檔包含在有效負載中,該支持可以以字節為單位提供。 文檔支持有兩種不同的變體,如下所述:

文本文檔類型(txt、csv、html、md 等),其中重點是文本理解。這些用例包括根據文檔的文本元素進行回答。
媒體文檔類型(pdf、docx、xlsx),其中重點是基于視覺的理解來回答問題。這些使用案例包括根據圖表、圖形等回答問題。
目前,Anthropic PDF 支持(測試版)和 Amazon Bedrock Nova 模型支持文檔多模態。

下面是一個簡單的代碼示例,演示了用戶文本與媒體文檔的組合。

String response = ChatClient.create(chatModel).prompt().user(u -> u.text("You are a very professional document summarization specialist. Please summarize the given document.").media(Media.Format.DOC_PDF, new ClassPathResource("/spring-ai-reference-overview.pdf"))).call().content();logger.info(response);

它將spring-ai-reference-overview.pdf公文:

多模態測試 PNG
在這里插入圖片描述
伴隨著短信“您是一位非常專業的文檔摘要專家。請總結給定的文檔“,并生成如下響應:

**Introduction:**
- Spring AI is designed to simplify the development of applications with artificial intelligence (AI) capabilities, aiming to avoid unnecessary complexity.

Samples控制器示例

創建一個新的Spring Boot項目,添加相關依賴并配置application.properties文件后,可以創建一個示例控制器來使用聊天模型。例如,下面的ChatController通過@Autowired注入ChatClient.Builder來構建ChatClient,并提供了兩個接口“/ai/generate”和“/ai/generateStream”,分別用于生成非流式和流式的對話響應。

@RestController
public class ChatController {private final ChatClient chatClient;@Autowiredpublic ChatController(ChatClient.Builder builder) {this.chatClient = builder.build();}@GetMapping("/ai/generate")public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {return Map.of("generation", this.chatClient.prompt(message).call().content());}@GetMapping("/ai/generateStream")public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {return this.chatClient.prompt(message).stream().content();}
}

總結

Amazon Bedrock Converse API憑借其豐富的功能特性,為對話式AI的開發提供了極大的便利。通過工具/函數調用,增強了模型解決實際問題的能力;多模態輸入功能使對話式AI能夠處理更豐富的數據類型,拓寬了應用領域;實時流式響應提升了用戶交互體驗;系統消息支持則為模型提供了更準確的上下文信息。在使用過程中,通過合理的前提條件準備、項目配置以及對各種功能的靈活運用,開發者能夠快速構建出高性能、智能化的對話式AI應用。然而,在實際應用中也可能會面臨一些挑戰,如多模態數據處理的復雜性、模型選擇與優化等問題。但總體而言,Amazon Bedrock Converse API為對話式AI的發展帶來了新的機遇,相信隨著技術的不斷進步和應用的深入拓展,它將在更多領域發揮重要作用,為用戶帶來更加智能、便捷的交互體驗。希望本文的介紹能夠幫助讀者快速上手并充分利用這一強大的API,在對話式AI開發領域取得更多的成果。

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

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

相關文章

【Springboot知識】Springboot計劃任務Schedule詳解

文章目錄 Spring Boot 定時任務從原理到實現詳解一、核心原理分析1. 架構分層2. 核心組件3. 線程模型 二、基礎實現步驟1. 添加依賴2. 主類配置3. 定時任務類 三、高級配置技巧1. 自定義線程池2. 動態配置參數3. 分布式鎖集成&#xff08;Redis示例&#xff09; 四、異常處理機…

MySQL:聯合查詢

目錄 一、笛卡爾積 ?二、內連接 三、外連接 &#xff08;1&#xff09;左外連接 &#xff08;2&#xff09;右外連接 &#xff08;3&#xff09;全外連接 四、自連接 五、子查詢 &#xff08;1&#xff09;單行子查詢 &#xff08;2&#xff09;多行子查詢 &…

深入理解 Cortex-M3 的內核寄存器組

每個 MCU 開發工程師一定都了解寄存器這個東西&#xff0c;以 STM32 為例&#xff0c;其擁有非常多的外設模塊&#xff0c;如串口、SPI、IIC 等等&#xff0c;如果要使用這些外設&#xff0c;使其按照我們的要求工作&#xff0c;就需要配置這些外設的寄存器&#xff0c;往這些寄…

網絡安全自動化:找準邊界才能筑牢安全防線

數字時代&#xff0c;企業每天要面對成千上萬的網絡攻擊。面對龐大的服務器群、分散的團隊和長期不重啟的設備&#xff0c;很多企業開始思考&#xff1a;哪些安全操作適合交給機器自動處理&#xff1f;哪些必須由人工把關&#xff1f;今天我們就用大白話聊聊這件事。 一、這些事…

C++負載均衡遠程調用學習之負載均衡算法與實現

目錄 01 lars 系統架構回顧 02 lars-lbAgentV0.4-route_lb處理report業務流程 03 lars-lbAgentV0.4-負責均衡判斷參數配置 04 lars-lbAgentV0.4-負載均衡idle節點的失敗率判斷 05 lars-lbAgentV0.4-負載均衡overload節點的成功率判斷 06 lars-lbAgentV0.4-負載均衡上報提交…

領略算法真諦: 多源bfs

嘿&#xff0c;各位技術潮人&#xff01;好久不見甚是想念。生活就像一場奇妙冒險&#xff0c;而編程就是那把超酷的萬能鑰匙。此刻&#xff0c;陽光灑在鍵盤上&#xff0c;靈感在指尖跳躍&#xff0c;讓我們拋開一切束縛&#xff0c;給平淡日子加點料&#xff0c;注入滿滿的pa…

雷電模擬器-超好用的Windows安卓模擬器

一、雷電模擬器介紹 雷電模擬器是一款功能強大的軟件&#xff0c;它能夠在電腦上模擬出安卓手機系統&#xff0c;讓你可以在電腦上運行各類手機應用及游戲。其采用虛擬安卓手機操作界面&#xff0c;為玩家帶來了獨特的體驗。 &#xff08;一&#xff09;強大的兼容性 雷電模擬…

文章三《機器學習基礎概念與框架實踐》

文章3:機器學習基礎概念與框架實踐 ——從理論到代碼,用Scikit-learn構建你的第一個分類模型 一、機器學習基礎理論:三大核心類型 機器學習是人工智能的核心,通過數據讓計算機自動學習規律并做出預測或決策。根據學習方式,可分為三類: 1. 監督學習(Supervised Learni…

腦機接口技術:開啟人類與機器的全新交互時代

在科技飛速發展的今天&#xff0c;人類與機器的交互方式正經歷著前所未有的變革。從最初的鍵盤鼠標&#xff0c;到觸摸屏&#xff0c;再到語音控制&#xff0c;每一次交互方式的升級都極大地提升了用戶體驗和效率。如今&#xff0c;腦機接口&#xff08;Brain-Computer Interfa…

8.2 GitHub企業級PDF報告生成實戰:ReportLab高級技巧與性能優化全解析

GitHub企業級PDF報告生成實戰:ReportLab高級技巧與性能優化全解析 GitHub Sentinel 高級功能實現:PDF 報告生成技術詳解 關鍵詞:PDF 報告生成, ReportLab 實戰, 結構化數據轉換, 容器化字體配置, 企業級報告模板 1. 需求分析與技術選型 PDF 報告生成需要滿足以下技術要求…

架構思維:構建高并發讀服務_基于流量回放實現讀服務的自動化測試回歸方案

文章目錄 引言一、升級讀服務架構&#xff0c;為什么需要自動化測試&#xff1f;二、自動化回歸測試系統&#xff1a;整體架構概覽三、日志收集1. 攔截方式2. 存儲與優化策略3. 架構進化 四、數據回放技術實現關鍵能力 五、差異對比對比方式靈活配置 六、三種回放模式詳解1. 離…

基于Spring Boot 3.0、ShardingSphere、PostgreSQL或達夢數據庫的分庫分表

要實現基于Spring Boot 3.0、ShardingSphere、PostgreSQL或達夢數據庫的分庫分表&#xff0c;首先需要對ShardingSphere進行一些基本配置。你提到的溯源碼、批次號等數據需要考慮到跨年數據的存儲&#xff0c;因此要設計一個能夠動態擴展的分表策略 添加ShardingSphere依賴 在…

位運算的應用

1. 判斷偶數&#xff0c;判斷最低位是0還是1即可&#xff0c;?求模快 x % 2 ! 0 //x正負都可以判斷&#xff1b;不?x%2 1&#xff0c;因為如果x為負奇數&#xff0c;x%2-1 (x & 0x1) 0 例如&#xff1a; int x; int main() { cin>>x; if((x & 0x1)0) cout<…

FOC算法開環控制基礎

1. 為什么要有FOC算法 先看看從有刷電機到無刷電機的簡單介紹&#xff0c;如下圖1&#xff0c;通電螺線圈會產生磁場&#xff0c;這個磁場會產生N級和S級&#xff0c;然后這個電磁鐵就可以吸引永磁體&#xff0c;S級吸引N級&#xff0c;N級吸引S級&#xff0c;通俗的來說&…

【計算機網絡】HTTP中GET和POST的區別是什么?

從以下幾個方面去說明&#xff1a; 1.定義 2.參數傳遞方式 3.安全性 4.冪等性 1.定義&#xff1a; GET&#xff1a; 獲取資源&#xff0c;通常請求數據而不改變服務器的狀態。POST&#xff1a; 提交數據到服務器&#xff0c;通常會改變服務器的狀態或副作用(如創建或更新資源…

7400MB/s5050TBW完美結合,全新希捷酷玩530R SSD體驗評測

7400MB/s&5050TBW完美結合&#xff0c;全新希捷酷玩530R SSD體驗評測 哈嘍小伙伴們好&#xff0c;我是Stark-C~ 說到希捷酷玩530 SSD&#xff0c;很多硬核進階玩家應該都知道&#xff0c;或者說正在使用&#xff08;比如說我~&#xff09;。 作為希捷大廠旗下高性能SSD的…

(undone) MIT6.S081 2023 學習筆記 (Day11: LAB10 mmap)

url: https://pdos.csail.mit.edu/6.1810/2023/labs/mmap.html mmap和munmap系統調用允許UNIX程序對其地址空間進行精細控制。它們可用于進程間共享內存、將文件映射到進程地址空間&#xff0c;并作為用戶級頁面錯誤處理方案的一部分&#xff0c;例如課程中討論的垃圾回收算法。…

Q_OBJECT宏的作用

Qt 中&#xff0c;如果一個類中定義了信號&#xff08;signals&#xff09;或槽&#xff08;slots&#xff09;&#xff0c;那么這個類必須包含 Q_OBJECT 宏。 Q_OBJECT宏是 Qt 元對象系統的核心部分&#xff0c;它使得信號和槽機制能夠正常工作。 Q_OBJECT宏是 Qt 的元對象系統…

信息安全基石:加解密技術的原理、應用與未來

信息加解密技術是信息安全領域的核心技術之一&#xff0c;以下為你詳細介紹&#xff1a; 一、加密技術 1.定義&#xff1a;加密是通過特定的算法和密鑰&#xff0c;將原始的明文信息轉化為看似無意義的密文信息的過程。這一過程使得信息在傳輸、存儲等過程中&#xff0c;即使…

LeetCode:返回倒數第k個結點

1、題目描述 實現一種算法&#xff0c;找出單向鏈表中倒數第 k 個節點。返回該節點的值。 注意&#xff1a;本題相對原題稍作改動 示例&#xff1a; 輸入&#xff1a; 1->2->3->4->5 和 k 2 輸出&#xff1a; 4 說明&#xff1a; 給定的 k 保證是有效的。 2、…