部署大模型或者RAGFlow出现:openaipublic.blob.core.windows.net port=443

大家好,今天我们来聊一个在私有化部署大模型(或 RAGFlow 等工具)时,可能突然跳出来的"拦路虎"。

不少朋友在部署时都遇到过类似这样的报错:

bash 复制代码
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by NameResolutionError("HTTPSConnection(host='openaipublic.blob.core.windows.net', port=443): Failed to resolve 'openaipublic.blob.core.windows.net' ([Errno -3] Temporary failure in name resolution)"))

错误提示最终会指向一个文件下载失败:cl100k_base.tiktoken

这到底是怎么回事?又该怎么解决?今天我们就来拆解一下。


错误信息说了啥?

简单来说,错误提示是:程序在尝试从 openaipublic.blob.core.windows.net 这个地址下载一个名叫 cl100k_base.tiktoken 的文件,但是因为网络问题,连不上这个地址,导致下载失败。

所以核心就一点:网络访问不了这个域名


为什么会这样?

这个文件是很多大模型组件在初始化时,自动去下载的词表编码文件。如果你的服务器或部署环境不能访问外网,或者因为某些网络策略无法连接这个微软 Azure 的域名,就会触发这个错误。


怎么解决?

解决思路分两种,看你的部署方式是不是在 Docker 里。

✅ 情况一:非 Docker 部署

如果你是在自己的物理机或虚拟机上直接部署,那很简单:

先在终端里试试,直接访问这个链接能不能通:

bash 复制代码
curl https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken

如果访问不了,那就需要检查你的服务器网络设置,看是否需要配置代理或开通外网访问权限。

总之,核心就是确保你的物理机或虚拟机能下载到这个文件


🐳 情况二:Docker 部署(最常见)

这种情况最常见,也最容易让人困惑:"明明我宿主机能上网,为什么容器里就不行?"

因为 Docker 默认的网络模式(bridge)可能会受到网络策略影响,导致容器内部访问不了某些外网地址。

这时候,我们可以换个思路:既然容器下载不了,那我们就提前下载好,然后"喂"给容器

🛠 解决步骤:

第一步:宿主机下载文件

在你的宿主机(跑 Docker 的那台机器)上,手动下载这个 tiktoken 文件,放到某个目录里,比如:

bash 复制代码
/home/abc/ragflow/tiktoken_cache/

第二步:关键操作------给文件改名

下载下来后,一定要把文件名改成这个

bash 复制代码
9b5ad71b2ce5302211f9c61530b329a4922fc6a4

对,不要保留任何后缀。为什么必须改?后面会解释。

如下图所示:

第三步:修改 Docker 配置

如果你是用 docker-compose.yml 启动的,主要做两处调整:

1.设置环境变量,告诉程序去哪个目录找这个文件:

bash 复制代码
    environment:
      - TIKTOKEN_CACHE_DIR=/tiktoken_cache

2.把宿主机存放文件的目录,挂载到容器里的对应位置:

bash 复制代码
    volumes:
      - /home/abc/ragflow/tiktoken_cache:/tiktoken_cache

我是在部署ragflow时遇到的问题,修改配置如下:

改完配置,重启容器,问题一般就能解决了。


为什么必须改成那一串神秘字符?

这其实是 OpenAI 源码里设计的一个缓存机制。

我们可以在github找到openai的源码,查看load.py文件:

然后再找到read_file_cached方法,如下图所示:

在代码中,程序并不是直接用原始 URL 作为文件名去查找,而是会把 URL 字符串做一次 SHA1 哈希计算,得到的哈希值(hexdigest)作为缓存文件名。

我们遇到的这个 URL:

bash 复制代码
https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken

经过 hashlib.sha1(blobpath.encode()).hexdigest() 计算后,得到的值正是:

bash 复制代码
9b5ad71b2ce5302211f9c61530b329a4922fc6a4

所以,我们必须把下载的文件改成这个名字,程序才能在缓存目录里找到它。


小结一下

这个问题本质是网络访问受限引发的文件下载失败。 非 Docker 环境,解决网络即可;Docker 环境,则可利用"宿主机下载 + 挂载进容器 + 按哈希改名"的方式绕过网络限制。

如果你在私有化部署时也遇到类似错误,希望这篇内容能帮你快速定位、顺利解决。

如果还有其它部署中的"坑"欢迎留言,我们一起讨论解决。


**原创不易,如果觉得有用,欢迎点赞、在看支持一下。**你的支持,是我持续分享技术干货的最大动力。

相关推荐
codefan※3 小时前
day05-llm-sampling-params
人工智能·大模型·llm·prompt工程·top-p·temperature·ai应用开发
是Yu欸3 小时前
从 Prompt 到 WebUI:基于 SenseNova U1 封装一个图文技术博客生成工具
大模型·llm·prompt·webui·moe·sensenova u1·商汤科技
吴佳浩5 小时前
用 Stitch 实现 AI 前端工程化:找回消失的UI美学(别再 Vibe 瞎Coding 了)
前端·人工智能·llm
这是谁的博客?6 小时前
LangChain 框架深度解析:从 LCEL 到 Agent 架构的核心原理
ai·架构·langchain·llm·agent·架构设计
SpikeKing6 小时前
LLM - 支持 Hermes 智能体的 vLLM 部署 Qwen3.5 与 Qwen3.6 方案
llm·vllm·qwen3.5·hermes·qwen3.6
AINative软件工程7 小时前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现
llm
sg_knight11 小时前
Claude Cowork、ChatGPT、Claude 聊天、Copilot,到底怎么选
chatgpt·llm·copilot·agent·claude·code·claude-code
吴佳浩18 小时前
什么?有人手写 Skill?Agent Skill?Skill?
人工智能·llm·agent
Lei活在当下1 天前
【AI手记系列】2026.05.26 一周AI小结
llm·openai·ai编程