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.mzph.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、…