calling LLM API: HTTPSConnectionPool(host='api.openai.com', port=443): Max retri...

2025年12月20日 16:50 processing

错误信息

Error calling LLM API: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f494fd4d1c0>: Failed to establish a new connection: [Errno 101] Network is unreachable'))

AI 解决方案

错误翻译

原文:HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/chat/completions (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f494fd4d1c0>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
译文:HTTPS连接池(主机: 'api.openai.com',端口: 443):URL为 `/v1/chat/completions` 的请求超过了最大重试次数(原因:新连接错误:'<urllib3.connection.VerifiedHTTPSConnection 对象位于 0x7f494fd4d1c0>:建立新连接失败:[Errno 101] 网络不可达')。

原因分析

这是Python的requestsurllib3库发出的网络连接错误。根本原因是您的程序无法连接到OpenAI的API服务器(api.openai.com)。具体表现为:

  • 网络层故障:错误码 [Errno 101] Network is unreachable 表明操作系统级别的网络连接完全失败。

  • 目标位置:程序正在尝试访问 https://api.openai.com/v1/chat/completions

  • 重试耗尽:库已按配置尝试了多次重连,均告失败。

解决方案

请按顺序检查以下网络配置项:

1. 检查本地网络连接


运行一个简单的网络测试,确认基础网络是通的。
# 测试本地网络连通性
ping 8.8.8.8

# 测试能否解析OpenAI域名
nslookup api.openai.com 或 dig api.openai.com

2. 检查防火墙和代理设置


这是最常见的原因。您的Python环境可能处于需要代理才能访问外网的环境中。

方案A:在代码中配置代理
如果您有可用的HTTP/HTTPS代理,请这样修改您的请求代码:

import os
import openai

# 方法1:设置环境变量(在代码运行前)
os.environ['HTTP_PROXY'] = 'http://your-proxy-server:port'
os.environ['HTTPS_PROXY'] = 'http://your-proxy-server:port' # 注意:很多HTTPS代理也用HTTP协议

# 方法2:在OpenAI客户端初始化时配置(推荐)
openai.api_key = 'your-api-key'
openai.proxy = {
    'http': 'http://your-proxy-server:port',
    'https': 'http://your-proxy-server:port', # 同上
}
# 或者,如果您使用的是openai>=1.0.0的新版本
from openai import OpenAI
client = OpenAI(
    api_key='your-api-key',
    http_client=httpx.Client(proxy="http://your-proxy-server:port")
)

方案B:检查系统/IDE/终端代理
确认您启动Python程序的环境(如终端、IDE、系统设置)是否配置了正确的代理。

3. 检查OpenAI API服务的区域可用性


确认OpenAI服务在您所在地区是可用的,没有因政策或网络管制被阻断。

️ 预防措施

  • 实现健壮的错误处理与重试逻辑:在调用外部API的代码中,使用指数退避策略进行重试,并明确区分网络错误、认证错误和API限流错误。

  •     import time
        from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type
        import requests
    
        @retry(
            stop=stop_after_attempt(3),
            wait=wait_exponential(multiplier=1, min=4, max=10),
            retry=retry_if_exception_type((requests.exceptions.ConnectionError, requests.exceptions.Timeout))
        )
        def call_api_safely():
            # 您的API调用代码
            pass
        

  • 环境配置外部化:将API密钥、代理地址、重试次数等配置项放入环境变量或配置文件中(如 .env 文件),不要硬编码在代码里。使用 python-dotenv 等库管理。

  •     # .env 文件示例
        OPENAI_API_KEY=sk-...
        HTTP_PROXY=http://proxy.example.com:8080
        HTTPS_PROXY=http://proxy.example.com:8080
        API_MAX_RETRIES=3