# 真实图片构造三种协议，并检查不支持视觉的失败

读取真实PNG生成Chat、Responses和Messages输入，校验图像字节；当前仅有文字模型，实际视觉推理结果不冒充完成。

## 实测范围

Pillow真实解码与本地协议构造；对不具视觉能力的本地模型执行负向检查。

## 运行环境

- node v24.14.0
- ollama 0.40.9
- openai 7.43.0
- ai 7.0.130
- @ai-sdk/openai-compatible 3.0.65

## 操作步骤

### 1. 保留图像原件并确认格式

练习图来自本站已有虚构表格素材；先解码确认PNG尺寸、字节和可见内容，不依据文件名猜答案。

### 2. 实际生成三个独立消息体

脚本读取同一张PNG，输出image_url/input_image/image三种对应结构，标签ID与原始文件绑定。

```bash
python3 build-message.py --protocol chat --model tutorial-qwen3-proof:latest --images table=table-input.png --prompt prompt.txt --output new-chat.json
```

### 3. 核对请求协议而不是只换路径

分别用--protocol responses与anthropic生成另外两份；Chat与Messages不是相同数组字段，不能只把端点名字替换。

### 4. 确认文字模型不能代替视觉验收

当前tutorial-qwen3-proof:latest没有vision能力；真实负向请求及错误正文保留在结果中，拒绝不等于已识别图片。

```bash
cd sdk && node run.mjs vision ../vision-image-input-api/new-result.json
```

### 5. 有合适模型后逐字段验图片

选具视觉能力的真实模型，再校验行序、前导零、空白和无法判断字段；本轮本机无视觉型号；真实网关文字探针被当前测试Key分组429拒绝后已停止，未发送图片请求。

## 实际观察

- 真实PNG已由Pillow读取，三种协议构造命令均已执行；构造器没有网络请求。
- 本地不支持视觉的请求记录：{"status": 500, "message": "500 image input is not supported - hint: if this is unexpected, you may need to provide the mmproj"}
- 本API组真实发出2次非流式Chat探针，分别gemini-2.5-flash与gemini-2.5-flash-lite，均HTTP429（当前测试Key分组上游饱和）。以下共享该组探针，绝非本页另发调用；随后SSE、Vercel、n8n、图片请求均未发送。
- 另准备原创1200×800虚构订单表用于后续视觉验收；本轮未向网关发送，不能用预写表格内容冒充模型识别结果。

## 未验证与限制

- 当前没有可用vision模型；图片语义、OCR、费用与apizt视觉链路均未验证。
- 本批获授权使用既有测试Key，OpenAI SDK两次最小探针均HTTP429：当前测试Key分组上游饱和，随后停止。不能据此声称全站不可用；本地成功不能当作apizt上游或实扣成功。

## 官方来源

- [OpenAI 官方：图片输入](https://developers.openai.com/api/docs/guides/images-vision)
- [Ollama 官方：视觉输入需匹配型号](https://docs.ollama.com/api/openai-compatibility)
- [Claude 官方：Messages图像块](https://platform.claude.com/docs/en/build-with-claude/vision)

截图若展示本页执行记录，是结果日志视图，不是产品原生界面。
