当前位置: 首页 > 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 提出的基于信息论的因果分析方法。该方法用于量化变量之间的因果关系,通过计算信息…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...