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

gpt-4o看图说话-根据图片回答问题

问题:中国的人口老龄化究竟有多严重?

代码下实现如下:(直接调用openai的chat接口)

import os

import base64

import requests

def encode_image(image_path):

    """

    对图片文件进行 Base64 编码

    输入:

         - image_path:图片的文件路径

    输出:

         - 编码后的 Base64 字符串

    """

    # 二进制读取模式打开图片文件,

    with open(image_path, "rb") as image_file:

        # 将编码后的字节串解码为 UTF-8 字符串,以便于在文本环境中使用。

        return base64.b64encode(image_file.read()).decode("utf-8")

# 中文 Prompt 指令

question = "中国的人口老龄化究竟有多严重?"

prompt = (

    f"你的任务是根据图片回答问题,{question}详细回答。"

)

# 对本地多张图片进行 Base64 编码

images = os.listdir("./images")

images.sort()

images.remove('.ipynb_checkpoints')

print(images)

base64_images = [encode_image("./images/" + image) for image in images]

# 组织用户消息

user_content = [{"type": "text", "text": prompt}]

base64_images = [

    {

        "type": "image_url",

        "image_url": {

            "url": f"data:image/jpeg;base64,{base64_image}",

            "detail": "high",

        },

    }

    for base64_image in base64_images

]

user_content.extend(base64_images)

messages_template = [{"role": "user", "content": user_content}]

# 构造请求参数

payload = {

    "model": "gpt-4o",

    "messages": messages_template,

    "max_tokens": 1600,

    "temperature": 0,

    "seed": 2024,

}

# OpenAI API Key

api_key = "sk-xxx”

# 请求头

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

# 发送 POST 请求

response = requests.post(

    "https://api.openai.com/v1/chat/completions",

    headers=headers, json=payload

)

# 打印生成结果

print(response.json())

result = response.json()["choices"][0]["message"]["content"]

print(result)

输出结果:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mipi协议中的calibration和scramble模式
  • 数据结构第18节 散列表 - 应用
  • 羊大师:暑期不“胖”秘籍:羊奶滋养,细嚼慢咽是关键!
  • 品牌策划学习资源全攻略:从入门到精通的推荐清单!
  • echarts 中国地图json文件
  • 神经网络构成、优化、常用函数+激活函数
  • 项目/代码规范与Apifox介绍使用
  • 孟德尔随机化--痛风与饮食
  • k8s 中间件
  • ProFuzzBench入门教学——使用(Ubuntu22.04)
  • Java使用POI导出后数字类型为常规类型,不能计算
  • 使用Mplayer实现MP3功能
  • 前端调用有道翻译
  • FPGA设计之跨时钟域(CDC)设计篇(1)----亚稳态到底是什么?
  • 牛市中途深度调整,一览下半场值得关注的 Solana 生态五大潜力项目
  • Java 内存分配及垃圾回收机制初探
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Making An Indicator With Pure CSS
  • ng6--错误信息小结(持续更新)
  • Nodejs和JavaWeb协助开发
  • web标准化(下)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 数组的操作
  • 在Unity中实现一个简单的消息管理器
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​MySQL主从复制一致性检测
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (2015)JS ES6 必知的十个 特性
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (回溯) LeetCode 77. 组合
  • (算法)前K大的和
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)认识微服务
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET 8 跨平台高性能边缘采集网关
  • .NET BackgroundWorker
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core中的去虚
  • .net web项目 调用webService
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net解析传过来的xml_DOM4J解析XML文件
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/fstab和/etc/mtab的区别
  • /var/lib/dpkg/lock 锁定问题
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作