dify 1.0 ollama 无法连接

模型与算力

给用 Dify 接本地 Ollama 的开发者一套排查顺序:从容器能不能碰到宿主机、端口怎么填,到模型名和超时怎么调。

你在 Dify 里添加 Ollama 模型,点保存报连接失败,或者保存成功了但对话一直转圈。这类问题九成不在模型本身,而在「Dify 跑在容器里、Ollama 跑在宿主机」这层网络关系上。这篇按从外到内的顺序给一套排查动作,每步都能单独验证,不用反复重启整套服务。

你在 Dify 里添加 Ollama 模型,点保存报连接失败,或者保存成功了但对话一直转圈。这类问题九成不在模型本身,而在「Dify 跑在容器里、Ollama 跑在宿主机」这层网络关系上。先别急着重装或者换模型,按从外到内的顺序排查一遍,通常十几分钟能定位。

下面每步都能单独验证,不用反复重启整套服务。哪一步卡住就停在那一步查,不要跳步。判断类结论都有不适用的情况,文中会写清楚。

先搞清谁在容器里、谁在宿主机

这一步不做,后面全是瞎改。Dify 的常见部署方式是容器编排,Ollama 大多直接装在宿主机上,两者不在同一个网络命名空间。容器里的 localhost 或 127.0.0.1 指的是容器自己,不是你的电脑,所以填回环地址一定失败。先确认部署形态再动手改配置,形态没搞清就改端口是白忙。

Dify 在容器、Ollama 在宿主机
最常见。容器要用特殊地址访问宿主机,不能用回环地址。
两边都在容器里
用编排里的服务名互访,先确认是否在同一个网络里。
两边都在宿主机
可以直接用回环地址,这种情况反而少见。
  • 先确认 Dify 是容器跑还是本地跑,看一眼部署方式就知道
  • 再确认 Ollama 装在哪台机器、哪个进程里
  • 记下两者是不是同一台机器、同一个网络
  • 形态没确认之前,先别改任何监听配置

动手前先验证「通不通」,别直接改 Dify

这一步的价值是把问题范围砍一半,避免在错误的层面反复试。先在宿主机上直接访问 Ollama 的接口地址,确认服务本身是活的、模型确实已经加载。如果这一步就不通,问题不在 Dify,先把 Ollama 服务本身跑起来。

  1. 宿主机直连在宿主机用命令行工具访问 Ollama 的接口,看能不能列出模型。能列出说明服务活着。
  2. 容器内再访问一次进到 Dify 的容器内部,用同样的地址访问一次。容器内不通就往网络方向查;容器内通了但 Dify 仍报错,就去查配置格式和超时。
  3. 记录结果把两次结果记下来,作为后续判断依据。两次都不通,先修 Ollama;只有容器内不通,问题在地址或网络。

地址和端口怎么写才不踩坑

宿主机上的 Ollama 默认只监听本机回环,需要显式放开监听地址,容器才够得着。改完监听设置必须重启 Ollama 服务才生效,很多人漏了这一步,以为改坏了。容器访问宿主机有一个固定的特殊地址,不同系统和不同容器方案写法不一样,填错的表现就是静默超时,不报错也不返回,最容易被误判。跨机器部署时,注意别把地址写成只在本机有效的形式。

现象大概率原因下一步动作
保存时报连接失败地址填了回环,容器碰不到宿主机换容器访问宿主机的特殊地址
保存成功但一直转圈端口不对或监听没放开核对监听地址与端口,重启 Ollama
偶尔成功偶尔失败并发或超时设置不合理调低并发、调大超时再试
提示找不到模型模型名写错或模型未加载在宿主机列出模型核对名称
  • 确认 Ollama 已放开监听,不是只监听本机回环
  • 确认容器用的是访问宿主机的特殊地址,不是回环地址
  • 确认端口和 Ollama 实际监听的一致,改过就同步
  • 改完监听后重启 Ollama,再回容器里验证一次

通了之后的第二类坑:模型名与参数

网络通了之后,还有一类坑来自模型名和参数。模型名要写 Ollama 里实际存在的那个标签名,多一个后缀或少一段都会报找不到模型。上下文长度、超时时间要按本地机器的实际能力调,设太大容易在长输入时直接断连。本地推理首字延迟比云端高,超时设得太短会在慢机器上误判成「连不上」——这种情况在性能一般的机器上尤其常见,但换到配置好的机器上同样的设置又能跑通,所以调参要看自己机器。

  • 模型名与宿主机上列出的名称逐字对齐
  • 超时按本地首字延迟往上留余量,宁可先大后小
  • 并发别开太高,本地单卡扛不住多路请求时会随机失败
  • 长上下文场景单独测一次,别只测短问答

一份可以照着走的排查顺序

把上面的动作串成固定顺序,每一步都有明确的通过标准,就不用靠猜。哪一步没过就停在那一步,别跳。

  1. 第一步:验证服务本身宿主机直连接口,确认 Ollama 活着、目标模型已在。
  2. 第二步:分清问题层面容器内部访问同一地址。不通查网络,通了查配置。
  3. 第三步:核对地址与端口检查监听地址是否放开、端口是否一致,改完重启服务。
  4. 第四步:核对参数检查模型名、超时、并发,慢机器上优先调大超时。
  5. 第五步:回归验证以上都通过再回 Dify 保存,保存成功后发一条最短的测试消息走通链路。

补充一点:如果你用的是各家官方 API 而不是本地模型,排查思路完全不同,端口和监听这些都不涉及,可以直接去站内的模型资料库看接入说明。具体到每个模型的参数和地址写法,站内资料库给的是当时可用的版本,写死的数字意义不大,照着当时的说明填就行。

下一步排查用的接口地址、端口说明和各家模型的接入参数,站内资料库有整理好的对照,遇到拿不准的配置可以先去核对当时的数字。

常见问题

为什么我在 Dify 里填 127.0.0.1 一直连不上?

因为 Dify 跑在容器里,容器里的 127.0.0.1 指向容器自身,不是你的宿主机。要改成一个容器能寻址到宿主机的地址,同时让宿主机的 Ollama 放开监听范围,改完重启服务再试。

保存成功了但对话一直转圈,是连接问题吗?

大概率不是连接问题,而是模型加载慢或者超时设太短。先确认模型能正常出字,再把超时调宽、上下文长度调小些;本地推理首字延迟本来就比云端高,慢机器上尤其明显。

Dify 里报找不到模型,但 Ollama 明明拉过?

多半是模型名写得和实际标签不一致,多一段少一段都算不匹配。先去 Ollama 列出本地已有模型,把名字原样复制到 Dify 的模型名栏,别手打。具体字段口径可以到站内对应页面核对当前的界面形态。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。