多模态模型入门:GPT-4V / Claude Vision 到底能做什么

我一个朋友上周在群里发了一张截图------产线报错日志,问"有没有人见过这个错?"

我正好刚接上 Vision API,顺手把截图丢进去,30 秒后 AI 给出了错误原因、涉及的文件名、甚至定位到了第几行。群里安静了 5 秒然后炸了:"这 TM 是把图片丢给 AI 读?"

对,就是。而且一分钱没花------用的免费额度。


多模态模型是什么

一句话:能同时理解文字和图片的 AI。

GPT-4V、Claude 3.5 Sonnet、DeepSeek V4 Pro 都支持。你把一张截图、照片、图表丢给它,它像看懂了似的给你分析。

这不是魔法。本质上是在文本模型的基础上,加了一个视觉编码器------把图片切成小块,每个块变成一个向量,和文本混在一起输入 LLM。

今天我们直接上手测,不讲原理讲实战。


前置准备

DeepSeek V4 Pro 支持 Vision API,用 Anthropic 兼容接口调。和文本接口几乎一样,只是 message 里可以夹带图片:

go 复制代码
package main

import (
    "bytes"
    "encoding/base64"
    "encoding/json"
    "fmt"
    "net/http"
    "os"
)

const baseURL = "https://api.deepseek.com/anthropic"

type ImageSource struct {
    Type      string `json:"type"`
    MediaType string `json:"media_type"`
    Data      string `json:"data"`
}

type ContentBlock struct {
    Type   string       `json:"type"`
    Text   string       `json:"text,omitempty"`
    Source *ImageSource `json:"source,omitempty"`
}

type Message struct {
    Role    string         `json:"role"`
    Content []ContentBlock `json:"content"`
}

type Request struct {
    Model       string    `json:"model"`
    MaxTokens   int       `json:"max_tokens"`
    Temperature float64   `json:"temperature"`
    Messages    []Message `json:"messages"`
}

func askWithImage(imagePath, prompt string) (string, error) {
    data, err := os.ReadFile(imagePath)
    if err != nil {
        return "", fmt.Errorf("读取图片失败: %w", err)
    }

    b64 := base64.StdEncoding.EncodeToString(data)

    req := Request{
        Model:       "deepseek-v4-pro",
        MaxTokens:   800,
        Temperature: 0.1,
        Messages: []Message{
            {
                Role: "user",
                Content: []ContentBlock{
                    {
                        Type: "image",
                        Source: &ImageSource{
                            Type:      "base64",
                            MediaType: "image/png",
                            Data:      b64,
                        },
                    },
                    {
                        Type: "text",
                        Text: prompt,
                    },
                },
            },
        },
    }

    body, _ := json.Marshal(req)
    httpReq, _ := http.NewRequest("POST", baseURL+"/v1/messages", bytes.NewReader(body))
    httpReq.Header.Set("x-api-key", os.Getenv("DEEPSEEK_API_KEY"))
    httpReq.Header.Set("anthropic-version", "2023-06-01")
    httpReq.Header.Set("Content-Type", "application/json")

    resp, err := http.DefaultClient.Do(httpReq)
    if err != nil {
        return "", err
    }
    defer resp.Body.Close()

    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)

    if content, ok := result["content"].([]interface{}); ok && len(content) > 0 {
        if text, ok := content[0].(map[string]interface{})["text"].(string); ok {
            return text, nil
        }
    }
    return "", fmt.Errorf("无法解析响应")
}

实测一:OCR ------ 从截图里提取文字

我把一段 Go 错误日志截了图丢进去:

Prompt: 「提取这张截图中的所有文本,保持原格式。」

结果:

复制代码
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x1234567]

goroutine 1 [running]:
main.processOrder(0x0, 0x0)
    /app/internal/handler/order.go:42 +0x78
main.main()
    /app/cmd/server/main.go:27 +0x3a

一个字不差。连缩进都保持了。比我手动抄快了 100 倍,而且不会抄错。

评分: 准确率 99%,偶有标点遗漏。比 tesseract OCR 强在不需要预处理,带背景的截图也能读。


实测二:图表分析 ------ 读财务报表截图

我从某上市公司年报截了一张营收趋势图:

Prompt: 「分析这张图表的数据趋势。如果有具体数值,请逐一列出。」

结果:

复制代码
这是一张营收趋势折线图。数据如下:

2021年: 约 1250 亿
2022年: 约 1480 亿(同比增长 18.4%)
2023年: 约 1320 亿(同比下降 10.8%)
2024年: 约 1560 亿(同比增长 18.2%)

趋势分析:
- 整体呈增长趋势,但 2023 年有明显下滑
- 2024 年恢复并超过前期高点
- 4 年复合增长率约 7.6%

数值有 5% 以内的误差,但趋势判断完全正确。关键是------它不只是读数字,还算了增长率、给了分析。

评分: 数值准确率 90-95%,趋势分析 100%。适合快速了解图表含义,不适合精确审计。


实测三:UI 审查 ------ 找设计问题

我截了一张公司后台管理的列表页:

Prompt: 「你是 UI 评审专家。审查这个界面,找设计问题。」

结果:

复制代码
发现以下问题:

1. 排版问题:
   - 表格列宽不均匀,"操作"列过宽
   - "创建时间"列显示不完整,内容被截断

2. 交互问题:
   - "删除"按钮仅靠文字区分,无二次确认图标或颜色区分
   - 分页器缺少"跳转到第X页"的输入框

3. 信息层级:
   - 搜索框和筛选条件未做视觉分组
   - 批量操作按钮位置不显眼

4. 可访问性:
   - 表格缺少斑马纹,大屏下难以追踪行

这比我找一个设计师来审查快了 N 倍------虽然不能替代专业设计评审,但作为第一轮自查够了。

评分: 能发现 70% 的通用问题。专业领域(如 iOS/Android 规范差异)准确率下降。


实测四:照片理解 ------ 识别环境信息

我拍了一张机房的设备照片:

Prompt: 「描述这张照片里有什么,尽可能详细。」

结果:

复制代码
照片显示一个服务器机柜,包含:

1. 机柜顶部: 一台 Cisco Catalyst 2960-X 交换机
2. 中部: 3 台 Dell PowerEdge R740 服务器,从上到下排列
   - 最上方那台硬盘指示灯(琥珀色)亮着,表示有硬盘故障
3. 底部: 1 台 UPS 不间断电源,显示面板读数 87%
4. 线缆管理:蓝色网线较多,部分未绑扎整齐

它识别出了具体型号、指示灯状态、UPS 读数。最有用的是「硬盘指示灯琥珀色」------这比我爬梯子去看快多了。

评分: 物体识别 95%+,型号识别 80%(知名品牌更准)。场景理解能力超出预期。


实测五:代码截图转文本 ------ 拯救你的手

朋友用手机拍了一张他显示器上的 SQL 截图,问我「这段 SQL 怎么优化」。

我不想一行行手打。直接丢给 Vision API:

Prompt: 「提取这张图片中的 SQL 代码,不要加任何解释。」

结果: 一字不差地把 30 行 SQL 变成可复制的文本------包括中文注释。

这是我最常用的场景。尤其是接别人的代码截图,不用手打。


五个场景总结

场景 准确率 实际价值 一句话
OCR 文字提取 99% ⭐⭐⭐⭐⭐ 截图一键变文本
图表数据分析 90-95% ⭐⭐⭐⭐ 不影响趋势判断
UI 设计审查 70% ⭐⭐⭐ 第一轮自查够用
照片场景理解 85-95% ⭐⭐⭐⭐ 出乎意料地好
代码截图转文本 98% ⭐⭐⭐⭐⭐ 太实用了

多模态现在还不能做什么

实测中我也踩了坑:

  1. 数数不准。 一张图里有 12 个人,AI 说 8 个。视觉模型的计数能力很弱。
  2. 读手写体翻车。 潦草的手写中文,准确率掉到 50% 以下。
  3. 空间关系判断差。 「A 在 B 的左边还是右边」这类问题经常出错。
  4. 伪造的图片看不穿。 很难判断图片是不是 AI 生成的。

我的建议

多模态不是"图灵测试通过啦"这么玄乎。它就是一个新工具------和 grep、awk、curl 一样,知道它能做什么、不能做什么,你就知道什么时候掏出来用。

当前最稳的三个场景:OCR、代码截图转文本、照片场景描述。先吃透这三个,够用了。

下一篇我把自己在用的封面图生成流程全公开------从 Prompt 到成品,每一步。

相关推荐
葫芦和十三8 小时前
Agent 感知|语意压缩
openai·agent·ai编程
邵宇然8 小时前
编译优化技术全解:从 LLVM Pass 到链接时优化的性能提升路径
人工智能
宝贝儿好8 小时前
【LLM】第一章:知识体系框架概览
人工智能·深度学习·机器学习·自然语言处理
DS随心转插件8 小时前
智谱清言化学式粘贴后变形如何修复?AI 导出鸭从根源解决化学公式跨文档乱码难题
人工智能·ai·豆包·deepseek·ai导出鸭
写点啥呢8 小时前
车机 Android 开机优化复盘:我怎么和 AI 一起把问题定位到 SystemUI
android·人工智能
AI客栈8 小时前
云原生 AI 平台安全设计
人工智能
苏州邦恩精密9 小时前
GOM三维扫描在制造中的真实价值:让“修模”从经验动作变成数据动作
人工智能·科技·机器学习·3d·自动化·制造
邵宇然9 小时前
Rust 系统编程实战:从所有权模型到零成本抽象的工程落地
人工智能
大山佬9 小时前
传感器驱动开发:从硬件时序到 Linux IIO 子系统
人工智能
mit6.8249 小时前
计算机小白自学的两年
人工智能