OpenAI ChatGPT 视觉API_chatgpt图像识别 api-程序员宅基地

技术标签: ChatGPT API文档  计算机视觉  人工智能  chatgpt  

介绍

GPT-4 with Vision(gpt-4-vision-preview),有时称为 GPT-4V 或视觉 API,允许模型接收图片并回答与之相关的问题。从历史上看,语言模型系统一直受限于只接受单一的输入模态,即文本。对于许多用例,这限制了像 GPT-4 这样的模型可以使用的领域。

GPT-4 with vision(gpt-4-vision-preview) 目前可供所有具有 GPT-4 访问权限的开发人员使用,可以通过模型和已更新以支持图片输入的 Chat Completions API 进行访问。请注意, Assistants API 目前不支持图片输入。

需要注意以下几点:

  • GPT-4 with vision 并不是一个行为与 GPT-4 不同的模型,只有在用于模型的系统提示方面有轻微差异。
  • GPT-4 with vision 并不是一个在文本任务上表现更差的不同模型,因为它具有视觉能力,它只是在 GPT-4 上增加了视觉功能。
  • GPT-4 with vision 是该模型的增强能力的一组。

快速入门

可以通过两种主要方式将图片提供给模型:网络图片链接或 图片的base64 编码。图片可以在消息中传递。目前,我们不支持第一条消息中的图片,但将来可能会更改。

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "What’s in this image?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
                    },
                },
            ],
        }
    ],
    max_tokens=300,
)

print(response.choices[0])

该模型最擅长回答有关图片中存在的内容的一般问题。虽然它确实了解图片中对象之间的关系,但它尚未优化以回答有关图片中某些对象位置的详细问题。例如,你可以根据冰箱里的东西问它,晚餐的一些想法是什么,但如果你给它看一个房间的图片,并问它椅子在哪里,它可能无法正确回答问题。

上传 base 64 编码图片

如果本地有一个图片或一组图片,则可以将它们以 base 64 编码格式传递到模型,下面是一个运行示例:

import base64
import requests

# OpenAI API Key
api_key = "YOUR_OPENAI_API_KEY"

# Function to encode the image
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')

# Path to your image
image_path = "path_to_your_image.jpg"

# Getting the base64 string
base64_image = encode_image(image_path)

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

payload = {
    "model": "gpt-4-vision-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "What’s in this image?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": f"data:image/jpeg;base64,{base64_image}"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
}

response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

print(response.json())

多个图片输入

聊天对话 API 能够接收和处理 多个 “base64 编码格式” 或 “图片网址” 的图片输入。该模型将处理每张图片,并使用来自所有图片的信息来回答问题。

from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4-vision-preview",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "What are in these images? Is there any difference between them?",
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
                    },
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
                    },
                },
            ],
        }
    ],
    max_tokens=300,
)
print(response.choices[0])

在这里,模型显示了同一图片的两个副本,并且可以独立回答有关两个或每个图片的问题。

低保真或高保真图片理解

通过控制参数(具有两个选项low和high)或 ,您可以控制模型如何处理图片并生成其文本理解。

  • low将禁用“高分辨率”模型。该模型将收到低分辨率 512 x 512 版本的图片,并以 65 个代币的预算表示图片。这允许 API 返回更快的响应,并为不需要高细节的用例使用更少的输入令牌。
  • high将启用“高分辨率”模式,该模式首先允许模型查看低分辨率图片,然后根据输入图片大小将输入图片创建为 512px 正方形的详细裁剪。每个详细的作物都使用两倍的代币预算(65 个代币),总共 129 个代币。

管理映像

与 Google 助理 API 不同,聊天完成 API 不是有状态的。这意味着您必须自己管理传递给模型的消息(包括图片)。如果要多次将同一图片传递给模型,则必须在每次向 API 发出请求时传递图片。

对于长时间运行的对话,我们建议通过 URL 而不是 base64 传递图片。还可以通过提前缩小图片大小以小于预期的最大大小来改善模型的延迟。对于低分辨率模式,我们期望图片为 512 像素 x 512 像素。对于高静止模式,图片的短边应小于 768 像素,长边应小于 2,000 像素。

模型处理图片后,将从 OpenAI 服务器中删除该图片,并且不会保留。我们不会使用通过 OpenAI API 上传的数据来训练我们的模型。

局限性

虽然具有视觉功能的 GPT-4 功能强大,可用于多种情况,但了解该模型的局限性很重要。以下是我们注意到的一些限制:

  • 医学图片:该模型不适合解释 CT 扫描等专业医学图片,不应用于医疗建议。
  • 非英语:在处理包含非拉丁字母文本(如日语或韩语)的图片时,模型可能无法发挥最佳性能。
  • 大文本:放大图片中的文本以提高可读性,但避免裁剪重要细节。
  • 旋转:模型可能会误解旋转/颠倒的文本或图片。
  • 视觉元素:模型可能难以理解颜色或样式(如实线、虚线或虚线)变化的图形或文本。
  • 空间推理:该模型难以完成需要精确空间定位的任务,例如识别国际象棋位置。
  • 准确性:在某些情况下,模型可能会生成不正确的描述或标题。
  • 图片形状:该模型在处理全景和鱼眼图片时遇到困难。
  • 元数据和调整大小:模型不处理原始文件名或元数据,并且在分析之前调整图片大小,从而影响其原始尺寸。
  • 计数:可以给出图片中对象的近似计数。
  • 验证码:出于安全原因,我们实施了一个系统来阻止提交验证码。

计算成本

图片输入以令牌计量和收费,就像文本输入一样。给定图片的令牌成本由两个因素决定:其大小和每个image_url块上的选项。所有图片每张花费 85 个代币。 首先将图片缩放以适合 2048 x 2048 正方形,保持其纵横比。然后,对它们进行缩放,使图片的最短边长 768 像素。最后,我们计算图片由多少个 512px 的正方形组成。每个方块花费 170 个代币。另外 85 个代币总是添加到最终总数中。detaildetail: lowdetail: high

以下是演示上述内容的一些示例。

  • 模式下的 1024 x 1024 方形图片需要 765 个代币detail: high
    • 1024 小于 2048,因此没有初始调整大小。
    • 最短边是 1024,因此我们将图片缩小到 768 x 768。
    • 需要 4 个 512px 的方形图块来表示图片,因此最终的代币成本为 。170 * 4 + 85 = 765
  • 模式下的 2048 x 4096 图片需要 1105 个令牌detail: high
    • 我们将图片缩小到 1024 x 2048 以适合 2048 正方形。
    • 最短边是 1024,因此我们进一步缩小到 768 x 1536。
    • 需要 6 个 512px 图块,因此最终的代币成本为 。170 * 6 + 85 = 1105
  • 大多数情况下,一张 4096 x 8192 的图片需要 85 个代币detail: low
    • 无论输入大小如何,低细节图片都是固定成本。

常见问题

我可以微调图片功能吗?gpt-4

不可以,我们目前不支持微调图片功能。gpt-4

我可以用来生成图片吗?gpt-4

不,您可以使用它来生成图片和理解图片。dall-e-3gpt-4-vision-preview

我可以上传什么类型的文件?

我们目前支持 PNG (.png)、JPEG(.jpeg 和 .jpg)、WEBP (.webp) 和非动画 GIF (.gif)。

我可以上传的图片大小有限制吗?

是的,我们将每张图片上传的图片限制为 20MB。

我可以删除我上传的图片吗?

不会,我们会在模型处理图片后自动为您删除图片。

在哪里可以了解有关 GPT-4 with Vision 注意事项的更多信息?

您可以在 GPT-4 with Vision 系统卡中找到有关我们的评估、准备和缓解工作的详细信息。

我们进一步实施了一个系统来阻止提交验证码。

GPT-4 with Vision 的速率限制如何工作?

我们在令牌级别处理图片,因此我们处理的每个图片都计入每分钟令牌数 (TPM) 限制。有关用于确定每个图片的令牌计数的公式的详细信息,请参阅计算成本部分。

GPT-4 with Vision 能理解图片元数据吗?

否,模型不接收图片元数据。

如果我的图片不清晰会怎样?

如果图片模棱两可或不清晰,模型将尽最大努力对其进行解释。但是,结果可能不太准确。一个好的经验法则是,如果普通人无法以低/高分辨率模式使用的分辨率看到图片中的信息,那么模型也无法看到。

引用OpenAI官方文档翻译链接

  1. OpenAI ChatGPT支持的模型
  2. OpenAI ChatGPT开发人员快速入门
  3. OpenAI ChatGPT生成图片API
  4. OpenAI ChatGPT文字转语音API
  5. OpenAI ChatGPT语音转文字API
  6. OpenAI ChatGPT视觉API
  7. OpenAI ChatGPT函数调用API
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xtaqukq/article/details/134456301

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签