本地终端敲下 curl https://api.openai.com/v1/models,光标停住 30 秒,最后甩给你一句 Connection timed out;换成 Python SDK,报的是 httpx.ConnectError 或 Connection reset by peer。代码没写错,Key 也是新充值的——问题出在网络层。
直答速览: 在中国大陆直连 api.openai.com、api.anthropic.com、generativelanguage.googleapis.com 这类端点,超时和连接重置是常态。稳定的工程解法有四条路:
- 开发机走代理:
HTTPS_PROXY环境变量 + 官方 SDK 原生支持,5 分钟搞定本地调试; - 服务器部署到海外区域:香港/新加坡/日本的 VPS 或云函数直连 API,国内业务侧通过自建反向代理统一接入;
- 企业合规采购:Azure OpenAI Service、AWS Bedrock(Claude)、Google Cloud Vertex AI(Gemini),延迟与合规都更优;
- JetStream VPN 智能分流:终端调试流量走低延迟香港/新加坡节点,国内业务流量直连,互不干扰。
下面逐个展开。开始之前,先花两分钟确认你的问题真的是网络问题。
第一步:分清是网络不通,还是账号/配额问题
很多人卡在”API 连不上”,其实一半的情况根本不是网络原因。判别方法很简单——看请求是”没有响应”还是”有响应但报错”:
# 用 curl 直接探测(10 秒连接超时)
curl -v --connect-timeout 10 https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
| 现象 | 结论 | 该做什么 |
|---|---|---|
卡住直到 Connection timed out | 网络层不通 | 本文的四种方案 |
Connection reset by peer / TLS 握手中断 | 网络层被重置 | 本文的四种方案 |
HTTP 401 Unauthorized | 网络通了,Key 无效或写错 | 检查 Key、检查是否混用了不同平台的 Key |
HTTP 429 Too Many Requests | 网络通了,限流或配额耗尽 | 查看账单页与 rate limit,加退避重试 |
HTTP 403 + unsupported_country_region_territory | 网络通了,但出口 IP 所在地区不受支持 | 更换网络出口所在区域 |
关键判据:只要能收到 HTTP 状态码(哪怕是 4xx),网络就是通的,问题在账号、配额或出口 IP 区域;收不到任何 HTTP 响应,才是本文要解决的连通性问题。
另外提醒一句:各 API 服务商对服务地区、账号注册地与支付方式有各自的条款要求,接入前请以官方说明为准,本文只讨论网络连通性与工程实践。
方案一:开发机走代理——HTTPS_PROXY + 官方 SDK
这是本地开发调试的标准解法。OpenAI 和 Anthropic 的官方 Python SDK 底层都基于 httpx,默认会读取 HTTPS_PROXY 环境变量,所以最简单的做法是一行环境变量都不用改代码:
# JetStream 等代理客户端本地监听端口(以 7890 为例,以你的客户端实际端口为准)
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
python your_script.py # SDK 自动走代理,代码零改动
如果你不想污染全局环境变量(比如同一台机器上还有必须直连的服务),可以在代码里为单个客户端显式指定代理:
import httpx
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
http_client=httpx.Client(proxy="http://127.0.0.1:7890"),
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "ping"}],
)
print(resp.choices[0].message.content)
Anthropic 的 Python SDK 是同样的写法:
import httpx
from anthropic import Anthropic
client = Anthropic(
api_key="sk-ant-...",
http_client=httpx.Client(proxy="http://127.0.0.1:7890"),
)
msg = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=64,
messages=[{"role": "user", "content": "ping"}],
)
print(msg.content[0].text)
Node.js 侧,openai 包可以通过 httpAgent 挂上代理:
import OpenAI from "openai";
import { HttpsProxyAgent } from "https-proxy-agent";
const client = new OpenAI({
httpAgent: new HttpsProxyAgent(process.env.HTTPS_PROXY),
});
const resp = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "ping" }],
});
Gemini 的 google-genai SDK 同样遵循 HTTPS_PROXY 环境变量,无需额外配置。
代理本身的质量直接决定调试体验:LLM API 是长连接 + 流式响应,代理节点抖动会直接表现为 stream 中途断开。JetStream 的香港/新加坡节点到三家 API 端点的延迟通常在 50-100ms 量级,配合流式输出调试基本无感;全程 AES-256 加密,你的请求内容和 API Key 不会在链路上裸奔。关于代理链路延迟对 AI 编码工具体验的影响,可以看这篇拆解:《AI 编码助手卡顿的真相:延迟鸿沟解码》。
优点: 配置最快;SDK 原生支持,零侵入。 局限: 只解决开发机;生产服务器不适合依赖桌面代理客户端。
方案二:服务器部署到海外区域 + 自建反向代理
生产环境的正确姿势不是给服务器挂代理,而是把调用 LLM API 的服务直接部署在网络通畅的区域——香港、新加坡、日本的 VPS,或者相应区域的云函数/容器服务。这些区域到 OpenAI/Anthropic/Google 端点的直连延迟低且稳定。
如果你的主业务在国内机房,常见架构是在海外节点上给自己的服务做一层薄薄的反向代理,把 API 流量统一收口。以 Nginx 为例:
# 部署在香港/新加坡 VPS 上,仅供自己的业务调用,务必加访问控制
server {
listen 443 ssl;
server_name ai-gw.your-own-domain.com;
location /openai/ {
proxy_pass https://api.openai.com/;
proxy_ssl_server_name on;
proxy_set_header Host api.openai.com;
proxy_buffering off; # 流式响应必须关闭缓冲
proxy_read_timeout 300s;
}
location /anthropic/ {
proxy_pass https://api.anthropic.com/;
proxy_ssl_server_name on;
proxy_set_header Host api.anthropic.com;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
然后在国内业务侧,用 SDK 的 base_url 参数指向你自己的网关:
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://ai-gw.your-own-domain.com/openai/v1",
)
from anthropic import Anthropic
client = Anthropic(
api_key="sk-ant-...",
base_url="https://ai-gw.your-own-domain.com/anthropic",
)
必须强调的安全红线:base_url 只应指向你自己控制的服务。 网上流传的各类第三方”API 中转站”,本质是让你把 API Key 和全部请求内容交给一个陌生人运营的服务器——Key 被盗刷、对话数据被留存转卖的案例屡见不鲜。来路不明的中转地址,一个都不要用;自建网关也要配好访问控制(IP 白名单、鉴权头),别把它变成公网上的免费中转。
优点: 生产级稳定;延迟可控;流量归属清晰。 局限: 需要多维护一台海外节点;有一定运维成本。
方案三:企业合规路径——Azure OpenAI、AWS Bedrock、Vertex AI
如果你在企业环境做正式采购,三大云厂商的托管版本是国内团队最常走的正式渠道:
| 服务 | 提供的模型 | 特点 |
|---|---|---|
| Azure OpenAI Service | GPT-4o、GPT-4.1、o 系列等 | 与 OpenAI 官方 API 协议兼容,SDK 只需改 endpoint 与鉴权;可选择东亚/东南亚区域部署降低延迟 |
| AWS Bedrock | Claude 全系(Sonnet/Opus/Haiku) | IAM 鉴权融入现有 AWS 体系;亚太区域(东京/新加坡)可用 |
| Google Cloud Vertex AI | Gemini 全系 | 与 GCP 项目、配额、审计体系打通;亚太区域可用 |
这条路的核心优势有三点:企业合同与发票(走正规采购流程)、SLA 与配额保障(不再和全球免费用户挤同一个限流池)、就近区域部署(选择亚太区域后,延迟比绕道美国西海岸直连低得多)。SDK 层面三家都提供了与各自原生 API 高度一致的接入方式,例如 Bedrock 上调用 Claude 可以直接用 Anthropic 官方 SDK 的 AnthropicBedrock 客户端,迁移成本很低。
对于有合规审计要求的团队,这基本是唯一值得认真考虑的方案。
优点: 合规、稳定、延迟优、有 SLA。 局限: 需要企业云账号与采购流程;个人开发者门槛较高。
方案四:JetStream 智能分流——调试走 VPN,业务直连
回到开发者的日常:你需要终端里的 curl、SDK 调试、pip install、查文档全都通畅,但又不希望国内的服务(内网 API、国内云、视频会议)被绕路拖慢。全局代理是个笨办法——正确的解法是智能分流。
JetStream VPN 的分流规则可以做到:
api.openai.com、api.anthropic.com、generativelanguage.googleapis.com等海外 API 域名自动走香港/新加坡低延迟节点;- 国内域名与内网流量直连,延迟零损耗;
- 全链路 AES-256 加密,公司 Wi-Fi 或咖啡馆网络下调试也不必担心请求内容与 Key 泄露。
配合方案一的 HTTPS_PROXY 写法,开发机上”该走的走、该直连的直连”,一次配置长期生效。移动端调试(比如在安卓设备上测试你的 AI App)也可以直接装客户端:JetStream Android 下载。
如果你还在做模型侧的工作,下载 Hugging Face 权重同样是被出口带宽卡脖子的重灾区,解法见这篇:《Hugging Face 模型下载太慢?中国用户完整加速指南》。
排错速查表
| 症状 | 最可能原因 | 处理 |
|---|---|---|
curl 直接超时,无任何 HTTP 响应 | 直连不通 | 走方案一/四;生产环境走方案二/三 |
| 设了代理仍超时 | 代理端口写错 / 客户端未开启局域网或系统代理 | curl -x http://127.0.0.1:7890 单独验证代理可用性 |
SDK 报 Connection reset by peer | 链路被重置,常见于直连或劣质线路 | 更换稳定节点;确认没有走透明代理 |
| 流式响应中途断开 | 代理/网关缓冲或超时设置 | Nginx 关闭 proxy_buffering,拉长 proxy_read_timeout;换低抖动节点 |
401 Unauthorized | Key 错误、过期或平台混用 | 网络没问题,去控制台检查 Key |
429 Too Many Requests | 限流或余额耗尽 | 网络没问题,检查配额;代码里加指数退避 |
403 unsupported_country_region_territory | 出口 IP 区域不受支持 | 更换出口区域(如香港节点遇限可切新加坡/日本) |
| 只有 Python 超时,curl 正常 | SDK 没吃到代理环境变量 | 确认 HTTPS_PROXY 在当前 shell 已导出,或用 http_client 显式指定 |
常见问题
为什么我的请求有时通有时断?
跨境公网链路的丢包率随时段波动,晚高峰尤其明显。LLM API 的流式长连接对丢包非常敏感——一次重传超时就可能断流。解法是把链路换成质量稳定的专线级节点(方案四),或干脆把调用端搬到海外(方案二/三)。
base_url 能不能指向网上找的免费中转地址?
不能。API Key 出现在每一个请求头里,指向别人的中转就等于把 Key 与全部请求数据交给对方。只把 base_url 指向你自己部署、自己控制的网关。
我该选哪个方案?
个人开发调试:方案一 + 方案四组合,成本最低见效最快。小团队生产服务:方案二,海外节点收口。企业正式项目:方案三,直接走云厂商采购。
Gemini API 有免费层,国内能白嫖吗?
免费层与付费层走同一个端点 generativelanguage.googleapis.com,网络层问题完全相同,本文方案同样适用。但注意 Google 对服务地区有官方条款,账号与支付方式需符合要求。
结语
“API 连不上”是一个被过度神秘化的问题。先用一条 curl 分清网络问题和账号问题,再按场景对号入座:开发机上 HTTPS_PROXY 五分钟解决,生产环境海外部署加自建网关,企业项目直接走 Azure/Bedrock/Vertex AI。配合 JetStream 的智能分流,调试流量与业务流量各行其道——把时间花在写代码上,而不是和超时报错搏斗。