Agent 终于能看图了!GLM-5V 让 PaiCLI 在图像识别上有了一双眼睛。
大家好,我是二哥呀。
PaiCLI 已经非常强大了,有 ReAct、Multi-Agent、MCP、Skill、Function Calling,基本上 Claude Code 有的功能都覆盖到了。
今天这篇,我们给 PaiCLI 再追加一个能力:图片输入。听起来简单,但真正做起来涉及到的东西很多。
这个功能的核心前提是多模态模型。单纯的文本模型是看不了图的,比如说 GLM-5.1,于是我们追加了 GLM-5V 模型的 endpoint。

来看看效果,把技术派的首页复制粘贴进去。

能准确识别出这些信息。

- 网站名称:技术派(技术派 logo 在左上角)
- 作者:多篇内容署名 沉默王二(和上一张图的署名一致)
- 核心产品:PaiFlow(Agent 工作流)、派聪明(RAG 项目)
01、为什么 GLM-5.1 看不了图
GLM-5.1 是一个纯文本大语言模型。它的输入只能是文本。
文本经过 Tokenizer 切成 token 序列,送进 Transformer 做注意力计算,输出也是 token 序列再解码回文本。整个推理过程中,模型的“感官”只有一个,就是文本。

GLM-5V 多了一个关键组件:Vision Encoder。

这个 Vision Encoder 通常是一个预训练好的 ViT(Vision Transformer),它的工作是把一张图片转换成一组“视觉 token”。

具体流程是这样的:
第一步,把图片切成固定大小的 patch(通常是 14x14 或 16x16 像素一个 patch)。一张 224x224 的图会被切成 16x16=256 个 patch。实际的大模型处理的图片分辨率更高,比如 2000x2000 的图会被切成几千个 patch。
第二步,每个 patch 经过 ViT 的线性投影层和多层 Transformer,变成一个固定维度的 embedding 向量。这些向量就是“视觉 token”,和文本 token 的 embedding 维度对齐。
第三步,可以粗略理解为视觉 token 和文本 token 进入同一个多模态推理过程。模型通过注意力机制,让文本 token 能“看到”视觉 token,视觉 token 也能参考文本上下文。官方更偏向把 GLM-5V 这套架构描述成“原生多模态融合”。

所以本质上,多模态模型“看图”不是在做 OCR 或者图像识别,而是把图片的像素信息编码成了和文字一样的向量表示,让 Transformer 用注意力机制去理解图文之间的关系。
这也解释了为什么图片输入会消耗大量 token。
一张 1000x1000 的图片,按 14x14 的 patch 切分,大概有 5000+ 个视觉 token。
这些 token 和文本 token 一样参与注意力计算,占用上下文窗口,也参与 API 计费。

从代码层面看,GLM-5.1 和 GLM-5V 在 PaiCLI 里走的是完全不同的路径。
GLMClient 里有一个 selectApiUrl() 方法:
private static String selectApiUrl(String model) {
String normalized = model == null ? "" : model.trim().toLowerCase();
if (normalized.startsWith("glm-5v")) {
return MULTIMODAL_API_URL; // open.bigmodel.cn/api/paas/v4/...
}
return CODING_API_URL; // open.bigmodel.cn/api/coding/paas/v4/...
}
两个完全不同的 API 端点。Coding API 后面跑的是纯文本推理服务。Multimodal API 后面跑的是带 Vision Encoder 的推理服务,能解析图片数据。
02、ContentPart 协议升级
搞清楚了多模态的原理,接下来看 PaiCLI 怎么在代码层面支持它。
第一步是改造 LLM 通信协议。
之前 PaiCLI 的 LlmClient.Message 里 content 就是一个 String,纯文本。Agent 发消息给模型,就是把字符串塞进 JSON 的 content 字段,模型返回的也是一个字符串。
多模态 Vision API 要求 content 不能是字符串,而是一个数组,里面可以混排 text block 和 image block,每个 block 有自己的 type 和数据。
实际发给 API 的 JSON 结构长这样:
{
"role": "user",
"content": [
{"type": "text", "text": "帮我分析下这张截图"},
{"type": "image_url", "image_url":...企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
1 条评论
回复