[Question]使用 Ollama 本地模型时请求超时,问题提取任务运行完毕但生成问题数为0

Author: Waint0311Created Apr 11, 2026Updated May 1, 2026
Labelsquestion

问题描述

使用 Ollama 本地部署模型(qwen2.5:27b Q4_K_M)进行问题提取时,任务可以 正常运行完毕(不报错、不崩溃),但所有文本块均未能提取出任何问题,生成 问题数为 0。

即使已对以下已知问题进行了修复,该问题依然存在:

  • 已将 server.js 中 headersTimeout/keepAliveTimeout/requestTimeout 设为 600 秒(解决 Node.js v24 undici 60 秒超时问题)
  • 已修复 lib/llm/common/util.js 中 extractJsonFromLLMOutput 在解析失败时 返回 undefined 导致的崩溃(改为返回 [])
  • 已在 lib/services/questions/index.js 中 randomRemoveQuestionMark 函数 添加空值保护

修复上述问题后重新运行,任务不再崩溃,但依然提取不出问题(返回0条)。 最终用户不得不绕过 EasyDataset,自行编写脚本直接调用 Ollama API 才成功 提取到问题,说明模型本身是可以正常工作的。

桌面设备

  • 操作系统:Ubuntu 24.04
  • 浏览器:Chrome
  • Easy Dataset 版本:1.7.3

使用模型

  • 模型提供商:Ollama(本地部署)
  • 模型名称:qwen2.5:27b(Q4_K_M,17GB)

复现步骤

  1. Ubuntu 24.04,Node.js v24.11.1,Ollama 已部署 qwen2.5:27b(Q4_K_M)。
  2. 已按已知方案修复超时和空值崩溃问题。
  3. 上传文本文件,完成分块(共81个文本块)。
  4. 进入"生成问题"页面,使用自定义提示词,启动全量提取任务。
  5. 任务正常运行完毕,无报错、无崩溃。
  6. 任务结束后,查看问题数量:0条。
  7. 使用同一模型、同一提示词,通过脚本直接调用 Ollama API: 成功提取出188个问题,说明模型和提示词本身均无问题。

预期结果

任务正常完成后,应在"问题"页面中看到提取出的问题列表,而非空列表。

其他相关信息

  • Node.js 版本:v24.11.1
  • 绕过 EasyDataset 直接调 Ollama API 可正常出结果,说明问题出在 EasyDataset 的请求发送、响应解析或结果写入流程中。
  • 怀疑方向:流式响应(streaming)的读取/拼接逻辑在 Node.js v24 下存在 兼容性问题,导致响应内容被截断或丢弃,最终 JSON 解析失败返回空数组。
  • 相关文件:lib/llm/common/ollama.js、lib/llm/common/util.js