终极方案!lightRag/graphRag离线使用tiktoken持续报错SSLError,不改源码,彻底解决!

发布于:2025-08-20 ⋅ 阅读:(153) ⋅ 点赞:(0)

在lightRag和GraphRag中,build rag对象时,在离线环境下,tiktoken 一直报错,需要获取

https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken 这个资源,

看了很多帖子,要么存在误导,要么就是改源码,非常不友好!

我的解决思路如下:

首先

```非联网状态下,运行下面代码报错:

import os

import tiktoken

encoding = tiktoken.get_encoding("o200k_base")

```

报错:SSLError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/o200k_base.tiktoken (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:992)'))) 

需要获取的资源为 https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken  

那么浏览器打开,直接手动获取这个文件('o200k_base.tiktoken')。

然后,重要!!重要!!!重要!!! 

```

import hashlib

blobpath = "https://openaipublic.blob.core.windows.net/encodings/o200k_base.tiktoken"

cache_key = hashlib.sha1(blobpath.encode()).hexdigest()

print(cache_key)

# 输出 fb374d419588a4632f3f557e76b4b70aebbca790

``` 

然后配置一个本地tiktoken的缓存文件夹 如: /home/user/tiktoken

将手动获取的文件o200k_base.tiktoken复制到 /home/user/tiktoken 目录下,在该目录下,将o200k_base.tiktoken直接重命名为fb374d419588a4632f3f557e76b4b70aebbca790 

然后设置环境变量TIKTOKEN_CACHE_DIR:

os.environ["TIKTOKEN_CACHE_DIR"] = '/home/user/tiktoken'

执行以下代码不再出错

```

import os

import tiktoken

os.environ["TIKTOKEN_CACHE_DIR"] = '/home/user/tiktoken'

encoding = tiktoken.get_encoding("o200k_base")

```

补充:

#如果是 cl100k_base.tiktoken 的情形;

blobpath = "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"

cache_key = hashlib.sha1(blobpath.encode()).hexdigest()

print(cache_key)

# 输出 9b5ad71b2ce5302211f9c61530b329a4922fc6a4

将cl100k_base.tiktoken文件重命名为9b5ad71b2ce5302211f9c61530b329a4922fc6a4 即可。