(<HTTPSConnection(host='openaipublic.blob.core.windows.net, port=443) at 0x79752...

2026年05月28日 14:29 38.42 秒 success

错误信息

Model call failed after 4 attempts with ConnectTimeout: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net, port=443): Max retries exceeded with url: /encodings/c 100k_base.tiktoken (Caused by ConnectTimeoutError(<HTTPSConnection(host='openaipublic.blob.core.windows.net, port=443) at 0x7975223a3680>,'Connection to openaipublic.blob.core.windows.net timed out. (connect timeout=None)))

AI 解决方案

🔍 错误分析

1. 🌐 错误翻译


原文:Model call failed after 4 attempts with ConnectTimeout:
HTTPSConnectionPool(host='openaipublic.blob.core.windows.net, port=443): Max retries exceeded with url:
/encodings/c 100k_base.tiktoken (Caused by
ConnectTimeoutError(<HTTPSConnection(host='openaipublic.blob.core.windows.net, port=443) at
0x7975223a3680>,'Connection to openaipublic.blob.core.windows.net timed out. (connect
timeout=None)))

译文:模型调用在4次尝试后失败,错误为连接超时:
HTTPS连接池(主机:'openaipublic.blob.core.windows.net',端口:443):已超出URL的最大重试次数:
/encodings/c100k_base.tiktoken (原因:连接超时错误,连接到 openaipublic.blob.core.windows.net 超时。(连接超时=None))

2. 🎯 原因分析


  • 根本原因:程序无法与微软Azure存储服务器(openaipublic.blob.core.windows.net)建立HTTPS连接,在多次重试后因网络连接超时而失败。

  • 具体位置:程序在尝试下载 tiktoken 词法分析器的编码文件 (c100k_base.tiktoken) 时失败。该文件是某些OpenAI模型用于将文本转换为token的必需依赖项。

  • 触发条件:通常发生在首次运行或需要初始化该依赖时,因国内网络环境访问Azure服务不稳定或被防火墙阻断所致。
  • 3. 💡 解决方案


    方案A(推荐):设置网络镜像或代理
    通过环境变量 TIKTOKEN_CACHE_DIR 指定已下载的文件路径,或设置 OPENAI_API_BASE 为可访问的镜像地址。
    # 在代码或环境变量中设置
    import os
    os.environ['TIKTOKEN_CACHE_DIR'] = '/path/to/your/local/cache'  # 指向本地已下载文件的目录
    # 或者,如果你有国内可用的API镜像地址
    os.environ['OPENAI_API_BASE'] = 'https://your-mirror.com/v1'
    

    方案B:手动下载并放置文件

  • 通过其他渠道(如GitHub或朋友分享)获取 c100k_base.tiktoken 文件。

  • 找到程序尝试读取该文件的本地缓存路径。通常位于:

  •    ~/.cache/tiktoken/
       

    (在Linux/macOS系统中)或对应的用户缓存目录。
  • 将手动下载的文件放置到该目录下。
  • 方案C:增加重试和超时时间(治标)
    在代码中配置HTTP客户端,增加连接超时和重试次数。

    import requests
    from requests.adapters import HTTPAdapter
    from urllib3.util.retry import Retry
    
    # 配置会话,增加超时和重试
    session = requests.Session()
    retries = Retry(total=5, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
    adapter = HTTPAdapter(max_retries=retries)
    session.mount('https://', adapter)
    session.mount('http://', adapter)
    
    # 使用配置后的会话进行网络请求(示例)
    # response = session.get('https://openaipublic.blob.core.windows.net/...', timeout=30)
    

    4. 🛡️ 预防措施


  • 使用国内镜像源:在项目初始化时,将依赖(如tiktoken)的下载源配置为国内可高速访问的镜像。

  • 预缓存依赖文件:在能够稳定访问外网的环境下(如公司服务器),提前运行一次程序以生成并缓存必要的数据文件,然后将缓存目录打包用于部署。

  • 网络环境检查:在应用启动逻辑中加入对关键外网地址(如 openaipublic.blob.core.windows.net)的连通性检查,并提供明确的错误提示和解决方案指引。