使用 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.rhkb.cn/news/471959.html

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

相关文章

虎扑APP数据采集:JavaScript与AJAX的结合使用

引言 虎扑APP的数据采集涉及到前端和后端的交互&#xff0c;其中AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;技术允许在不重新加载整个页面的情况下&#xff0c;与服务器进行数据交换和更新部分网页内容。这种技术使得数据采集过程更加高效和用户友好。然而…

Flutter实现绝对定位学习

通过 Stack Positioned实现Flutter绝对定位学习。 简单Demo import package:flutter/material.dart;class MyPositionedDemoPage extends StatelessWidget {const MyPositionedDemoPage({super.key});overrideWidget build(BuildContext context) {return Scaffold(appBar: …

《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性

一、论文简介 论文讨论了大规模预训练产生的视觉基础模型在处理任意图像时的强大能力&#xff0c;这些模型不仅能够完成训练任务&#xff0c;其中间表示还对其他视觉任务&#xff08;如检测和分割&#xff09;有用。研究者们提出了一个问题&#xff1a;这些模型是否能够表示物体…

【C++】深入理解自定义 list 容器中的 list_iterator:迭代器实现详解

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 &#x1f4d8; 基础数据结构【C语言】 &#x1f4bb; C语言编程技巧【C】 &#x1f680; 进阶C【OJ题解】 &#x1f4dd; 题解精讲 目录 &#x1f4cc; 引言&#x1f4cc; 1. 为什么 list 容器需要 list_iterator…

昆明华厦眼科医院举办中外专家眼科技术研讨会

9月13日&#xff0c;“睿智迭代&#xff0c;增效赋能”Menicon Z Night中外专家研讨会在昆明华厦眼科医院成功举办。此次会议由目立康公司与昆明华厦眼科医院携手共筑&#xff0c;标志着双方合作迈向新的高度。 昆明华厦眼科医院总经理王若镜首先发表了热情洋溢的致辞&#xff…

FreeRTOS的列表与列表项

目录 1.为什么要学列表&#xff1f; 2.什么是列表和列表项&#xff1f; 2.1 列表 2.2列表项 2.3&#xff0c;迷你列表项 3.列表与列表项的初始化 3.1 列表初始化 3.2列表项初始化 4.列表项的“增删查”&#xff08;插入、删除、遍历&#xff09; 4.1列表项的插入 4.1.1…

前端(3)——快速入门JaveScript

参考&#xff1a; 罗大富 JavaScript 教程 | 菜鸟教程 JavaScript 教程 1. JaveScript JavaScript 简称 JS JavaScript 是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果&#xff0c;增加用户与网页的交互性。作为一种客户端脚本语言&#…

使用阿里云快速搭建 DataLight 平台

使用阿里云快速搭建 DataLight 平台 本篇文章由用户 “闫哥大数据” 分享&#xff0c;B 站账号&#xff1a;https://space.bilibili.com/357944741?spm_id_from333.999.0.0 注意&#xff1a;因每个人操作顺序可能略有区别&#xff0c;整个部署流程如果出现出入&#xff0c;以…

H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

QT_CONFIG宏使用

时常在Qt代码中看到QT_CONFIG宏&#xff0c;之前以为和#define、DEFINES 差不多&#xff0c;看了定义才发现不是那么回事&#xff0c;定义如下&#xff1a; 看注释就知道了QT_CONFIG宏&#xff0c;其实是&#xff1a;实现了一个在编译时期安全检查&#xff0c;检查指定的Qt特性…

centos7安装Chrome使用selenium-wire

背景&#xff1a;在centos7中运行selenium-wire爬虫&#xff0c;系统自带的Firefox浏览器不兼容&#xff0c;运行报错no attribute ‘set_preference’&#xff0c;应该是selenium-wire和Firefox的驱动不兼容 查了半天不知道怎么解决&#xff0c;就想在centos7上安装Chrome来跑…

医院信息化与智能化系统(21)

医院信息化与智能化系统(21) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应…

《FreeRTOS任务控制块篇》

Task control block, 即任务控制块。任务控制块&#xff08;TCB&#xff09;是一个结构体&#xff0c;它会分配给每个任务&#xff0c;其中存储着任务的状态信息&#xff0c;包括指向任务上下文&#xff08;任务的运行时环境&#xff0c;包括寄存器值&#xff09;的指针。任务控…

Queuing 表(buffer表)的优化实践 | OceanBase 性能优化实践

案例问题描述 该案例来自一个金融行业客户的问题&#xff1a;他们发现某个应用对一个数据量相对较小的表&#xff08;仅包含数千条记录&#xff09;访问时&#xff0c;频繁遇到性能下降的情况。为解决此问题&#xff0c;客户向我们求助进行分析。我们发现这张表有频繁的批量插…

ssh登陆服务器后支持Tab键命令补全

在服务器上新建了用户后&#xff0c;通过ssh登录到服务器后发现不能使用Tab键来进行命令补全 截图如下&#xff1a; 以为没有配置.bashrc 此时输入 source 发现无此命令 细心的可以发现 -sh 于是输入命令echo $SHELL 确认此时的shell为sh&#xff0c; 只要输入命令bash即可切…

[白月黑羽]关于仿写类postman功能软件题目的解答

原题&#xff1a; 答&#xff1a; python文件如下 from PySide6.QtWidgets import QApplication, QMessageBox,QTableWidgetItem,QHeaderView,QWidget,QTableWidget from PySide6.QtCore import QEvent,QObject from PySide6.QtUiTools import QUiLoader import time import …

Postman接口测试(断言、关联、参数化、输出测试报告)

基本界面展示 Get、Post请求 Postman断言 使用postman来判断预期结果与实际结果是否一致 响应状态码断言 响应包含字符串 断言判断字符串的格式 关联 用于解决http请求之间存在依赖关系 依赖&#xff1a;一个http请求的响应结果中的数据&#xff0c;被另一个请求使用 登…

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现&#xff08;Kalman Filter&#xff09; 更新以gitee为准&#xff1a; gitee地址 文章目录 卡尔曼滤波数据融合Python实现C语言实现多个数据如何融合附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Pac…

网络原理-网络层和数据链路层

一、网络层 1、IP协议完成的工作 地址管理&#xff1a;使用一套地址体系来描述所没备的位置 路由选择&#xff1a;一个数据包如何从网络的某个地址传到另一个地址 2、IP报头 4 位版本号&#xff1a;取值为4或6 (IPv4/IPv6) 4 位首部长度&#xff1a;IP报头&#xff0c;单位…

【Three.js基础学习】22.New project structure

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 这里将使用全新的项目结构&#xff0c;将不同工具分层&#xff0c;区分开使用。 一、结构目录 二、对应文件 1.script.js 获取画布&#xff0c;引入样式和功能。 /* 课…