使用 Prompt API 与您的对象聊天

tl;dr:GET、PUT、PROMPT。现在,可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中,我们将探讨这个新 API 的一些用例以及代码示例。

赋予动机:

对象存储和 S3 API 的无处不在在很大程度上可以归功于其始终如一的简单性。简单性扩展。当 S3 API 于 2006 年向世界推出时,它永远改变了开发人员及其应用程序与数据交互的方式。存储被简化为两个词:GET 和 PUT。通过简单的 REST API,开发人员可以突然利用未来几十年的爆炸式增长的数据量。18 年后,我们面临着一个新的但有趣的挑战。用户和应用程序需要越来越多地使用自然语言来与爆炸式增长的多模态数据进行交互。如果这种新型交互变得像存储和检索对象本身一样简单,那会怎样?输入 PromptObject。

此功能作为一个简单的函数公开,可以使用您选择的客户端 SDK 调用。例如, minio_client.prompt_object(bucket, object, prompt, *kwargs) 在 Python 或 minioClient.PromptObject(bucket, object, prompt, options) Go 中。

要更深入地了解 API 和好处,请务必查看简介博客文章。本文的其余部分将介绍一些真实世界的示例,说明当可以编程方式提示对象时会发生什么。

PromptObject 在野外:

PromptObject 的动机主要是对真实世界用例和应用程序类型的想象,使用这样的 API 可以更轻松地构建这些用例和应用程序类型。以下是一些:

文档问答

对象存储是非结构化数据(如长 PDF、文档和幻灯片)的所在地。现在,可以使用简单的客户端 SDK 函数对冗长而复杂的文档提出问题。例如,回答用户上传文档问题的聊天机器人应用程序只需使用用户的问题和文档调用 PromptObject,然后返回答案。无需自定义 OCR、内存 RAG 或 LLM 消息构造。只需初始化 MinIO 客户端,像为 GetObject 或 PutObject 指定对象一样指定对象,然后提供提示:

from minio import Minioclient = Minio(<MINIO_HOST>,access_key=...,secret_key=...,secure=...,
)client.prompt_object(“my-bucket”, “Supermicro-server-Sys-1029p-n32r.docx”, prompt=“How would I install a Non-F model processor into the processor carrier?”, 
)

针对多个任意对象的问题解答

PromptObject 公开一个名为 supporting_objects 的参数,该参数可以接受任意对象、URL、文本和二进制数据 (!) 的列表作为 PromptObject 调用的附加上下文。这对于需要综合来自许多不同来源的信息的自动化任务特别有用。例如,在前面的示例的基础上,想象一下构建一个 AI 执行研究助理,它可以代理地搜索 Web,从对象存储中获取相关对象,并从用户的笔记中获取内容。一旦收集了正确的数据源,应用程序必须能够回答其中的问题。无需构建自定义工具来支持任意文件类型,最重要的是,将所有这些文件下载到应用程序内存中进行广泛的预处理,只需将键或 URL 形式的“指针”(如果需要,还可以发送实际对象)到 PromptObject 进行理解和问答。下面是它可能的样子:

# Question Answering with Supporting Objects
client.prompt_object(bucket_name="my-bucket",object_name="2024ReportAboutAI.pdf",prompt="Based only on the provided context, which US state has the most\ data center construction? Furthermore, which global region is investing\ the most in data center construction?",supporting_objects=["https://market.us/wp-content/uploads/2022/12/Data-Center-Construction-Market-Region.jpg",client.presigned_get_object("my-bucket", "LastYearsReportAboutAI.pdf"),"According to global consultancy McKinsey & Co., U.S. market demand is\ expected to double to 35 gigawatts (GW) by 2030, up from 17 GW in 2022. As of 2023, the U.S. accounts for roughly 40 percent of the global market.",base64.b64encode(some_pdf_file.read()).decode('utf-8'), # bytes as base64]
)

请注意所使用的各种支持对象源。(1) Web 上的 URL,(2) MinIO 上另一个对象的预签名 URL,(3) 文本,(4) 某些文件的字节(以 base64 字符串表示)

卫星图像分析

存储图像通常是为了执行分析任务,例如识别、分类或某种解析。例如,假设有一个应用程序,它可以从大量卫星图像中自动检测飞机。现在,您可以在指向所需图像的“指针”(存储桶和对象名称)上请求自然语言提示,例如“此卫星图像中可以看到多少架飞机”,而不是让您的应用程序软件承担下载这些对象和构建推理请求的负担,并简单地使用答案:

# Satellite Image Analysis
client.prompt_object(bucket_name="my-bucket",object_name="patch_18.png",prompt="How many aircraft are visible in this satellite image?"
)

现在让我们尝试一个稍微高级一点的示例,使用我们之前学习的 supporting_objects参数:

前面,我们了解了如何使用 supporting_objects 向 PromptObject 调用添加更多上下文。假设卫星图像分析应用程序的用户希望能够提供他们感兴趣的特定飞机的参考图像,而不是检测任何和所有飞机。使用 supporting_objects 和 PromptObject,现在只需几行代码即可实现。现在,我们可以提供感兴趣飞机的图像,并调整提示,以便在分析之前的相同卫星图像时相应地留意该特定飞机:

# Advanced Satellite Image Analysis
client.prompt_object(bucket_name="my-bucket",object_name="patch_18.png",prompt="Based on the image of the reference aircraft, can you count how many of the same type of aircraft are present in the satellite image? Where on the image is it? Pay close attention to the reference aircraft in order to identify the same type of aircraft in the satellite image.",supporting_objects=["https://i.pinimg.com/736x/51/f4/6b/51f46b63879237f7e932601070a8525a.jpg"],
)

来自非结构化数据的结构化答案

我个人最喜欢的功能是能够从非结构化数据(如图像)中获得结构化答案。如果您的应用程序依赖于 PromptObject 输出遵循特定架构的答案,则也可以强制执行该操作。例如,应用程序的任务可能是识别工厂车间图像中存在的不同汽车,然后将该结果传递给另一个服务。在这种情况下,遵循已知架构的结构化答案比仅使用自然语言的答案更可取。执行此操作的最佳方法是将 JSON 架构传递给 PromptObject 调用。在 Python 中,为了让事情变得更简单,我们可以使用 Pydantic 为结果定义一个模型类,并从中生成一个 JSON 模式,如下所示:

from pydantic import BaseModel, Field
from typing import List# Answer Structured Query on Factory Floor Image Capture
class Car(BaseModel):"""The structured description of a car ."""color: str = Field(..., description="Color of the car.")count: int = Field(..., description="Number of cars of this color.")class Cars(BaseModel):cars: List[Car] = Field(..., description="List of distinct cars in the image and their counts.")client.prompt_object(“my-bucket”, “SNAPSHOT_028393.png”, prompt=“Count the number of cars by color. Provide your answer with the provided JSON schema.”, extra_body={“guided_json”: Cars.model_json_schema()}
)

在此示例中,我们使用 extra_body 和 guided_json 传递所需的 JSON 架构。extra_body 是转发到语言模型推理服务器的 kwarg。根据您使用的推理服务器,此规范可能会有所不同。PromptObject 支持所有这些 PromptObject 。

结束语

从根本上说,Prompt API 是为了让您的应用程序、代理和用户比以往任何时候都更容易与数据交互。使用 PromptObject 可以构建的内容实际上只受您的想象力的限制。在这篇文章中,我们只探讨了几个用例,希望这些用例能让您思考如何在自己的出色 AI 应用程序和项目中利用此 API。我们期待看到您构建的内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

23种设计模式-访问者(Visitor)设计模式

文章目录 一.什么是访问者模式&#xff1f;二.访问者模式的结构三.访问者模式的应用场景四.访问者模式的优缺点五.访问者模式的C实现六.访问者模式的JAVA实现七.代码解释八.总结 类图&#xff1a; 访问者设计模式类图 一.什么是访问者模式&#xff1f; 访问者模式&#xff08;…

【开源免费】基于Vue和SpringBoot的在线考试系统(附论文)

本文项目编号 T 624 &#xff0c;文末自助获取源码 \color{red}{T624&#xff0c;文末自助获取源码} T624&#xff0c;文末自助获取源码 网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现…

【H2O2|全栈】MySQL的云端部署

目录 前言 开篇语 准备工作 MySQL移除 为什么需要移除&#xff1f; 移除操作 Yum仓库 yum简介 rpm安装 yum库安装 MySQL安装 使用yum安装 开机自启动 检查运行状态 MySQL配置 初始密码 ​编辑登录 修改root密码 退出MySQL 字符集配置 重启数据库 结束语 …

DAY30|贪心算法Part04|LeetCode:452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

目录 LeetCode:452. 用最少数量的箭引爆气球 基本思路 C代码 LeetCode:435. 无重叠区间 基本思路 C代码 LeetCode:763.划分字母区间 基本思路 C代码 LeetCode:452. 用最少数量的箭引爆气球 力扣代码链接 文字讲解&#xff1a;LeetCode:452. 用最少数量的箭引爆气球 视…

Enterprise Architect 16 下载、安装与无限30天操作

文章目录 Enterprise Architect 16 简介&#xff08;一&#xff09;支持多种建模语言和标准&#xff08;二&#xff09;强大的版本控制、协作和文档管理功能&#xff08;三&#xff09;增强的技术和用户体验&#xff08;四&#xff09;高级功能和扩展性 一&#xff0c;下载软件…

31.3 XOR压缩和相关的prometheus源码解读

本节重点介绍 : xor 压缩value原理xor压缩过程讲解xor压缩prometheus源码解读xor 压缩效果 xor 压缩value原理 原理:时序数据库相邻点变化不大&#xff0c;采用异或压缩float64的前缀和后缀0个数 xor压缩过程讲解 第一个值使用原始点存储计算和前面的值的xor 如果XOR值为0&…

解决 IDEA 修改代码重启不生效的问题

前言 在使用 IntelliJ IDEA 进行 Java 项目开发时&#xff0c;有时会遇到一个令人头疼的问题&#xff1a;修改了代码后&#xff0c;重启服务却发现更改没有生效。通常情况下&#xff0c;解决这个问题需要通过 Maven 的 clean 和 compile 命令来强制重新编译&#xff0c;但这显…

java 根据 pdf 模板带图片文字生成pdf文件

在现代应用开发中,自动生成包含动态内容的 PDF 文档在电子发票、合同生成、表单填充等场景中有着广泛的应用。本文将介绍如何使用 iText 库动态填充 PDF 模板字段,并在指定位置插入签名和公章图片。 项目需求 假设我们有一个 PDF 模板文件,包含表单字段,如用户姓名、地址…

MTK主板定制_联发科主板_MTK8766/MTK8768/MTK8788安卓主板方案

主流市场上的MTK主板通常采用联发科的多种芯片平台&#xff0c;如MT8766、MT6765、MT6762、MT8768和MT8788等。这些芯片基于64位Cortex-A73/A53架构&#xff0c;提供四核或八核配置&#xff0c;主频可达2.1GHz&#xff0c;赋予设备卓越的计算与处理能力。芯片采用12纳米制程工艺…

Windows仿macOS?看这一篇就够了

如果你有任何关于Windows仿macOS的问题&#xff0c;可加入942644281 &#xff08;QQ群&#xff09; Date9.20更新&#xff1a;增加功能按键左移部分Date9.16更新&#xff1a;增加了大多数资源的网盘链接Date9.15更新&#xff1a;增加StartAllBack&#xff0c;资源管理器调整部…

无法下载element-admin的依赖无法运行

目录 无法下载element-admin的依赖偷懒方法完美方法 运行element-admin错误 之前在下载element-admin时遇到了多多少少的问题 无法下载element-admin的依赖 偷懒方法 开始是从github下载源码后安装依赖时在与tui-editor相关的依赖时就会卡死&#xff0c;然后报错&#xff0c…

基于Java Springboot幼儿园管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

新一代API开发工具,让API调试更快 更简单

新一代API开发工具 代理调试 请求测试一站式解决方案 Reqable Fiddler Charles Postman, 让API调试更快 &#x1f680; 更简单 &#x1f44c; 直接上下载地址 根据系统,下载对应的版本即可 https://reqable.com/zh-CN/download/

Python | Leetcode Python题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; class Solution:def nearestPalindromic(self, n: str) -> str:m len(n)candidates [10 ** (m - 1) - 1, 10 ** m 1]selfPrefix int(n[:(m 1) // 2])for x in range(selfPrefix - 1, selfPrefix 2):y x if m % 2 0 else x // 10…

爬虫——数据解析与提取

第二节&#xff1a;数据解析与提取 在网络爬虫开发中&#xff0c;获取网页内容&#xff08;HTML&#xff09;是第一步&#xff0c;但从这些内容中提取有用的数据&#xff0c;才是爬虫的核心部分。HTML文档通常结构复杂且充满冗余信息&#xff0c;因此我们需要使用高效的解析工…

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时&#xff0c;我们常常会遇到需要合并单元格的需求。 比如&#xff0c;某些字段的值可能会在多行中重复出现&#xff0c;而我们希望将这些重复的单元格合并为…

RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)

文章目录 RabbitMQ教程&#xff1a;发布/订阅模式&#xff08;Publish/Subscribe&#xff09;&#xff08;三&#xff09;一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机&#xff08;Exchanges&#xff09;4.2 临时队列&#xff08;Temporary Queues&am…

CANoe发送和接收CAN DataBase(DBC文件)数据

目录 1、接收CAN数据&#xff0c;DBC解析数据内容 2、发送DBC定义的CAN报文 CANoe是一款强大的网络仿真和开发工具&#xff0c;它支持发送和接收基于CAN DataBase&#xff08;DBC文件&#xff09;的数据。 1、接收CAN数据&#xff0c;DBC解析数据内容 要使用CANoe接收CAN数…

【第六课】Rust所有权系统(二)

目录 前言 借用和引用 借用规则 切片和迭代器 总结 前言 上节课介绍了Rust中的所有权系统&#xff0c;简单回顾一下&#xff0c;rust的内存系统系统&#xff0c;每一块内存都有一个主人&#xff0c;主人对这块内存有着读写和释放的权限&#xff0c;当主人离开作用域之后&am…

ISUP协议视频平台EasyCVR私有化部署视频平台如何实现RTMP推流将大疆无人机的视频画面回传?

在现代视频监控和流媒体技术领域&#xff0c;EasyCVR视频融合云平台以其卓越的性能和灵活性&#xff0c;成为了跨区域、网络化视频监控综合管理的理想选择。作为TSINGSEE青犀视频“云边端”架构体系中的核心组件&#xff0c;私有化部署视频平台EasyCVR不仅能够实现视频数据的集…