chatglm处理图像需按部署方式正确上传:网页版拖图至虚线区或点击选择,支持jpg/png/webp(≤20mb),须先传图再提问;streamlit本地界面通过侧边栏“browse files”上传,换图自动清空历史;代码调用需用pil.image对象嵌入messages或按transformers规范传参。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

想让ChatGLM看懂你手机里那张拍糊的发票、刚截的App界面,或者孩子画的歪歪扭扭的数学题,第一步就是把图传进去——但不是随便拖拽就完事,不同部署方式上传路径完全不同,传错位置模型根本“看不见”。
网页版(GLM-4.6V-Flash-WEB / STEP3-VL-10B)直接拖图
打开浏览器访问 https://gpu-podXXXX-7860.web.gpu.csdn.net/ 这类地址后,页面中央会出现一个带虚线边框的上传区。
直接把图片文件拖进这个区域,或点击它弹出系统选择窗口,选中本地图片即可。支持 JPG/PNG/WebP,单图最大 20MB。
【注意:不要点“上传”按钮后再输问题——必须先完成图片加载,再在下方输入框里打字提问,否则模型会忽略图像】
Streamlit本地界面(GLM-4v-9B / ChatGLM3-6B)用侧边栏控件
启动成功后,界面右侧会固定一个“Upload Image”侧边栏模块。
点击“Browse files”,从电脑中选取一张图;支持多轮切换,每次换图都会自动清空上一轮对话历史。
上传完成后,左侧主聊天区会出现缩略图,此时才能输入问题——比如“这张截图里报错信息是什么?”
这一步操作起来很简单,直接把文件拖进去就行。
代码调用(Python脚本)需严格按顺序构造消息
方法一:使用 PIL 打开图像并嵌入 messages 列表
先执行 from PIL import Image,再用 Image.open("receipt.jpg").convert("RGB") 加载图片;
然后构建 messages 结构:
messages = [
{"role": "user", "content": "提取这张发票上的金额", "image": image}
]
【关键:image 字段必须是 PIL.Image 对象,不能是路径字符串,否则模型返回 ./uploads/receipt.jpg 而不是文字内容】
方法二:若用 transformers 官方 pipeline,需配合 tokenizer.apply_chat_template,且确保 image 参数在 content 同级传入,而非塞进字符串里。











