图像识别与视觉模型
学习如何使用 VL 模型理解图像。
概述
GenStudio 的 API 提供了 VL 模型,支持多种图像相关的功能,例如图像生成、图像分析和多模态交互。本指南将帮助你了解如何通过聊天模式(Chat)使用这些功能。
支持的模型
以下模型支持将图像作为输入。可以通过 API 上传图像,并结合文本提示让模型生成描述、分类或分析结果。
qwen2.5-vl-7b-instruct
qwen2.5-vl-72b-instruct
查看全部视觉模型,请前往 GenStudio 模型广场进行筛选。
初始化客户端
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
python
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"
处理图片和视频输入
图像输入支持为 Base64 编码格式,或图像的 URL。图像输入最多 10 个。
支持类似 OpenAI 的视频输入,入参为 video_url
。视频输入最多 10 个。
暂不支持通过 detail
参数控制图像识别质量。
BASE64
python
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)
URL
使用 URL 方式发送图片/视频时,仅支持来自阿里云 OSS / AWS S3 的 URL。
python
def get_messages():
return [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://imagesforgeneation.oss-cn-beijing.aliyuncs.com/TOJ00551.jpg"
}
},
{
"type": "text",
"text": "请简要描述图片是什么内容?"
}
]
}
]
# Get the messages
messages = get_messages()
获取响应
python
# 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)
多模态应用
通过结合图像输入和文本输出,您可以实现丰富的多模态应用,例如:
- 图像描述:上传图片,让模型生成详细的文字描述。例如「请识别以下图片中的文本内容,表格部分以markdown的格式呈现」
- 图像问答:上传图片并提问,例如“这张图片里有什么动物?”。
- 图像分析:让模型识别图片中的情绪、物体或场景。例如「在图像中检测出所有汽车,并以坐标的形式返回他们的位置」
限制
mage_url
/video_url
单文件大小限制 5 MB。- 由于 GenStudio 安全策略,不接受任意 URL。暂仅以下服务商的 URL:
- 阿里云 OSS
- AWS S3
- 单图/单视频最多读取 16384 个 Token。
常见问题
为什么我无法生成图像?
视觉模型 API 专注于文本交互。如果需要生成图像,请使用图像生成模型,例如 GenStudio ComfyUI 托管服务。。
哪些模型支持图像输入?
GenStudio 支持 Qwen2.5 VL 系列模型,可以图像作为输入。
qwen2.5-vl-7b-instruct
qwen2.5-vl-72b-instruct
查看全部视觉模型,请前往 GenStudio 模型广场进行筛选。
如何处理大文件图像?
建议将图像压缩到合理大小(例如 <4MB),或使用 URL 而非 Base64 编码。