Skip to content

Openai Responses 接口 本地图片分析 API 文档

接口概述

该API允许用户上传图片并获取AI生成的详细描述,支持多种图片格式。

基础概念

  • Base64编码:将二进制图片数据转换为文本格式,便于在JSON中传输
  • MIME类型:标识图片格式的标准方式(如image/png)
  • 数据URI:包含MIME类型和Base64数据的统一格式

接口详情

请求地址

POST https://www.dmxapi.cn/v1/responses

请求头

http
Content-Type: application/json
Authorization: Bearer ******  # 替换为你的API密钥

请求参数

json
{
    "model": "gpt-4.1",
    "input": [
        {
            "role": "user",
            "content": [
                {
                    "type": "input_text",
                    "text": "图片描述提示语"
                },
                {
                    "type": "input_image",
                    "image_url": "data:image/png;base64,..."
                }
            ]
        }
    ]
}

Python 示例代码

python
import base64
import json
import os
import requests

# 配置参数
API_KEY = "sk-******"  # 替换为你的 DMXAPI 令牌
IMAGE_PATH = "test.png"  # 本地图片路径

def encode_image_to_base64(filepath):
    """将图片编码为Base64数据URI"""
    # 获取文件扩展名确定MIME类型
    ext = os.path.splitext(filepath)[1].lower()
    mime_map = {
        '.jpg': 'image/jpeg',
        '.jpeg': 'image/jpeg',
        '.png': 'image/png',
        '.gif': 'image/gif',
        '.webp': 'image/webp'
    }
    mime_type = mime_map.get(ext, 'application/octet-stream')
    
    # 读取并编码图片
    with open(filepath, "rb") as f:
        return f"data:{mime_type};base64,{base64.b64encode(f.read()).decode('utf-8')}"


# 主程序
if __name__ == "__main__":
    # 1. 编码图片
    image_data = encode_image_to_base64(IMAGE_PATH)
    
    # 2. 构造请求
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}"
    }
    payload = {
        "model": "gpt-4.1",
        "input": [{
            "role": "user",
            "content": [
                {"type": "input_text", "text": "描述这张图片"},
                {"type": "input_image", "image_url": image_data}  # 图片转 base64 放这里
            ]
        }]
    }
    
    # 3. 发送请求
    try:
        response = requests.post(
            "https://www.dmxapi.cn/v1/responses",
            headers=headers,
            json=payload
        )
        response.raise_for_status()
        print(json.dumps(response.json(), indent=2))
    except Exception as e:
        print(f"请求失败: {str(e)}")

响应示例

成功响应将返回JSON格式的图片描述:

json
{
    "response": "图片中展示了一本放在木桌上的精装书...",
    "status": "success"
}

错误处理

  • 401: API密钥无效
  • 400: 请求参数错误
  • 413: 图片文件过大

一个 Key 用全球大模型