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)

输出结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/796418.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微分方程建模

微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微分方程的定解问题。在高教杯数学建模竞赛中每年都会有一道微分方程建模问题,大体上可以按以 下几步: 1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数…

【Linux信号】阻塞信号、信号在内核中的表示、信号集操作函数、sigprocmask、sigpending

我们先来了解一下关于信号的一些常见概念: 实际执行 信号的处理动作 称为信号递达。 信号从产生到递达的之间的状态称为信号未决。 进程可以选择阻塞(Block)某个信号。 被阻塞的信号产生时是处于未决状态的,知道进程解除对该信号的阻塞,该…

基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将FPGA仿真结果导入到matlab显示结果: 测试样本1 测试样本2 测试样本3 2.算法运行软件版本 vivado2019.2 …

鸿蒙HarmonyOS应用开发为何选择ArkTS不是Java?

前言 随着智能设备的快速发展,操作系统的需求也变得越来越多样化。为了满足不同设备的需求,华为推出了鸿蒙HarmonyOS。 与传统的操作系统不同,HarmonyOS采用了一种新的开发语言——ArkTS。 但是,刚推出鸿蒙系统的时候&#xff0…

MySQL数据库课程设计——订餐系统(MySQL数据库+Qt5用户界面+python)

目录 一、系统定义 二、需求分析 三、系统设计 四、详细设计 五、参考文献 一、系统定义 订餐系统是一种基于网络技术的在线点餐平台,旨在为用户提供方便快捷的订餐服务。该系统主要包括用户登录、用户管理、菜单管理、订单管理、支付管理、评价管理等功能模块…

云服务器重置密码后,xshell远程连接不上,重新启用密码登录方式

云服务器重置密码后 ,xshell连接出现不能使用密码登录 解决方案:以下来自阿里云重新启用密码登录方式帮助文档 为轻量应用服务器创建密钥且重启服务器使密钥生效后,服务器会自动禁止使用root用户及密码登录。如果您需要重新启用密码登录方式&…

比特币交易繁忙的一天

早晨:市场开盘与准备工作 6:00 AM - 全球市场监测 交易员们早早起床,开始监测全球市场动态,尤其是亚洲市场的动向。通过查看新闻、分析报告和市场数据,了解可能影响比特币价格的因素。 7:00 AM - 团队会议 召开晨会,讨论当天的交易策略。团队分析前一天的交易情况,评…

OpenGL笔记五之VBO与VAO

OpenGL笔记五之VBO与VAO 总结自bilibili赵新政老师的教程 code review! 文章目录 OpenGL笔记五之VBO与VAO1.VBO2.VAO3.VBO与VAO对比 1.VBO 代码 void prepareVBO() {//1 创建一个vbo *******还没有真正分配显存*********GLuint vbo 0;GL_CALL(glGenBuffers(1, &vbo))…

适合创业公司使用的wordpress主题

对于创业公司来说,‌选择一个适合的WordPress主题至关重要,‌它不仅能够提升公司网站的外观和用户体验,‌还能帮助优化搜索引擎排名,‌从而吸引更多的潜在客户。‌以下是一些推荐的WordPress主题,‌特别适合创业公司使…

人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作与代码详解。在上一节课中的OpenCV基础操作我们了解到OpenCV是一个开源的计算机视觉软件库。它提供了各种视觉处理函数,并支持多种编程语言&…

传感器标定(三)激光雷达外参标定(lidar2ins)

一、数据采集 1、LiDAR 传感器的 LiDAR PCD 数据 2、来自 IMU 传感器的姿势文件 3、手动测量传感器之间外部参数初始值并写入的 JSON 文件 二、下载标定工具 //总的git地址: https://github.com/PJLab-ADG/SensorsCalibration git地址: https://githu…

扩散基生物打印:打造多材料组织构建的新篇章

生物打印技术正在经历快速发展,而扩散基生物打印作为一种新兴策略,为制造更复杂和功能化的组织构建物提供了新的可能性。这种方法利用扩散原理,通过在不同区域之间扩散酶、交联剂或可交联聚合物来促进交联,从而实现多种材料的集成…

【论文阅读笔记】ASPS: Augmented Segment Anything Model for Polyp Segmentation

1.论文介绍 ASPS: Augmented Segment Anything Model for Polyp Segmentation ASPS:用于息肉分割的扩展SAM模型 2024年 arxiv Paper Code 2.摘要 息肉分割在结直肠癌诊断中起着至关重要的作用。最近,Segment Anything Model(SAM)的出现利用其在大规模…

软件缺陷简介

缺陷种类 遗漏,指规定或预期的需求为体现在产品种错误,需求是明确的,在实现阶段未将需求的功能正确实现冗余,需求说明文档中未涉及的需求被实现了不满意,用户对产品的实现不满意也成为缺陷 缺陷等级划分 致命&#…

【测试】软件测试报告模板(直接套用)

软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解…

PGCCC|【PostgreSQL】PCA+PCP+PCM等IT类认证申报个税退税指南

小编特将PostgreSQL证书申报个税退税流程,编辑成文,供大家申报参考哦~ 1.申报专项附加扣除 第一步:打开个人所得税APP,选择“专项附加扣除填报”: 第二步:“扣除年度”选择您要申报的年度,并…

Java之封装、继承,多态

文章目录 Java 之封装、继承,多态一、封装1.封装的基本介绍2. 封装的实现3. 将构造器与 setXxx 方法结合 二、继承1. 继承的基本介绍2. 基本语法3.继承的深入理解4. 继承的本质分析(内存存在形式)5. 子类创建的内存布局6. super 关键字6.1 su…

Altium Designer软件绘制一个stm32最小系统的电路原理图

文章目录 一、安装软件二、新建工程 一、安装软件 教程: Altium Designer 24下载安装教程,免费汉化版,保姆级教程,附安装包 二、新建工程 1.新建项目 2.新建原理图 3.和上面一样的方法新建PCB文件 文件->原理图,这样文件…

产品经理-研发流程-敏捷开发-迭代-需求评审及产品规划(15)

敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。 通俗来说,敏捷开发是一个软件开发流程,是一个采用了迭代方法的开发流程 简单来说,迭代就是把一个大产品拆分出一些最小的实现单位。完成不同的迭代就最…

组合模式(大话设计模式)C/C++版本

组合模式 C #include <iostream> #include <list> using namespace std; // 公司类... 抽象或者接口 class Company { public:Company(string name){this->name name;}virtual void Add(Company *c) 0; // 增加virtual void Remove(Company *c) 0; // 移…