视觉语言(Vision-Language)模型
Qwen3-VL-Plus 是通义千问 Qwen3-VL 系列中性能最强的视觉语言模型之一,专注于图像 + 文本联合理解与生成任务。支持图像问答、多学科题解、物体定位、文档解析、视觉编码等多模态任务;兼容语言与视觉的跨模态表达与多种语言,具备思考模式与非思考模式,以适应不同业务场景对推理过程与响应速度的需求。
字段名 | 字段类型 | 是否必传 | 字段默认值 | 字段说明 |
|---|---|---|---|---|
| model | string | 否 | 当前实例模型名 | 模型名称,SDK 内部会自动设置为当前实例的 modelName |
| messages | Array<{ role: "system"|"user"|"assistant"; content: string | Array<{ type: "text"|"image"|"video"; text?: string; image?: string; video?: string }> }> | 是 | - | 对话消息数组,支持多轮对话,内容可包含图像、文本或视频 |
| messages.role | "system" | "user" | "assistant" | 是 | - | 消息角色 |
| messages.content | string | Array<{ type: "text"|"image"|"video"; text?: string; image?: string; video?: string }> | 是 | - | 文本内容或 multimodal 内容数组(问题、指令或上下文) |
| messages.content.type | "text" | "image" | "video" | 是 | - | 内容类型 |
| messages.content.text | string | 可选 | - | 文本内容 |
| messages.content.image | string | 可选 | - | 图像 URL 或 Base64 字符串 |
| messages.content.video | string | 可选 | - | 视频 URL 或 Base64 字符串 |
| platform_tools | Array<object> | 否 | 平台工具列表(函数/工具调用) | |
| knowledge_base | Array<object> | 否 | 知识库列表(检索增强) | |
| enable_thinking | boolean | 否 | false | 控制是否开启思考模式(生成推理过程),思考模式更耗时但推理与解释更丰富 |
| vl_high_resolution_images | boolean | 否 | false | 控制是否启用高分辨率图像输入/输出,设为 true 时每张图像 token 上限可达 16384,提升细节感 |
| min_pixels | integer | 否 | 65536 | 控制输入图像或视频帧最小像素数,防止太小导致识别困难 |
| max_pixels | integer | 否 | 1310720 | 控制输入图像或视频帧最大像素数,防止太大导致资源消耗过高 |
| total_pixels | integer | 否 | - | 视频场景中控制所有帧总像素量,以限制处理开销 |
| temperature | number | 否 | 0.7 | 控制文本生成的抽样多样性 |
| top_p | number | 否 | 0.9 | 核采样参数 |
| presence_penalty | number | 否 | 1.5 | 控制输出重复性与新颖性,例如提取文字任务里建议调整为 1.5 |
| repetition_penalty | number | 否 | 1.0 | 重复惩罚参数 |
说明:
非流式响应(DoGenerateOutput,标准格式):
字段名 | 字段类型 | 是否必传 | 字段默认值 | 字段说明 |
|---|---|---|---|---|
| id | string | 否 | - | 请求/响应 ID |
| object | string | 否 | - | 对象类型,一般为 chat.completion |
| created | number | 否 | - | 时间戳(秒) |
| model | string | 否 | - | 实际使用的模型名 |
| log_id | string | 否 | - | 日志跟踪 ID |
| error | string | 否 | "" | 错误信息 |
| code | number | 否 | 0 | 错误码 |
| choices | Array<{ index: number; message: { id: string; role: "assistant"|"user"; type: string; content: string | Array<{ type: "text"|"image"; text?: string; image?: string }> }; finish_reason: string }> | 否 | - | 生成结果列表,根据任务类型返回相应结构化或文本形式的信息,可包含文本描述、分类标签、边界框/三维坐标等 |
| usage | { prompt_tokens: number; completion_tokens: number; knowledge_tokens: number; reasoning_tokens: number; total_tokens: number; image_tokens?: number } | 否 | - | Token 统计信息,包括输入、输出 token 数、图像 token 数等,用于计费与限流 |
流式响应(BaseDoStreamOutputChunk,标准格式):
字段名 | 字段类型 | 是否必传 | 字段默认值 | 字段说明 |
|---|---|---|---|---|
| id | string | 否 | - | 同上 |
| object | string | 否 | chat.completion.chunk | 流片段对象类型 |
| created | number | 否 | - | 时间戳(秒) |
| model | string | 否 | - | 模型名 |
| log_id | string | 否 | - | 日志跟踪 ID |
| error | string | 否 | "" | 错误信息 |
| code | number | 否 | 0 | 错误码 |
| choices | Array<{ index: number; message: { id: string; role: "assistant"|"user"; type: string; content: string | Array<{ type: "text"|"image"; text?: string; image?: string }> }; finish_reason: string|null }> | 否 | - | 生成的增量内容 |
| usage | 同上 | 否 | - | 一般在最后一个片段返回 |
下面示例展示了如何通过自定义 Agent 接入
async sendMessage(message) {
try {
// 简单的参数校验
if (!message?.files?.[0]?.url || !message?.msg) {
return {
code: -1,
msg: '请上传图片并输入问题'
};
}
// 创建 qwen3-vl-plus 模型
const model = this.createModel('qwen3-vl-plus');
const modelResponse = await model.streamText({
messages: [
{
role: 'user',
content: [
{
type: 'image_url',
image_url: { url: message.files[0].url }
},
{
type: 'text',
text: message.msg
}
],
},
],
enable_thinking: true
});
// 流式返回:分片为标准化的 text 类型
for await (const chunk of modelResponse) {
this.sseSender.send({ data: chunk });
}
this.sseSender.end();
} catch (error) {
console.error('qwen3-vl-plus stream error:', error);
this.sseSender.end();
}
}