Does Ollama support IQ3_S quantization for Qwen3.8-27B-GSQ-RCO-GGUF? Returns empty content

当通过 Ollama 运行 hf.co/ISTA-DASLab/Qwen3.8-27B-GSQ-RCO-GGUF:IQ3_S 这类 GGUF 模型时,如果 OpenAI 兼容客户端传入的对话历史里存在“非首位 system 消息”,模型可能返回空 content ,本质上通常是模型内嵌 chat t

快速结论:当通过 Ollama 运行 hf.co/ISTA-DASLab/Qwen3.8-27B-GSQ-RCO-GGUF:IQ3_S 这类 GGUF 模型时,如果 OpenAI 兼容客户端传入的对话历史里存在“非首位 system 消息”,模型可能返回空 content,本质上通常是模型内嵌 chat template 抛出了 Jinja Exception: System message must be at the beginning.。优先排查输入消息顺序与模板限制,而不是量化格式本身。

适用环境:Ollama 0.33.3;模型 Qwen3.8-27B-GSQ-RCO-GGUF:IQ3_S;通过 OpenAI 兼容 client/gateway 调用;Issue 中未确认具体操作系统、Python、CUDA 或显卡型号。

最快修复方案:Issue 中明确验证过的做法是使用自定义 Modelfile,显式指定 RENDERER qwen3.8PARSER qwen3.5,再通过 ollama create 重建本地模型后运行。

注意事项:该做法解决的是 renderer/parser 与模板逻辑不匹配导致的消息处理问题,并不等同于“IQ3_S 量化本身被官方全面支持”的结论;如果继续传入非首位 system 消息,是否仍会触发异常需按你的实际客户端归一化逻辑验证。

问题场景

用户在 Ollama 0.33.3 中拉取并运行 hf.co/ISTA-DASLab/Qwen3.8-27B-GSQ-RCO-GGUF:IQ3_S,通过 OpenAI 兼容的客户端或网关发送多轮消息。某个请求里 messages 数组为:第一条 system,中间是 user,随后又出现一条 system,最后是 user。此时 Ollama 可能返回空字符串内容,或者抛出与 system 消息位置相关的 Jinja 异常。

报错原文

Jinja Exception: System message must be at the beginning.

Issue 标题中描述的现象为:

Does Ollama support IQ3_S quantization for Qwen3.8-27B-GSQ-RCO-GGUF? Returns empty content

原因分析

可能原因不是 IQ3_S 量化无法加载,而是模型内嵌的 chat template 对消息顺序有限制。模板中包含如下逻辑:

{% if message.role == "system" %}
    {% if not loop.first %}
        {{- raise_exception('System message must be at the beginning.') }}
    {% endif %}
{% endif %}

因此,当 system 消息出现在 user/assistant 消息之后时,模板会直接抛出 Jinja Exception: System message must be at the beginning.。在部分调用路径中,这个异常可能表现为生成完成但 content 为空,且没有明显错误提示。

环境排查

  • 确认 Ollama 版本是否为 0.33.3 或相关版本。
  • 确认正在运行的模型是否为 hf.co/ISTA-DASLab/Qwen3.8-27B-GSQ-RCO-GGUF:IQ3_S 或基于它创建的自定义模型。
  • 检查客户端或网关发送的 messages 顺序,确认是否存在非首位 system 消息。
  • 检查服务端日志,确认是否出现 Jinja Exception: System message must be at the beginning.
  • 确认通过 ollama show 或 Modelfile 查看模板、renderer、parser 设置是否与模型匹配。

解决步骤

  1. 创建 Modelfile,显式指定 renderer 和 parser:
    FROM hf.co/ISTA-DASLab/Qwen3.8-27B-GSQ-RCO-GGUF:IQ3_S
    RENDERER qwen3.8
    PARSER qwen3.5
  2. 使用该 Modelfile 创建本地模型:
    ollama create qwen3.8:27b-gsq-rco-iq3_s
  3. 运行本地模型测试:
    ollama run qwen3.8:27b-gsq-rco-iq3_s "Say hello"
  4. 如果仍通过 OpenAI 兼容网关调用,建议在网关侧将多个 system 消息合并或提升到首位,避免非首位 system 消息进入 Ollama。Issue 中未给出 Ollama 官方推荐的归一化实现,因此这一步可优先尝试。

验证方法

运行 ollama run qwen3.8:27b-gsq-rco-iq3_s "Say hello",应看到正常输出,例如包含 thinking 内容和 Hello! 👋 How can I help you today?。再通过 /api/chat 发送包含非首位 system 消息的请求,检查是否仍返回空 content 或抛出 Jinja 异常;若不再报错且 content 非空,说明 renderer/parser 设置与消息顺序问题已缓解。

参考来源

ollama/ollama #18297

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 23591

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注