视觉语言模型与图像理解
视觉语言模型(VLM)是一种融合了计算机视觉和自然语言处理能力的 AI 模型,能够理解图像、视频等视觉输入并生成或理解文本。
概述
GenStudio 的 API 提供了 VL 模型,支持多种图像相关的功能,例如图像生成、图像分析和多模态交互。本指南将帮助你了解如何通过聊天模式(Chat)使用这些功能。
通用视觉语言模型
通用视觉语言模型(VLM)通常执行的任务包括看图说话(图像字幕生成)、视觉问答、图像内容推理以及跨模态检索。
支持的 VLM 列表
以下模型支持将图像作为输入。可以通过 API 上传图像,并结合文本提示让模型生成描述、分类或分析结果。
qwen2.5-vl-7b-instructqwen2.5-vl-32b-instructqwen2.5-vl-72b-instructqwen3-vl-235b-a22b-instructqwen3-vl-235b-a22b-thinkingglm-4.5vglm-4.6v
查看全部视觉模型,请前往 GenStudio 模型广场进行筛选。
处理图片和视频输入(Qwen 系列)
GenStudio API 服务提供一个实现 OpenAI 的 /v1/chat/completions 的 API 接口。可使用 OpenAI Python 客户端接入。
GENSTUDIO_API_KEY:GenStudio API Key。DEFAULT_BASE_URL:使用默认接口时,为https://cloud.infini-ai.com/maas/v1
图像输入支持为 Base64 编码格式,入参为 image_url.url。图像输入最多 10 个。支持类似 OpenAI 的视频输入,入参为 video_url.url。视频输入最多 10 个。暂不支持通过 detail 参数控制图像识别质量。
import os
from openai import OpenAI
API_KEY = os.getenv("GENSTUDIO_API_KEY")
BASE_URL = os.getenv("DEFAULT_BASE_URL")
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
model_name = "qwen2.5-vl-7b-instruct"
import base64
from openai import OpenAI
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
# Function to encode the image
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Path to your image
image_path = "path_to_your_image.jpg"
# Getting the Base64 string
base64_image = encode_image(image_path)
completion = client.chat.completions.create(
model=model_name,
messages=[
{
"role": "user",
"content": [
{ "type": "text", "text": "what's in this image?" },
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
},
},
],
}
],
)
print(completion.choices[0].message.content)注意
Qwen 系列暂不支持使用 URL 方式发送图片/视频。image_url.url 与 video_url.url 字段仅接受 BASE64 格式数据。image_url / video_url 单文件大小限制 5 MB。单图/单视频最多读取 16384 个 Token。
获取响应:
# Non-streaming mode test
response_non_stream = client.chat.completions.create(
model="qwen2.5-vl-7b-instruct", # Model specified in the curl request
messages=messages,
temperature=0.7, # Matches the curl request
stream=False, # Non-streaming, as in the curl request
)
# Print the response
print("Non-stream response:")
print(response_non_stream)
# Print specific parts of the response (adjust based on actual response structure)
print("==== content ====")
print(response_non_stream.choices[0].message.content)处理图片和视频输入(GLM 系列)
GenStudio API 服务提供一个实现 OpenAI 的 /v1/chat/completions 的 API 接口。
API_KEY:GenStudio API key。请将 CURL 命令中的$API_KEY修改为您获取的 API 密钥。DEFAULT_BASE_URL:GenStudio API URL,请使用https://cloud.infini-ai.com/maas/v1
curl --request POST \
--url h"${DEFAULT_BASE_URL}/chat/completions" \
--header "Authorization: Bearer $API_KEY" \
--header "Content-Type: application/json" \
-d '{
"model": "glm-4.6v",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://cloudcovert-1305175928.cos.ap-guangzhou.myqcloud.com/%E5%9B%BE%E7%89%87grounding.PNG"
}
},
{
"type": "text",
"text": "Where is the second bottle of beer from the right on the table? Provide coordinates in [[xmin,ymin,xmax,ymax]] format"
}
]
}
],
"thinking": {
"type":"enabled"
},
"stream": false
}'
{"choices":[{"finish_reason":"stop","index":0,"message":{"content":"\nThe coordinates of the second bottle of beer from the right on the table are <|begin_of_box|>[[95,598,177,993]]<|end_of_box|>.","reasoning_content":"The question is asking for the coordinates of the second bottle of beer from the right on the table. By visually inspecting the image, we identify the bottles of beer on the table. Then we count from the right - hand side of the table to find the second bottle. Once identified, we determine its bounding box coordinates in the format [[xmin,ymin,xmax,ymax]].","role":"assistant"}}],"created":1765353769,"id":"202512101602406dea533a27ae4e77","model":"glm-4.6v","request_id":"202512101602406dea533a27ae4e77","usage":{"completion_tokens":110,"prompt_tokens":696,"prompt_tokens_details":{"cached_tokens":5},"total_tokens":806}}注意
GLM 4.5V/GLM-4.6V 系列支持使用 BASE64/URL 方式发送图片(image_url.url );/使用 URL 方式发送视频(video_url.url)和文件(file_url.url)。单图片大小限制 5 MB;单视频大小限制最多 200MB;文件支持 pdf、txt、word、jsonl、xlsx、pptx,文件个数限制最多 50 个。不支持在单个请求中同时传入 file_url、image_url 和 video_url。
多模态应用
通过结合图像输入和文本输出,您可以实现丰富的多模态应用,例如:
- 图像描述:上传图片,让模型生成详细的文字描述。例如「请识别以下图片中的文本内容,表格部分以markdown的格式呈现」
- 图像问答:上传图片并提问,例如“这张图片里有什么动物?”。
- 图像分析:让模型识别图片中的情绪、物体或场景。例如「在图像中检测出所有汽车,并以坐标的形式返回他们的位置」
DeepSeek-OCR 模型
DeepSeek-OCR 是一个专为处理复杂文档和高精度表格而设计的高效能视觉语言模型(VLM)。
OCR 任务场景及提示词
DeepSeek-OCR 支持多种任务场景,建议使用 DeepSeek 官方已适配的简单提示词:
- 文档转 Markdown:
<image>\n<|grounding|>Convert the document to markdown. - 通用 OCR:
<image>\n<|grounding|>OCR this image. - 无布局提取:
<image>\nFree OCR. - 图表解析:
<image>\nParse the figure. - 图像描述:
<image>\nDescribe this image in detail. - 文本定位:
<image>\nLocate <|ref|>特定文字<|/ref|> in the image.
注意
- 官方推荐 temperature 设置为 0。
- 默认采用 Gundam 模式,不支持用户指定。
- 默认已设置官方推荐的
NGramPerReqLogitsProcessor参数,如ngram_size/window_size,不支持指定。
图表图像解析
以下 CURL 请求示例默认从环境变量加载 API 密钥和 Base URL。请注意提前设置环境变量。
API_KEY:GenStudio API key。请将 CURL 命令中的$API_KEY修改为您获取的 API 密钥。DEFAULT_BASE_URL:GenStudio API URL,请使用https://cloud.infini-ai.com/maas/v1
# 图像转 base64,需添加前缀
figuretobase64="data:image/png;base64,$(base64 -i figure.png | tr -d '\n')"
curl "${DEFAULT_BASE_URL}/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-ocr",
"temperature": 0.0,
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "'"$figuretobase64"'" }
},
{
"type": "text",
"text": "<image>\nParse the figure."
}
]
}
]
}'注意
- base64 字符换需添加前缀。
base64工具以 MacOS Zsh 为例,不适用于 Linux / Windows 平台(选项有差异)。 - 输入的图表图像文件应仅包含图标本身,否则无法保证解析效果。
PDF 解析
以下 CURL 请求示例默认从环境变量加载 API 密钥和 Base URL。请注意提前设置环境变量。
API_KEY:GenStudio API key。请将 CURL 命令中的$API_KEY修改为您获取的 API 密钥。DEFAULT_BASE_URL:GenStudio API URL,请使用https://cloud.infini-ai.com/maas/v1
# pdf 转 base64,需添加前缀
pdftobase64="data:application/pdf;base64,$(base64 -i 2510.12766v1.pdf | tr -d '\n')"
curl "${DEFAULT_BASE_URL}/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-ocr",
"temperature": 0.0,
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "'"$pdftobase64"'" }
},
{
"type": "text",
"text": "<image>\n<|grounding|>Convert the document to markdown."
}
]
}
]
}'注意
- base64 字符换需添加前缀。
base64工具以 MacOS Zsh 为例,不适用于 Linux / Windows 平台(选项有差异)。
API 输入格式限制
- 暂不支持使用 URL 方式发送图片/视频/PDF。
image_url.url与video_url.url字段仅接受 BASE64 格式数据。 image_url/video_url单文件大小限制 5 MB。- 单图/单视频最多读取 16384 个 Token。
常见问题
为什么我无法生成图像?
视觉模型 API 专注于文本交互。如果需要生成图像,请使用图像生成模型。
哪些模型支持图像输入?
GenStudio 支持 Qwen2.5 VL 系列模型,可以图像作为输入。
qwen2.5-vl-7b-instructqwen2.5-vl-72b-instruct
查看全部视觉模型,请前往 GenStudio 模型广场进行筛选。
如何处理大文件图像?
建议将图像压缩到合理大小(例如 <4MB)。