当前位置: 首页 > news >正文

使用 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&#xff1a;GET、PUT、PROMPT。现在&#xff0c;可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中&#xff0c;我们将探讨这个新 API 的一些用例以及代码示例。 赋予动机&#xff1a; 对象存储和 S3 API 的无处不在…...

SpringBoot整合Mybatis-Plus实践汇总

相关依赖 MyBatis-Plus涉及的依赖主要是Mybatis-start、和分页插件的依赖&#xff0c;不考虑使用额外分页插件的前提下&#xff0c;只需要mybatis-plus-boot-starter一个依赖即可与SpringBoot集成&#xff1a; <!--Mybatis-plugs--><dependency><groupId>co…...

基于Spring Boot的在线性格测试系统设计与实现(源码+定制+开发)智能性格测试与用户个性分析平台、在线心理测评系统的开发、性格测试与个性数据管理系统

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

Python实现人脸识别算法并封装为类库

引言 人脸识别技术在现代社会中应用广泛&#xff0c;从安全监控到智能门锁&#xff0c;再到社交媒体中的照片标记功能&#xff0c;都离不开这项技术。本文将详细介绍如何使用Python实现基本的人脸识别算法&#xff0c;并将其封装为一个类库&#xff0c;以便在多个项目中复用。…...

uniapp小程序分享使用canvas自定义绘制 vue3

使用混入结合canvas做小程序的分享 在混入里面定义一个全局共享的分享样式&#xff0c;在遇到特殊页面需要单独处理 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 系统上使用该镜像&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 拉取镜像 如果想将镜像从 Docker Hub 或其他镜像仓库下载到本地&#xff0c;可以使用 docker pull 命令。 如果使用的是本地构建的镜像&#xff08;如 isc:v1.0.0&…...

Godot的开发框架应当是什么样子的?

目录 前言 全局协程还是实例协程&#xff1f; 存档&#xff01; 全局管理类&#xff1f; UI框架&#xff1f; Godot中的异步&#xff08;多线程&#xff09;加载 Godot中的ScriptableObject 游戏流程思考 结语 前言 这是一篇杂谈&#xff0c;主要内容是对我…...

GitHub新手入门 - 从创建仓库到协作管理

GitHub新手入门 - 从创建仓库到协作管理 GitHub 是开发者的社交平台&#xff0c;同时也是代码托管的强大工具。无论是个人项目、开源协作&#xff0c;还是团队开发&#xff0c;GitHub 都能让你轻松管理代码、版本控制和团队协作。今天&#xff0c;我们将从基础开始&#xff0c…...

作业25 深度搜索3

作业&#xff1a; #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最新

很多教程都很落后了&#xff0c;需要下载压缩包解压编译的很麻烦 现在就只需要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 上篇]&#xff08;本文&#xff09; WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前…...

python os.path.basename(获取路径中的文件名部分) 详解

os.path.basename 是 Python 的 os 模块中的一个函数&#xff0c;用于获取路径中的文件名部分。它会去掉路径中的目录部分&#xff0c;只返回最后的文件名或目录名。 以下是 os.path.basename 的详细解释和使用示例&#xff1a; 语法 os.path.basename(path) 参数 path&…...

《FreeRTOS任务基础知识以及任务创建相关函数》

目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务&#xff08;Task&#xff09;介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…...

036集——查询CAD图元属性字段信息:窗体显示(CAD—C#二次开发入门)

提取CAD图元所有属性字段&#xff0c;通过窗体显示&#xff0c;效果如下&#xff1a;&#xff08;curve改为entity&#xff09; 代码如下&#xff1a; public void 属性查询() {List<Curve> ents Z.db.SelectEntities<Curve>();if (ents is null ||ents.Cou…...

Swift从0开始学习 函数和闭包 day2

一、函数 1.1函数定义 使用 func 来声明一个函数&#xff0c;使用名字和参数来调用函数。使用 -> 来指定函数返回值的类型。 示例&#xff1a;拼接字符串 //有参数和返回值的函数 func append1(name : String, description : String) -> String {return "\(name)…...

内网、公网(外网)划分

内网、公网&#xff08;外网&#xff09;划分 声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其…...

【linux】centos7 换阿里云源

相关文章 【linux】CentOS 的软件源&#xff08;Repository&#xff09;学习-CSDN博客 查看yum配置文件 yum的配置文件通常位于/etc/yum.repos.d/目录下。你可以使用以下命令查看这些文件&#xff1a; ls /etc/yum.repos.d/ # 或者 ll /etc/yum.repos.d/备份当前的yum配置文…...

用OMS进行 OceanBase 租户间数据迁移的测评

基本概念 OceanBase迁移服务&#xff08;&#xff0c;简称OMS&#xff09;&#xff0c;可以让用户在同构或异构 RDBMS 与OceanBase 数据库之间进行数据交互&#xff0c;支持数据的在线迁移&#xff0c;以及实时增量同步的复制功能。 OMS 提供了可视化的集中管控平台&#xff…...

【因果分析方法】MATLAB计算Liang-Kleeman信息流

【因果分析方法】MATLAB计算Liang-Kleeman信息流 1 Liang-Kleeman信息流2 MATLAB代码2.1 函数代码2.2 案例参考Liang-Kleeman 信息流(Liang-Kleeman Information Flow)是由 Liang 和 Kleeman 提出的基于信息论的因果分析方法。该方法用于量化变量之间的因果关系,通过计算信息…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

基于小程序老人监护管理系统源码数据库文档

摘 要 近年来&#xff0c;随着我国人口老龄化问题日益严重&#xff0c;独居和居住养老机构的的老年人数量越来越多。而随着老年人数量的逐步增长&#xff0c;随之而来的是日益突出的老年人问题&#xff0c;尤其是老年人的健康问题&#xff0c;尤其是老年人产生健康问题后&…...