使用 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。我们期待看到您构建的内容!
相关文章:
使用 Prompt API 与您的对象聊天
tl;dr:GET、PUT、PROMPT。现在,可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中,我们将探讨这个新 API 的一些用例以及代码示例。 赋予动机: 对象存储和 S3 API 的无处不在…...
SpringBoot整合Mybatis-Plus实践汇总
相关依赖 MyBatis-Plus涉及的依赖主要是Mybatis-start、和分页插件的依赖,不考虑使用额外分页插件的前提下,只需要mybatis-plus-boot-starter一个依赖即可与SpringBoot集成: <!--Mybatis-plugs--><dependency><groupId>co…...
基于Spring Boot的在线性格测试系统设计与实现(源码+定制+开发)智能性格测试与用户个性分析平台、在线心理测评系统的开发、性格测试与个性数据管理系统
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
Python实现人脸识别算法并封装为类库
引言 人脸识别技术在现代社会中应用广泛,从安全监控到智能门锁,再到社交媒体中的照片标记功能,都离不开这项技术。本文将详细介绍如何使用Python实现基本的人脸识别算法,并将其封装为一个类库,以便在多个项目中复用。…...
uniapp小程序分享使用canvas自定义绘制 vue3
使用混入结合canvas做小程序的分享 在混入里面定义一个全局共享的分享样式,在遇到特殊页面需要单独处理 utils/share.js import { ref } from vue; export default {onShow() {// 创建时设置统一页面的默认值uni.$mpShare {title: 分享的标题,path: /pages/home/…...
SpringCloud核心组件(四)
文章目录 NacosNacos 配置中心1.起源2.基本概念ProfileData IDGroup 3.基础配置a. bootstrap.ymlb. application.ymlc. nacos 中的配置 DataIDd.测试读取配置中心配置内容 4.配置隔离a.命名空间b.DataIDc.bootstrap.ymld.service 隔离 5.配置拆分a.配置拆分策略b.DataID 配置c.…...
如何把本地docker 镜像下载用到centos系统中呢?
如果需要将镜像下载到本地或在 CentOS 系统上使用该镜像,你可以按照以下步骤操作: 1. 拉取镜像 如果想将镜像从 Docker Hub 或其他镜像仓库下载到本地,可以使用 docker pull 命令。 如果使用的是本地构建的镜像(如 isc:v1.0.0&…...
Godot的开发框架应当是什么样子的?
目录 前言 全局协程还是实例协程? 存档! 全局管理类? UI框架? Godot中的异步(多线程)加载 Godot中的ScriptableObject 游戏流程思考 结语 前言 这是一篇杂谈,主要内容是对我…...
GitHub新手入门 - 从创建仓库到协作管理
GitHub新手入门 - 从创建仓库到协作管理 GitHub 是开发者的社交平台,同时也是代码托管的强大工具。无论是个人项目、开源协作,还是团队开发,GitHub 都能让你轻松管理代码、版本控制和团队协作。今天,我们将从基础开始,…...
作业25 深度搜索3
作业: #include <iostream> using namespace std; bool b[100][100]{0}; char map[100][100]{0}; int dx[4]{0,1,0,-1}; int dy[4]{1,0,-1,0}; int n,m; int sx,sy,ex,ey; int mink2147483647; void dfs(int,int,int); int main(){cin>>n>>m;for(…...
ubuntu20.04 colmap 安装2024.11最新
很多教程都很落后了,需要下载压缩包解压编译的很麻烦 现在就只需要apt install就可以了 apt更新 sudo apt update && sudo apt-get upgrade安装依赖 #安装依赖 sudo apt-get install git cmake ninja-build build-essential libboost-program-options-de…...
WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇
WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule [WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇](本文) WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前…...
python os.path.basename(获取路径中的文件名部分) 详解
os.path.basename 是 Python 的 os 模块中的一个函数,用于获取路径中的文件名部分。它会去掉路径中的目录部分,只返回最后的文件名或目录名。 以下是 os.path.basename 的详细解释和使用示例: 语法 os.path.basename(path) 参数 path&…...
《FreeRTOS任务基础知识以及任务创建相关函数》
目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务(Task)介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…...
036集——查询CAD图元属性字段信息:窗体显示(CAD—C#二次开发入门)
提取CAD图元所有属性字段,通过窗体显示,效果如下:(curve改为entity) 代码如下: public void 属性查询() {List<Curve> ents Z.db.SelectEntities<Curve>();if (ents is null ||ents.Cou…...
Swift从0开始学习 函数和闭包 day2
一、函数 1.1函数定义 使用 func 来声明一个函数,使用名字和参数来调用函数。使用 -> 来指定函数返回值的类型。 示例:拼接字符串 //有参数和返回值的函数 func append1(name : String, description : String) -> String {return "\(name)…...
内网、公网(外网)划分
内网、公网(外网)划分 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…...
【linux】centos7 换阿里云源
相关文章 【linux】CentOS 的软件源(Repository)学习-CSDN博客 查看yum配置文件 yum的配置文件通常位于/etc/yum.repos.d/目录下。你可以使用以下命令查看这些文件: ls /etc/yum.repos.d/ # 或者 ll /etc/yum.repos.d/备份当前的yum配置文…...
用OMS进行 OceanBase 租户间数据迁移的测评
基本概念 OceanBase迁移服务(,简称OMS),可以让用户在同构或异构 RDBMS 与OceanBase 数据库之间进行数据交互,支持数据的在线迁移,以及实时增量同步的复制功能。 OMS 提供了可视化的集中管控平台ÿ…...
【因果分析方法】MATLAB计算Liang-Kleeman信息流
【因果分析方法】MATLAB计算Liang-Kleeman信息流 1 Liang-Kleeman信息流2 MATLAB代码2.1 函数代码2.2 案例参考Liang-Kleeman 信息流(Liang-Kleeman Information Flow)是由 Liang 和 Kleeman 提出的基于信息论的因果分析方法。该方法用于量化变量之间的因果关系,通过计算信息…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
