共计 1909 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
直接使用 ChatGPT 官方 API 可能会遇到几个主要问题:

- 高延迟 :国内直接调用 OpenAI 的 API,响应时间往往在 1 - 2 秒以上,严重影响用户体验
- 合规风险 :部分国家和地区对 AI 服务有严格监管要求,直接暴露官方 API 存在政策风险
- 成本控制 :官方 API 按 token 计费,流量突增时成本难以预测
技术选型
搭建镜像站需要解决的核心问题是:如何安全高效地转发 API 请求。常见方案有:
- Nginx 反向代理
- 优点:配置简单,性能好
-
缺点:无法动态修改请求头,难以实现复杂逻辑
-
Cloudflare Workers
- 优点:边缘计算,全球加速
-
缺点:免费版有请求次数限制
-
自建代理服务(推荐)
- 使用 FastAPI/Flask 等框架构建
- 完全可控,可以添加自定义逻辑
核心实现
1. FastAPI 代理层搭建
from fastapi import FastAPI, Request
from fastapi.security import HTTPBearer
app = FastAPI()
security = HTTPBearer()
@app.post("/v1/chat/completions")
async def proxy_request(request: Request):
# JWT 验证逻辑
auth = await security(request)
if not verify_jwt(auth.credentials):
raise HTTPException(status_code=403)
# 转发请求到 OpenAI
async with httpx.AsyncClient() as client:
resp = await client.post(
"https://api.openai.com/v1/chat/completions",
json=await request.json(),
headers={"Authorization": f"Bearer {OPENAI_KEY}"}
)
return resp.json()
2. 流式响应处理
@app.post("/v1/chat/completions")
async def stream_proxy(request: Request):
async with httpx.AsyncClient(timeout=None) as client: # 禁用超时
async with client.stream(
"POST",
"https://api.openai.com/v1/chat/completions",
json=await request.json(),
headers={"Authorization": f"Bearer {OPENAI_KEY}"}
) as response:
async for chunk in response.aiter_bytes():
yield chunk
3. Redis 缓存策略
# 缓存常见问答
REDIS_TTL = 3600 # 1 小时
async def get_cached_response(prompt: str) -> Optional[dict]:
cache_key = f"chat:{hashlib.md5(prompt.encode()).hexdigest()}"
if cached := await redis.get(cache_key):
return json.loads(cached)
return None
性能优化
压力测试数据
使用 Locust 进行基准测试(100 并发):
- 平均响应时间:320ms
- 95% 响应时间:<500ms
- RPS:120
连接池配置
httpx.AsyncClient(
limits=httpx.Limits(
max_connections=100,
max_keepalive_connections=20,
keepalive_expiry=30
)
)
避坑指南
- 合规性处理
- 修改 User-Agent 避免被识别为镜像站
-
添加合理的服务条款页面
-
错误处理
try: response = await client.post(...) except httpx.HTTPStatusError as e: if e.response.status_code == 429: # 触发降级逻辑 return cached_response -
IP 轮询陷阱
- 避免频繁更换 IP 导致被风控
- 建议使用 IP 池 + 随机延迟
总结架构
完整架构包含以下组件:
- 负载均衡层(Nginx)
- 业务逻辑层(FastAPI)
- 缓存层(Redis)
- 监控告警(Prometheus)
未来可以扩展的功能:
- 基于用户等级的速率限制
- A/ B 测试不同模型版本
- 请求内容审核过滤
整个搭建过程约需要 2 - 3 天,主要时间花费在调试和优化上。建议先在小流量环境验证,再逐步扩大规模。
正文完
