
issue: `fetch_url` doesn’t work with Playwright in Offline Mode (missing `averaged_perceptron_tagger_eng` NLTK resource)
快速结论:在 Open WebUI 离线模式下(`OFFLINE_MODE=True`, `HF_HUB_OFFLINE=1`),调用 `fetch_url` 工具时,内部使用的 Python NLTK 库无法自动下载 `averaged_perceptron_tagger_eng` 资源,导致 Playwright 抓取页面后处理失败,返回空结果。优先确认容器内是否已预装此 NLTK 资源包。
问题场景
用户通过 Docker 部署 Open WebUI v0.9.6,配合独立的 Playwright 容器(mcr.microsoft.com/playwright:v1.58.0-noble),且设置了以下离线模式相关环境变量:
OFFLINE_MODE=TrueHF_HUB_OFFLINE=1RAG_EMBEDDING_MODEL_AUTO_UPDATE=False
当聊天调用 fetch_url 工具时,Playwright 成功获取页面内容,但 LLM 收到空结果,容器日志中出现 Python 堆栈跟踪。
报错原文
inability to download an NLTK tagger taggers/averaged_perceptron_tagger_eng/
原因分析
NLTK 的 averaged_perceptron_tagger_eng 是一个词性标注模型数据包。在离线模式下,NLTK 默认会尝试联网自动下载缺失的语料库/模型包,但被 HF_HUB_OFFLINE=1 或网络策略阻断,导致下载失败。fetch_url 工具底层依赖 Playwright(通过 SafePlaywrightURLLoader)对页面内容进行结构化解析,该流程会调用 NLTK 进行文本处理,因而报错。即使临时关闭离线模式也无法绕过——因为资源文件尚未被缓存到容器本地。
可能原因:Open WebUI 的 Docker 镜像或 Playwright 容器镜像中,默认未包含 averaged_perceptron_tagger_eng 的预下载缓存。
环境排查
- Docker 镜像版本:
ghcr.io/open-webui/open-webui:v0.9.6 - Playwright 容器版本:
mcr.microsoft.com/playwright:v1.58.0-noble(Playwright npm 包 v1.58.0) - Python NLTK 版本:Open WebUI 内嵌版(并非独立安装)
- 确认配置项:
OFFLINE_MODE,HF_HUB_OFFLINE,RAG_EMBEDDING_MODEL_AUTO_UPDATE
解决步骤
- 进入 Open WebUI 容器终端(或修改 Dockerfile 重新构建镜像):
docker exec -it <openwebui-container-id> /bin/bash - 手动下载缺失的 NLTK 资源包:
python -m nltk.downloader averaged_perceptron_tagger_eng(此操作需要临时网络连接,或提前在内网可访问的机器上下载后导入。)
- 确认资源下载位置:通常位于
/root/nltk_data或/home/playwright/nltk_data,可将其打包为持久化卷或嵌入镜像。 - 持久化解决(推荐):在 Docker Compose 配置中,将 NLTK 数据目录挂载为卷,或构建自定义镜像时预先 download:
# Dockerfile 示例(基于 open-webui 基础镜像) FROM ghcr.io/open-webui/open-webui:v0.9.6 RUN python -m nltk.downloader averaged_perceptron_tagger_eng - 如果仍失败,可考虑对
fetch_url工具禁用 NLTK 依赖(仅当 Open WebUI 提供相应配置开关,但 Issue 中未提及此选项,此为推测方案)。
验证方法
执行以下 Python 命令,确认不再报错:
python -c "import nltk; nltk.data.find('taggers/averaged_perceptron_tagger_eng')"
随后在 Open WebUI 中恢复离线模式,向聊天发送带 URL 的 fetch_url 工具调用,检查容器日志无 NLTK 相关异常,且 LLM 正确返回页面内容摘要。
参考来源
相关 Issue:#24393 — bug: PPTX/DOC file processing hangs at status=pending in fresh container — averaged_perceptron_tagger_eng NLTK resource not bundled(相同根因)



