离线环境使用tiktoken遇SSL证书验证失败,求代码解决方案
解决离线环境下tiktoken运行的SSL证书错误问题
问题根源
tiktoken调用get_encoding或encoding_for_model时,默认会尝试从在线源下载编码模型文件(如cl100k_base的相关文件)。离线环境下无法正常访问外部资源,加上内网自签名证书的影响,就会触发SSL验证失败的错误。
解决步骤
步骤1:联网环境预下载编码文件
在能联网的电脑上运行以下代码,触发tiktoken下载所需的编码文件:import tiktoken # 下载cl100k_base编码文件 tiktoken.get_encoding("cl100k_base") # 下载gpt-3.5-turbo对应的编码文件(实际为cl100k_base) tiktoken.encoding_for_model("gpt-3.5-turbo")下载的文件默认存储路径:
- Linux/macOS:
~/.cache/tiktoken - Windows:
C:\Users\<你的用户名>\AppData\Local\tiktoken
找到目录下的cl100k_base.tiktoken及相关元数据文件。
- Linux/macOS:
步骤2:复制文件到离线电脑
在离线电脑上创建相同的tiktoken缓存目录(若不存在),将联网电脑下载的所有cl100k_base相关文件复制到该目录。步骤3:修改离线代码指定本地缓存
在代码中设置缓存目录路径,避免tiktoken触发在线请求:import tiktoken import os # 替换为你放置编码文件的本地路径 os.environ["TIKTOKEN_CACHE_DIR"] = "/path/to/local/tiktoken/cache" # 加载本地编码 tokenizer = tiktoken.get_encoding("cl100k_base") # gpt-3.5-turbo基于cl100k_base,直接使用上述tokenizer即可 # 也可保留encoding_for_model调用,此时会读取本地缓存 # tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo") text = "Hello, nice to meet you" tokens = tokenizer.encode(text) print(f"Token数量: {len(tokens)}")步骤4:处理残留SSL验证问题(可选)
若复制文件后仍出现SSL错误,可临时禁用SSL验证(仅在信任的内网环境使用):import tiktoken import ssl import os # 禁用SSL验证 ssl._create_default_https_context = ssl._create_unverified_context os.environ["TIKTOKEN_CACHE_DIR"] = "/path/to/local/tiktoken/cache" tokenizer = tiktoken.get_encoding("cl100k_base") text = "Hello, nice to meet you" tokens = tokenizer.encode(text) print(f"Token数量: {len(tokens)}")
内容的提问来源于stack exchange,提问作者SiSi
相关产品推荐
相关产品推荐

