N8N中文教程
集成节点/Built in_nodes/Cluster_nodes/Sub nodes/Ollama_Chat_Model

Ollama 聊天模型节点常见问题#

以下是使用 Ollama 聊天模型节点 时可能遇到的一些常见错误和问题,以及相应的解决或排查步骤。

处理参数#

Ollama 聊天模型节点是一种 子节点(sub-node)。当使用表达式处理多个数据项时,子节点的行为与其他节点不同。

大多数节点(包括 根节点 root nodes)可以接收任意数量的数据项作为输入,逐个处理这些项并输出结果。你可以使用表达式引用输入项,节点会依次为每个输入项解析该表达式。例如,如果有五个名字作为输入,表达式 {{ $json.name }} 将依次解析为每一个名字。

而在子节点中,表达式始终只解析为第一个输入项。例如,即使有五个名字作为输入,表达式 {{ $json.name }} 始终只会解析为第一个名字。

无法连接到远程 Ollama 实例#

Ollama 聊天模型节点支持 Bearer Token 认证,可用于连接位于认证代理之后的远程 Ollama 实例(例如 Open WebUI)。

对于需要身份验证的远程连接,请在你的 Ollama 凭据中同时配置远程 URL 和 API 密钥。

更多信息请参考 Ollama 凭据配置说明。

使用 Docker 时无法连接本地 Ollama 实例#

Ollama 聊天模型节点通过 Ollama 凭据 中定义的基础 URL 连接到本地托管的 Ollama 实例。当你在 Docker 中运行 n8n 或 Ollama 时,必须正确配置网络,以确保 n8n 能够访问 Ollama。

Ollama 默认监听 localhost(本地回环地址)。但在 Docker 中,默认情况下每个容器都有自己的 localhost,仅限容器内部访问。因此,如果 n8n 或 Ollama 任一方运行在容器中,则无法通过 localhost 相互连接。

解决方案取决于你如何部署这两个组件。

如果只有 Ollama 运行在 Docker 中#

如果仅 Ollama 运行在 Docker 容器中,请将 Ollama 配置为绑定到 0.0.0.0,使其监听所有网络接口(官方镜像默认已如此配置)。

启动容器时,使用 -p 标志 发布端口。Ollama 默认使用 11434 端口,因此你的 Docker 命令应如下所示:

docker run -d -p 11434:11434 ollama/ollama

配置 Ollama 凭据 时,localhost 地址应能正常工作(将 基础 URL 设置为 http://localhost:11434)。

如果只有 n8n 运行在 Docker 中#

如果仅 n8n 运行在 Docker 容器中,请确保主机上的 Ollama 绑定到 0.0.0.0,以便监听所有接口。

如果你在 Linux 上使用 Docker 运行 n8n,请在启动容器时使用 --add-host 参数,将 host.docker.internal 映射到 host-gateway。例如:

docker run -d --add-host=host.docker.internal:host-gateway -p 5678:5678 n8nio/n8n

如果你使用的是 Docker Desktop,则此配置已自动完成。

配置 Ollama 凭据 时,请使用 host.docker.internal 代替 localhost 作为主机地址。例如,若 Ollama 使用默认端口 11434,则可将基础 URL 设为 http://host.docker.internal:11434

如果 Ollama 和 n8n 分别运行在不同的 Docker 容器中#

如果 Ollama 和 n8n 分别运行在独立的 Docker 容器中,可以通过 Docker 网络实现通信。

确保 Ollama 在容器内绑定到 0.0.0.0(官方镜像默认已如此配置)。

配置 Ollama 凭据 时,使用 Ollama 容器的名称作为主机地址,而非 localhost。例如,若你将 Ollama 容器命名为 my-ollama 并监听默认端口 11434,则基础 URL 应设为 http://my-ollama:11434

如果 Ollama 和 n8n 运行在同一 Docker 容器中#

如果 Ollama 和 n8n 运行在同一 Docker 容器中,则无需特殊网络配置。你可以让 Ollama 监听 localhost,并在 n8n 的 Ollama 凭据 中将基础 URL 设置为 http://localhost:11434

错误:connect ECONNREFUSED ::1:11434#

此错误通常出现在你的计算机启用了 IPv6,但 Ollama 仅监听 IPv4 地址的情况下。

解决方法是:在 Ollama 凭据 中将基础 URL 修改为 IPv4 专用的本地地址 127.0.0.1,而不是可能解析为 IPv6 的 localhost 别名。即使用:

http://127.0.0.1:11434

Ollama 与 HTTP/HTTPS 代理#

Ollama 的配置不支持自定义 HTTP agent,这使得在自定义 HTTP/HTTPS 代理后使用 Ollama 变得困难。即使设置了 HTTP_PROXYHTTPS_PROXY 环境变量,也可能无法正常工作,具体取决于代理配置。

更多详情请参阅 Ollama 官方 FAQ。