你在 Dify 里添加 Ollama 模型,点保存报连接失败,或者保存成功了但对话一直转圈。这类问题九成不在模型本身,而在「Dify 跑在容器里、Ollama 跑在宿主机」这层网络关系上。这篇按从外到内的顺序给一套排查动作,每步都能单独验证,不用反复重启整套服务。
你在 Dify 里添加 Ollama 模型,点保存报连接失败,或者保存成功了但对话一直转圈。这类问题九成不在模型本身,而在「Dify 跑在容器里、Ollama 跑在宿主机」这层网络关系上。先别急着重装或者换模型,按从外到内的顺序排查一遍,通常十几分钟能定位。
下面每步都能单独验证,不用反复重启整套服务。哪一步卡住就停在那一步查,不要跳步。判断类结论都有不适用的情况,文中会写清楚。
先搞清谁在容器里、谁在宿主机
这一步不做,后面全是瞎改。Dify 的常见部署方式是容器编排,Ollama 大多直接装在宿主机上,两者不在同一个网络命名空间。容器里的 localhost 或 127.0.0.1 指的是容器自己,不是你的电脑,所以填回环地址一定失败。先确认部署形态再动手改配置,形态没搞清就改端口是白忙。
- Dify 在容器、Ollama 在宿主机
- 最常见。容器要用特殊地址访问宿主机,不能用回环地址。
- 两边都在容器里
- 用编排里的服务名互访,先确认是否在同一个网络里。
- 两边都在宿主机
- 可以直接用回环地址,这种情况反而少见。
- 先确认 Dify 是容器跑还是本地跑,看一眼部署方式就知道
- 再确认 Ollama 装在哪台机器、哪个进程里
- 记下两者是不是同一台机器、同一个网络
- 形态没确认之前,先别改任何监听配置
动手前先验证「通不通」,别直接改 Dify
这一步的价值是把问题范围砍一半,避免在错误的层面反复试。先在宿主机上直接访问 Ollama 的接口地址,确认服务本身是活的、模型确实已经加载。如果这一步就不通,问题不在 Dify,先把 Ollama 服务本身跑起来。
- 宿主机直连在宿主机用命令行工具访问 Ollama 的接口,看能不能列出模型。能列出说明服务活着。
- 容器内再访问一次进到 Dify 的容器内部,用同样的地址访问一次。容器内不通就往网络方向查;容器内通了但 Dify 仍报错,就去查配置格式和超时。
- 记录结果把两次结果记下来,作为后续判断依据。两次都不通,先修 Ollama;只有容器内不通,问题在地址或网络。
地址和端口怎么写才不踩坑
宿主机上的 Ollama 默认只监听本机回环,需要显式放开监听地址,容器才够得着。改完监听设置必须重启 Ollama 服务才生效,很多人漏了这一步,以为改坏了。容器访问宿主机有一个固定的特殊地址,不同系统和不同容器方案写法不一样,填错的表现就是静默超时,不报错也不返回,最容易被误判。跨机器部署时,注意别把地址写成只在本机有效的形式。
| 现象 | 大概率原因 | 下一步动作 |
|---|---|---|
| 保存时报连接失败 | 地址填了回环,容器碰不到宿主机 | 换容器访问宿主机的特殊地址 |
| 保存成功但一直转圈 | 端口不对或监听没放开 | 核对监听地址与端口,重启 Ollama |
| 偶尔成功偶尔失败 | 并发或超时设置不合理 | 调低并发、调大超时再试 |
| 提示找不到模型 | 模型名写错或模型未加载 | 在宿主机列出模型核对名称 |
- 确认 Ollama 已放开监听,不是只监听本机回环
- 确认容器用的是访问宿主机的特殊地址,不是回环地址
- 确认端口和 Ollama 实际监听的一致,改过就同步
- 改完监听后重启 Ollama,再回容器里验证一次
通了之后的第二类坑:模型名与参数
网络通了之后,还有一类坑来自模型名和参数。模型名要写 Ollama 里实际存在的那个标签名,多一个后缀或少一段都会报找不到模型。上下文长度、超时时间要按本地机器的实际能力调,设太大容易在长输入时直接断连。本地推理首字延迟比云端高,超时设得太短会在慢机器上误判成「连不上」——这种情况在性能一般的机器上尤其常见,但换到配置好的机器上同样的设置又能跑通,所以调参要看自己机器。
- 模型名与宿主机上列出的名称逐字对齐
- 超时按本地首字延迟往上留余量,宁可先大后小
- 并发别开太高,本地单卡扛不住多路请求时会随机失败
- 长上下文场景单独测一次,别只测短问答
一份可以照着走的排查顺序
把上面的动作串成固定顺序,每一步都有明确的通过标准,就不用靠猜。哪一步没过就停在那一步,别跳。
- 第一步:验证服务本身宿主机直连接口,确认 Ollama 活着、目标模型已在。
- 第二步:分清问题层面容器内部访问同一地址。不通查网络,通了查配置。
- 第三步:核对地址与端口检查监听地址是否放开、端口是否一致,改完重启服务。
- 第四步:核对参数检查模型名、超时、并发,慢机器上优先调大超时。
- 第五步:回归验证以上都通过再回 Dify 保存,保存成功后发一条最短的测试消息走通链路。
补充一点:如果你用的是各家官方 API 而不是本地模型,排查思路完全不同,端口和监听这些都不涉及,可以直接去站内的模型资料库看接入说明。具体到每个模型的参数和地址写法,站内资料库给的是当时可用的版本,写死的数字意义不大,照着当时的说明填就行。
下一步排查用的接口地址、端口说明和各家模型的接入参数,站内资料库有整理好的对照,遇到拿不准的配置可以先去核对当时的数字。→常见问题
为什么我在 Dify 里填 127.0.0.1 一直连不上?
因为 Dify 跑在容器里,容器里的 127.0.0.1 指向容器自身,不是你的宿主机。要改成一个容器能寻址到宿主机的地址,同时让宿主机的 Ollama 放开监听范围,改完重启服务再试。
保存成功了但对话一直转圈,是连接问题吗?
大概率不是连接问题,而是模型加载慢或者超时设太短。先确认模型能正常出字,再把超时调宽、上下文长度调小些;本地推理首字延迟本来就比云端高,慢机器上尤其明显。
Dify 里报找不到模型,但 Ollama 明明拉过?
多半是模型名写得和实际标签不一致,多一段少一段都算不匹配。先去 Ollama 列出本地已有模型,把名字原样复制到 Dify 的模型名栏,别手打。具体字段口径可以到站内对应页面核对当前的界面形态。