Dify添加ollama模型失败:NewConnectionError: Failed to establish a new connection

问题描述

Dify 配置 ollama 模型时返回以下报错,无法连接到 ollama 服务:

An error occurred during credentials validation: HTTPConnectionPool(host=‘xxx ip’, port=11434): Max retries exceeded with url: /api/chat (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7ff6c00d4440>: Failed to establish a new connection: [Errno 111] Connection refused’))

添加 ollama 模型时的报错截图:

在这里插入图片描述

问题排查

该问题主要是无法外部访问 ollama 服务引起。

以下排查命令主要基于 ubuntu 系统,Dify 和 ollama 都配置在 ubuntu 服务器上,Ollama 以 systemd 服务的形式运行。

第一步、检查ollama服务是否运行

首先在ollama部署的服务器上,用命令行验证 ollama 服务是否运行:

curl http://localhost:11434

结果显示:Ollama is running 证明ollama服务在运行状态。

如果 ollama 服务未运行,可以用以下命令启动服务:

sudo systemctl daemon-reload
sudo systemctl enable ollama

第二步、测试外部访问 ollama

假设ollama部署的服务器ip为:SERVER_IP,从外部通过 curl 命令访问该地址 curl http://SERVER_IP:11434/ ,或者直接在浏览器访问该地址,查看能否访问ollama服务。

curl 返回结果显示,外部访问 ollama 服务失败:

curl: (7) Failed to connect to SERVER_IP port 11434 after 2050 ms: Could not connect to server

第三步、修改 ollama 服务配置

查看及编辑 ollama 服务文件:

sudo vim /etc/systemd/system/ollama.service

在 [Service] 中修改 OLLAMA_HOSTOLLAMA_ORIGINS 变量。

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
Environment="OLLAMA_HOST=0.0.0.0:11434" #允许外部设备访问,注意该设置有风险
Environment="OLLAMA_ORIGINS=*" #允许跨域访问,注意该设置有风险

[Install]
WantedBy=multi-user.target

OLLAMA_HOST 环境变量通常用来指定 Ollama 服务监听的 IP 地址。默认情况只监听 127.0.0.1(即本地回环接口),只有本机可以访问该服务。如果需要让外部其他设备也能访问到这个服务,将其设置为 0.0.0.0,这样 Ollama 就会监听所有可用的网络接口。

OLLAMA_ORIGINS 环境变量设置为 *,这表示接受所有来源的请求,用于配置跨域访问。

需要注意的是,这两处设置可以方便测试,但在正式部署环境中一定要修改过来。否则会有严重的安全漏洞: 根据国家信息安全漏洞共享平台(CNVD)收录的Ollama未授权访问漏洞(CNVD-2025-04094),未经授权的攻击者可以远程访问Ollama服务接口执行敏感资产获取、虚假信息投喂、拒绝服务等恶意操作。CNVD建议受影响的单位和用户立即采取措施防范漏洞攻击风险。

根据CNVD的建议,若Ollama需提供公网服务,选择以下方法添加认证机制:
1)修改config.yaml、settings.json 配置文件,限定可访问Ollama 服务的IP地址;
2)通过防火墙等设备配置IP白名单,阻止非授权IP的访问请求;
3)通过反向代理进行身份验证和授权(如使用OAuth2.0协议),防止未经授权用户访问。

完成上述配置后,重启 Ollama 服务以使新的环境变量生效。

sudo systemctl restart ollama

第四步、配置防火墙

在部署 ollama 的服务器上允许 11434 端口:

sudo ufw allow 11434/tcp
sudo ufw reload

第五步、重新验证

利用 curl 从外部访问 ollama 模型列表:

curl http://SERVER_IP:11434/api/tags

如果能返回 json 结果说明成功。
在这里插入图片描述

重新在 Dify 模型配置页面里添加 ollama 模型,模型名称参考 json 返回列表中的 model 参数。

添加成功以后,就可以在 Dify 中调用新模型了。

在这里插入图片描述

### 如何在 Dify 中集成 Ollama 模型 要在 Dify 平台上成功添加和配置 Ollama 模型,需遵循以下方法论: #### 配置环境 确保本地已安装并运行 Ollama 推理框架。Ollama 提供了一个轻量级的解决方案来部署大型语言模型 (LLM),例如 Llama 3 或 Mistral[^1]。通过 Docker 容器或其他方式启动 Ollama 后端服务。 #### 添加自定义模型Dify Dify 支持多种类型的模型接入,其中包括对本地部署模型的支持。要将 Ollama模型引入 Dify,需要完成以下几个部分的操作: 1. **创建应用** 登录到 Dify 控制面板后,在“应用”模块下新建一个应用程序实例。此操作会初始化一个新的工作区以便后续绑定模型资源。 2. **设置数据源与 RAG 流程** 如果计划利用检索增强生成(Retrieval-Augmented Generation, RAG),则应先上传文档集或者连接外部数据库作为知识库支持。 3. **指定模型接口参数** 进入该特定应用下的高级选项菜单,“Model Settings”,在这里可以选择新增一条记录指向您的 Ollama 实例地址。通常情况下,默认监听路径类似于 `http://localhost:11434` ,具体取决于实际部署情况。 参数示例: ```json { "url": "http://localhost:11434", "model_name": "mistral" } ``` 4. **验证连通性测试** 使用内置诊断工具发起一次简单的请求调用来确认两者之间的通信正常无误。如果一切顺利,则表明已经成功实现了两者的对接。 5. **调整优化策略** 根据业务需求微调超参设定比如温度值(temp)、最大长度(max_tokens)等影响输出质量的关键因子。 ```python import requests def query_ollama(prompt): url = 'http://localhost:11434' payload = {"prompt": prompt} response = requests.post(f"{url}/api/generate", json=payload).json() return response['response'] print(query_ollama('What is the capital of France?')) ``` 以上脚本展示了如何向 Ollama 发送查询并通过其返回结果处理逻辑封装成函数形式便于进一步扩展使用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值