2026-05-25 16:37:47 +08:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
"""
|
|
|
|
|
OpenAI Responses API ↔ DeepSeek Chat API 流式转发代理
|
|
|
|
|
启动:
|
|
|
|
|
python main.py --port 12345
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
# ===================== 命令行参数 =====================
|
|
|
|
|
parser = argparse.ArgumentParser(description="Codex DeepSeek Proxy")
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"--port", type=int, default=12345, help="服务运行端口,默认 12345"
|
|
|
|
|
)
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"--host", type=str, default="0.0.0.0", help="绑定地址,默认 0.0.0.0"
|
|
|
|
|
)
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"--debug",
|
|
|
|
|
action="store_true",
|
|
|
|
|
help="启用调试日志(覆盖 DEEPSEEK_DEBUG 环境变量)",
|
|
|
|
|
)
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
|
# ===================== 初始化 API Key =====================
|
|
|
|
|
# 必须在 FastAPI 应用创建前完成,因为 config 模块在 import 时加载 .env
|
|
|
|
|
from app.config import ensure_api_key, ensure_my_api_key
|
|
|
|
|
|
|
|
|
|
key = ensure_api_key()
|
|
|
|
|
if not key:
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
my_key = ensure_my_api_key()
|
|
|
|
|
if not my_key:
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
# ===================== FastAPI 应用创建 =====================
|
|
|
|
|
from fastapi import FastAPI
|
|
|
|
|
|
|
|
|
|
from routers import register_routes
|
|
|
|
|
from routers.lifespan import create_lifespan
|
|
|
|
|
from routers.middleware import setup_middleware
|
|
|
|
|
|
|
|
|
|
app = FastAPI(
|
|
|
|
|
title="Codex DeepSeek Proxy",
|
|
|
|
|
description="OpenAI Responses API ↔ DeepSeek Chat API 流式转发代理",
|
|
|
|
|
version="0.2.0",
|
|
|
|
|
lifespan=create_lifespan,
|
|
|
|
|
)
|
|
|
|
|
|
2026-05-26 12:15:29 +08:00
|
|
|
@app.get("/health")
|
|
|
|
|
async def health_check():
|
|
|
|
|
"""健康检查端点"""
|
|
|
|
|
return {"status": "ok"}
|
|
|
|
|
|
2026-05-25 16:37:47 +08:00
|
|
|
# 配置中间件
|
|
|
|
|
setup_middleware(app)
|
|
|
|
|
|
|
|
|
|
# 注册路由
|
|
|
|
|
register_routes(app)
|
|
|
|
|
|
|
|
|
|
# ===================== 服务启动 =====================
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
import uvicorn
|
|
|
|
|
uvicorn.run(
|
|
|
|
|
app,
|
|
|
|
|
host=args.host,
|
|
|
|
|
port=args.port,
|
|
|
|
|
access_log=True,
|
|
|
|
|
)
|