[避坑指南]Qwen3.6-35B-A3B 不支持role仅有system
Qwen3.6-35B-A3B 不支持role仅有system
问题描述
Qwen3.6-35B-A3B 模型在正式服务中偶发报错。起初怀疑是空 chunk 处理问题但未修复。经对比正常与异常的请求入参发现,报错时的请求仅包含单一的 system 角色。结合此前的经验验证后推断: Qwen3.6 系列模型不支持仅包含 system 角色的消息输入 ,这是导致报错的根因。
当请求中只包含 system 消息而没有 user 消息时,模型可能会报如下错误:
("Connection broken: InvalidChunkLength(got length b'', 0 bytes read)", InvalidChunkLength(got length b'', 0 bytes read))
正确做法
方式一:将 system 转为 user(推荐)
将原有的 system 消息转换为 user 消息发送:
# 原始消息(不支持)
messages = [
{"role": "system", "content": "你是一个有用的助手"}
]
# 转换后(支持)
messages = [
{"role": "user", "content": "你是一个有用的助手"}
]
方式二:添加用户消息
在 system 消息后添加至少一条 user 消息:
messages = [
{"role": "system", "content": "你是一个有用的助手"},
{"role": "user", "content": "你好"} # 必须有 user 消息
]
注意事项
- 历史对话保留:多轮对话中,历史消息的角色保持不变
- 系统提示词融入:如果需要系统提示词效果,可以将其融入第一条用户消息中
- 模型差异:不同模型对消息格式的要求可能不同,请根据实际使用的模型调整
试错经验分享
当请求中只有 system 消息时,某些模型(如 Qwen3.6 系列)不会返回任何流式数据,导致前端连接一直等待超时。这种 bug 和平常的理解不符合——按直觉 system 消息是合法的,为什么模型不处理?
排查方式除了试错,还有哪些?
-
看官方文档:公开大模型基本都有 API 文档的 Messages 章节,里面会说明消息格式要求。
- OpenAI:
platform.openai.com/docs/guides/text-generation - Qwen(通义千问):
help.aliyun.com/zh/model-studio/ 开发者参考 - DeepSeek:
platform.deepseek.com/api-docs - 智谱 GLM:
open.bigmodel.cn/dev/api
- OpenAI:
-
对比正常与异常的请求日志:这是我最常用的方法。把能跑通的请求和报错的请求分别打印出来逐字段对比,往往能一眼看出差异。
-
看模型返回的错误信息:某些模型虽然在 SSE 流里返回空,但响应头或第一个 chunk 里可能带了错误说明。
-
减少变量逐步测试:从最简单的请求开始(只有 user 消息),确认能跑通后逐步添加 system、工具调用等,直到找出触发错误的那个变量。
如果没有模型文档(如企业内部自研模型),上述 2-4 的方法同样适用。
输入消息的常见规则:
- 消息列表至少包含一条 user 消息(大多数模型的硬性要求)
- 消息角色顺序通常是 system -> user -> assistant -> user -> assistant
- 部分模型不支持 system 消息,需要转成 user
- 部分模型对消息总长度有限制(上下文窗口)

浙公网安备 33010602011771号