部署大模型或者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 环境,则可利用"宿主机下载 + 挂载进容器 + 按哈希改名"的方式绕过网络限制。

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

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


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

相关推荐
Esaka_Forever6 小时前
Skills安全要点总结
安全·llm
TechEdu20260614 小时前
[人工智能]Claude、GPT、Gemini、Copilot与Llama:概念、架构、应用与评估
人工智能·ai·llm
长谷深风11114 小时前
为什么你的 Tool 总被模型选错?
java·大数据·ai·llm·ai agent·工具设计·agent设计
boooooooom15 小时前
尝尝咸淡:从朴素 RAG 到 Graph RAG——一个烹饪问答系统的三层检索升级之路
前端·后端·llm
武子康18 小时前
33B 音画模型塞进 Apple Silicon,h3.c 重写了哪些 Runtime 职责
人工智能·llm·agent
知几蜗牛19 小时前
一张图看懂AI、机器学习、深度学习和生成式AI之间的关系
llm
XLYcmy19 小时前
小红书 算法一面 十一
google·meta·llm·负载均衡·token·moe·glam
谢白羽20 小时前
Mooncake在LLM的kv cache offload
人工智能·llm·论文·agent·mooncake
牧艺1 天前
DeepSeek Harness 上手:一切皆插件的 Agent 运行时,核心流程怎么走
llm·agent·deepseek
魔术师Grace2 天前
模型“开源”了,就能直接拿来做 Agent 吗?
llm·aigc·agent