can not get the pipline templates

该报错通常出现在 Dify 自托管(Docker)环境中,当远程模板服务 tmpl.dify.ai 返回 500 且本地缺少 pipeline_templates.json 文件时触发。优先排查本地容器内 /app/api/constants/pipeline_templates.json 是否存在

快速结论:该报错通常出现在 Dify 自托管(Docker)环境中,当远程模板服务 tmpl.dify.ai 返回 500 且本地缺少 pipeline_templates.json 文件时触发。优先排查本地容器内 /app/api/constants/pipeline_templates.json 是否存在。

适用环境:Dify 1.92(自托管 Docker 部署),Python 3.12(容器内 /app/api/.venv),Linux 容器环境。

最快修复方案:暂无确认的一步修复方案。可优先尝试手动向容器内 /app/api/constants/ 添加有效的 pipeline_templates.json 文件,或手动向数据库写入 pipeline 模板数据。

注意事项:Dify 官方目前未提供离线模板种子脚本;若添加 JSON 文件,需保证其数据结构与代码中的 built_in_retrieval.py 期望格式一致,否则可能继续报错。

问题场景

用户在自托管 Docker 部署的 Dify 1.92 环境中,访问 RAG Pipeline 模板相关页面时,前端请求 /console/api/rag/pipeline/templates 接口失败,UI 中无法显示 pipeline 模板列表。日志显示 Dify 后端先尝试从官方远程服务拉取模板,随后因失败降级到本地文件或数据库,但两者均不可用,最终抛出 500 错误。

报错原文

HTTP Request: GET https://tmpl.dify.ai/pipeline-templates?language=zh-Hans "HTTP/1.1 500 Internal Server Error"
fetch pipeline templates from dify official failed: ValueError('fetch pipeline templates failed, status code: 500'), switch to database.
Exception on /console/api/rag/pipeline/templates [GET]
File "/app/api/services/rag_pipeline/pipeline_template/built_in/built_in_retrieval.py", line 40, in _get_builtin_data
    Path(path.join(root_path, "constants", "pipeline_templates.json")).read_text(encoding="utf-8")

原因分析

可能原因:Dify 的 RAG Pipeline 模板加载顺序是先请求远程服务 tmpl.dify.ai,失败后降级到本地 JSON 文件或数据库。在本 Issue 发生时,远程服务本身返回 500(浏览器直接访问同样报错),属于 Dify 官方服务端的暂时性故障,用户侧无法修复。同时,自托管 Docker 环境的镜像中缺少 /app/api/constants/pipeline_templates.json 文件,且数据库未被模板数据预置,导致降级路径也失败,最终返回 500 给前端。

环境排查

  • Dify 版本:1.92(自托管 Docker)
  • 容器内 Python 环境:/app/api/.venv(Python 3.12)
  • 确认容器内是否存在 /app/api/constants/pipeline_templates.json 文件
  • 检查数据库 pipeline_templates 相关表是否有种子数据
  • 确认当前网络是否可以访问 https://tmpl.dify.ai(浏览器直接测试)

解决步骤

  1. 确认远程服务状态:在浏览器中直接访问 https://tmpl.dify.ai/pipeline-templates?language=zh-Hans。如果返回 500,说明是 Dify 官方服务端问题,等待官方恢复;如果访问正常,则继续排查本地配置。
  2. 检查本地 JSON 文件:进入容器执行 docker exec -it <容器名> ls -l /app/api/constants/pipeline_templates.json,确认文件是否存在。
  3. 获取有效模板文件(可优先尝试):若文件缺失,从 Dify 正常工作的版本或发布包中获取 pipeline_templates.json 样例文件,复制到 /app/api/constants/ 目录下,然后重启 API 容器。
  4. 手动写入数据库(备选方案):如果无法获取 JSON 文件,可参考代码中 built_in_retrieval.py 里定义的模板数据结构,手动向数据库插入 pipeline 模板记录。注意:官方没有提供现成脚本,此方案需要自行理解模板格式。
  5. 联系维护者:如果以上都无法解决,可在 Dify 官方讨论区或向维护者申请获取有效的模板 JSON 样例文件。

验证方法

完成修复后,刷新 Dify 控制台的 RAG Pipeline 页面,确认模板列表能正常加载;同时在容器内再次执行 curl http://localhost/console/api/rag/pipeline/templates(带认证 Cookie)应返回 200,不再出现 500 报错。也可查看日志,确认不再出现 fetch pipeline templates from dify official failed 的降级告警。

参考来源

langgenius/dify #27376

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19681

发表回复

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