Skip to content

Openai 请求格式 本地图片分析 API 文档

通过多模态AI模型分析图片内容,支持OCR和图片信息提取功能。

接口地址

https://www.dmxapi.cn/v1/chat/completions

本地图片分析预处理

需要先把本地图片转为 base64 再提交给模型。

请求示例

python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
================================================================================
DMX API 图片分析示例脚本
================================================================================
功能描述:
    使用 DMX API 的 GPT-5-mini 模型分析本地图片内容
================================================================================
"""

import base64
import json
import requests


# ============================================================================
# 工具函数定义
# ============================================================================

def encode_image(image_path):
    """
    将本地图片文件编码为 Base64 字符串
    
    参数:
        image_path (str): 本地图片文件的路径
        
    返回:
        str: Base64 编码后的图片字符串
        
    异常:
        FileNotFoundError: 当图片文件不存在时抛出
    """
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")


# ============================================================================
# API 配置参数
# ============================================================================

# API 基础地址
BASE_URL = "https://www.dmxapi.cn/"

# 聊天补全接口端点
API_ENDPOINT = BASE_URL + "v1/chat/completions"

# API 密钥(请替换为你的实际密钥)
API_KEY = "sk-*****************************************"


# ============================================================================
# 准备请求数据
# ============================================================================

# 读取并编码本地图片
image_data = encode_image("img/cc_01.png")

# 构建请求载荷
payload = {
    "model": "gpt-5-mini",              # 使用替换成你需要的模型名称,例如 "gpt-5-mini"
    "messages": [
        {
            "role": "user",         # 用户角色
            "content": [
                {
                    "type": "text", 
                    "text": "请分析图片内容"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        # Base64 格式的图片数据
                        "url": f"data:image/png;base64,{image_data}"
                    }
                }
            ]
        }
    ],
    "temperature": 0.1              # 较低的温度值,使输出更确定和客观
}

# 构建请求头
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}


# ============================================================================
# 发送请求并处理响应
# ============================================================================

print("=" * 80)
print("正在向 DMX API 发送图片分析请求...")
print("=" * 80)

# 发送 POST 请求到 API 端点
response = requests.post(API_ENDPOINT, headers=headers, json=payload)

# 解析响应数据
result = response.json()

# 格式化输出结果
print("=" * 80)
print("API 响应结果")
print("=" * 80)

# 输出完整的 JSON 响应(美化格式)
print("【完整响应】")
print(json.dumps(result, indent=2, ensure_ascii=False))

# 提取并单独显示关键信息
if "choices" in result and len(result["choices"]) > 0:
    print("-" * 80)
    print("【图片分析结果】")
    print("-" * 80)
    content = result["choices"][0]["message"]["content"]
    print(content)
    
    # 输出使用统计
    if "usage" in result:
        print("-" * 80)
        print("【Token 使用统计】")
        print("-" * 80)
        usage = result["usage"]
        print(f"提示 Token 数: {usage.get('prompt_tokens', 0)}")
        print(f"补全 Token 数: {usage.get('completion_tokens', 0)}")
        print(f"总计 Token 数: {usage.get('total_tokens', 0)}")
    
    # 输出模型信息
    if "model" in result:
        print("-" * 80)
        print("【模型信息】")
        print("-" * 80)
        print(f"使用模型: {result['model']}")
        if "created" in result:
            from datetime import datetime
            timestamp = result['created']
            created_time = datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
            print(f"创建时间: {created_time}")
else:
    # 如果响应格式异常,输出错误信息
    print("【错误】响应格式异常或请求失败")
    if "error" in result:
        print(f"错误信息: {result['error']}")

print("=" * 80)

返回示例

json
================================================================================
正在向 DMX API 发送图片分析请求...
================================================================================
================================================================================
API 响应结果
================================================================================
【完整响应】
{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "annotations": [],
        "content": "这是一个应用或管理面板的截图,界面语言为中文。对图片内容的分析如下:\n\n- 顶部\n  - 左上角显示应用名称 “CC Switch” 并有主题切换或状态图标(如月亮/太阳)。\n  - 右侧有一组模型/选项按钮:Claude、Codex,当前看 起来 Claude 被选中(或高亮)。旁边有绿色按钮 “MCP”,以及蓝色按钮 “+ 添加供应商”。\n\n- 主体卡片区域\n  - 页面主体只有一条卡片式条目,标题为 “DMXAPI”。\n  - 在标题旁有绿色小标签 “当前使用”(或“当期使用”),表示该供应商/服务当前 被选作正在使用。\n  - 卡片中有一个可点击的链接:https://www.dmxapi.cn。\n  - 卡片右侧有三个图标/按钮:灰色带勾的按钮(显示“使用中”或已启用状态)、铅笔图标(编辑)、垃圾桶图标(删除)。这些是对该供应商的操作项。\n\n- 其它细节\n  - 页面底部右侧有一个小的多彩 “DMXAPI” 标识或水印。\n  - 整体风格简洁、卡片化布局,留白较多,交互元素清晰。\n\n- 推断的功能与用途\n  - 这是一个用于管理或切换第三方供应商/API 的界面,用户可以添加、编辑、删除供应商,并选择当前使用的供应商(DMXAPI 当前处于启用/使用状态)。\n  - 顶部的 Claude、Codex 等可能是不同的模型或服务选项,用于切换使用的模型类型或后端服务。\n\n- 建议(可选)\n  - 若是产品设计角度:可在卡片上增加状态提示(响应时间/可用性)或更多元 信息(描述、API Key 状态)以便快速判断。\n  - 添加悬浮提示(tooltip)说明每个按钮的具体功能,提升可用性。\n\n如需我把界面文字翻译为英文,或对某一部分做更深入的可用性/视觉设计分析,请告诉我。",
        "refusal": null,
        "role": "assistant"
      }
    }
  ],
  "created": 1762512871,
  "id": "chatcmpl-CZEOtBf33mjeHcTujbHwHE9hr8RFN",
  "model": "gpt-5-mini-2025-08-07",
  "object": "chat.completion",
  "system_fingerprint": null,
  "usage": {
    "completion_tokens": 696,
    "completion_tokens_details": {
      "accepted_prediction_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 192,
      "rejected_prediction_tokens": 0
    },
    "prompt_tokens": 779,
    "prompt_tokens_details": {
      "audio_tokens": 0,
      "cached_tokens": 0
    },
    "total_tokens": 1475
  }
}
--------------------------------------------------------------------------------
【图片分析结果】
--------------------------------------------------------------------------------
这是一个应用或管理面板的截图,界面语言为中文。对图片内容的分析如下:

- 顶部
  - 左上角显示应用名称 “CC Switch” 并有主题切换或状态图标(如月亮/太阳)。
  - 右侧有一组模型/选项按钮:Claude、Codex,当前看起来 Claude 被选中(或高亮)。旁边有绿色按钮 “MCP”,以及蓝色按钮 “+ 添加供应商”。

- 主体卡片区域
  - 页面主体只有一条卡片式条目,标题为 “DMXAPI”。
  - 在标题旁有绿色小标签 “当前使用”(或“当期使用”),表示该供应商/服务当前被选作正在使用。
  - 卡片中有一个可点击的链接:https://www.dmxapi.cn。
  - 卡片右侧有三个图标/按钮:灰色带勾的按钮(显示“使用中”或已启用状态)、铅笔图标(编辑)、垃圾桶图标(删除)。这些是对该供应商的操作项。

- 其它细节
  - 页面底部右侧有一个小的多彩 “DMXAPI” 标识或水印。
  - 整体风格简洁、卡片化布局,留白较多,交互元素清晰。

- 推断的功能与用途
  - 这是一个用于管理或切换第三方供应商/API 的界面,用户可以添加、编辑、删除供应商,并选择当前使用的供应商(DMXAPI 当前处于启用/使用状态)。
  - 顶部的 Claude、Codex 等可能是不同的模型或服务选项,用于切换使用的模型类型或后端服务。

- 建议(可选)
  - 若是产品设计角度:可在卡片上增加状态提示(响应时间/可用性)或更多元信息(描述、API Key 状态)以便快速判断。
  - 添加悬浮提示(tooltip)说明每个按钮的具体功能,提升可用性。

如需我把界面文字翻译为英文,或对某一部分做更深入的可用性/视觉设计分析,请告诉我。
--------------------------------------------------------------------------------
【Token 使用统计】
--------------------------------------------------------------------------------
提示 Token 数: 779
补全 Token 数: 696
总计 Token 数: 1475
--------------------------------------------------------------------------------
【模型信息】
--------------------------------------------------------------------------------
使用模型: gpt-5-mini-2025-08-07
创建时间: 2025-11-07 18:54:31
================================================================================

注意事项

  1. 图片需小于 20MB
  2. 支持 PNG/JPEG 格式;非普通扩展名的图片(例如 .file)请先处理成 base64 再给模型
  3. 响应时间取决于图片大小和模型选择

© 2025 DMXAPI Openai 本地图片分析

一个 Key 用全球大模型