博客

Qwen3.8 Flash 图片识别 API:Python、cURL 与中文截图示例

先给结论

Qwen3.8 Flash 适合把中文视觉任务和轻量 Agent 放进同一个 OpenAI 兼容调用里。模型 ID 使用 qwen3.8-flash,不要把 OpenRouter 的供应商前缀复制进 Moyi API 请求。当前目录与价格会变化,实际费用请以模型页和价格页为准。

它适合哪些中文任务

  • 截图问答,读取中文后台、表格和报错页面。
  • 文档与代码库分析,把图片、PDF 页面和文本放进同一个任务。
  • 浏览器 Agent,先让模型理解页面状态,再输出下一步动作。
  • 图表解释,把趋势、异常点和需要人工确认的地方写成中文摘要。

这些场景的共同点是输入不只有纯文本。先让模型完成观察,再让 Agent 执行操作,能减少把页面坐标和业务判断混在一条提示词里的情况。

OpenAI 兼容请求

bash
curl https://api.moyi-api.com/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-flash",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "请用中文指出截图中的错误,并给出排查顺序。"},
        {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}
      ]
    }]
  }'

如果你的客户端只接受文本,可以先在应用侧完成图片编码,再按它支持的多模态消息格式提交。关键检查项是 model 字段和图片 MIME 类型,模型 ID 保持原样。

Python:发送本地 PNG 截图

先在控制台创建 API Key,将密钥设为环境变量 OPENAI_API_KEY。把待识别图片保存为 screenshot.png,将下面代码保存为 read_image.py,再执行 python3 read_image.py。示例会产生一次按用量计费的请求。

python
import base64
import json
import os
from pathlib import Path
from urllib.request import Request, urlopen

image = base64.b64encode(Path("screenshot.png").read_bytes()).decode("ascii")
payload = {
    "model": "qwen3.8-flash",
    "messages": [{"role": "user", "content": [
        {"type": "text", "text": "只描述截图中可见的信息。数字看不清时标记待复核,不要猜测。"},
        {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image}"}},
    ]}],
}
request = Request(
    "https://api.moyi-api.com/v1/chat/completions",
    data=json.dumps(payload).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}",
        "Content-Type": "application/json",
    },
)
with urlopen(request, timeout=120) as response:
    result = json.load(response)
print(result["choices"][0]["message"]["content"])
print("usage:", result.get("usage"))

这里发送的是 PNG 图片字节,不能直接把 PDF 文件改成 .png。PDF 需要先转成页面图片;如果改用 JPEG,同时把文件名和 MIME 类型改为 image/jpeg。图片通过识别验证后,再接入后续业务动作。

中文 Agent 的提示词拆分

建议把任务分成三个阶段。

  1. 观察。列出页面中的可见元素、字段值和不确定项,不执行点击。
  2. 计划。根据目标生成最多三步动作,每一步说明成功条件。
  3. 执行回报。动作完成后回传结果和截图,再决定是否继续。

例如,先要求模型“只读截图并找出提交按钮”,确认按钮文字后,再把点击动作交给浏览器工具。这样做比一句话要求“看懂页面并完成提交”更容易重试,也方便记录审计日志。

成本与可用性怎么核对

模型目录、供应商路由和价格属于易变事实。发布本文时我核对了公开模型目录中 qwen/qwen3.8-flash 的名称与价格字段,时间为 2026-11-08。文章不复制具体单价,避免缓存文案落后于实时目录。上线前和批量任务前,检查模型详情中的当前输入、输出价格以及可用状态。

要控制成本,可以把截图裁剪到包含关键信息的区域,先用低频观察任务,再只对失败步骤追加截图。对长文档按页或按章节分批,避免每次重传全部上下文。

常见问题

model_not_found 怎么办?

确认请求中是 qwen3.8-flash,不要写成 qwen/qwen3.8-flash,也不要添加 :free 或供应商后缀。然后在模型页确认该模型当前仍对你的站点可用。

视觉输入报 400 怎么办?

检查 content 是否为数组、图片项是否使用 image_url,以及 Base64 前缀是否包含正确 MIME 类型。先用一张小 PNG 验证,再逐步增加图片尺寸。

应该用它替代哪类模型?

当任务同时需要中文理解和图片输入时,它比纯文本模型更直接。若任务完全是代码补全,先比较模型目录中的专用编程模型,再决定是否保留视觉模型。

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。