# 大模型api代理 **Repository Path**: ccq/llm-api-proxy ## Basic Information - **Project Name**: 大模型api代理 - **Description**: 使用代理将一个硅基智能(已经有api key)的大模型的api给内网的应用使用,无需指定模型名,调用的的log供审计 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-25 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大模型API代理服务(FastAPI+httpx) ## 项目简介 基于 **FastAPI + httpx** 的大模型API代理服务,一键启动、零配置上手,保留所有核心业务功能。 ## 核心功能 3. **模型名自动映射**:内网自定义模型名 → 自动替换为目标大模型 4. **密钥安全托管**:自动注入上游 API Key,内网无需传递真实密钥 5. **全量审计日志**:所有请求/响应自动落库 SQLite,支持分页查询 6. **内部接口鉴权**:心跳/审计接口支持 Token 安全校验 7. **服务监控**:内置健康检查接口,实时查看服务状态 8. **标准化日志**:控制台 + 文件双输出,自动切割防止文件过大 ## 项目文件结构 ``` 项目根目录/ ├── .env # 核心配置文件(密钥、端口、模型等) ├── main.py # 服务主入口(代理+监控+审计接口) ├── db_utils.py # 数据库工具(日志存储、查询) ├── log_utils.py # 统一日志工具 ├── start_proxy.sh # 一键启动脚本 ├── requirements.txt # Python 依赖清单 ├── README.md # 使用文档 ├── proxy_app.log # 运行日志(自动生成) └── api_audit_logs.db # 审计日志数据库(自动生成) ``` --- ## 快速上手 ### 1. 前置条件 - Python 3.9+ ### 2. 配置 .env 文件 在项目根目录创建/编辑 `.env` 文件,**仅需填写 2 个必填项**,其余默认即可: ```env # ===================== 必填配置 ===================== # 硅基智能 API Key(替换为你的真实密钥) SILICONFLOW_API_KEY=your-siliconflow-api-key # 内部接口鉴权 Token(自定义,用于心跳/审计接口) INTERNAL_TOKEN=your-custom-token-123 # ===================== 可选配置 ===================== # 目标模型名 TARGET_MODEL=deepseek-v3 # 服务监听端口 PROXY_PORT=8080 # 上游 API 地址 UPSTREAM_URL=https://api.siliconflow.cn # 数据库文件名 DB_NAME=api_audit_logs.db # 日志级别 LOG_LEVEL=INFO ``` ### 3. 一键启动服务 **全程自动执行**:创建虚拟环境 → 安装依赖 → 启动服务 ```bash # 创建venv,安装依赖库 python -m venv venv source venv/bin/activate pip install -r requirements.txt # 1. 赋予脚本执行权限(仅首次执行) chmod +x start_proxy.sh # 2. 启动服务 ./start_proxy.sh ``` ### 4. 启动成功标志 终端输出以下内容,代表服务正常运行: ``` INFO: Started server process [xxx] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8080 ``` --- ## 接口使用说明 ### 1. 核心代理接口(内网调用) **兼容 OpenAI 标准格式**,无需传递 API Key,模型名可任意填写 - 地址:`http://服务器IP:8080/v1/chat/completions` - 请求示例: ```bash curl http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "any-internal-model", "messages": [{"role": "user", "content": "你好"}] }' ``` ### 2. 服务心跳接口(需鉴权) 用于监控服务运行状态、运行时长、日志总量 - 地址:`http://服务器IP:8080/health` - 请求头:`Internal-Token: 你的.env配置的Token` ### 3. 审计日志查询接口(需鉴权) 按日期分页查询所有 API 调用记录 - 地址:`http://服务器IP:8080/api/audit` - 请求参数: - `start_date`:开始日期(YYYY-MM-DD) - `end_date`:结束日期(YYYY-MM-DD) - `page`:页码(默认1) - `size`:每页条数(默认20) --- ## 运维指南 ### 停止服务 前台运行模式,直接按 `Ctrl + C` 即可停止 ### 查看日志 ```bash # 服务运行日志 tail -f proxy_app.log ``` ### 查看审计日志 - 数据库文件:`api_audit_logs.db` - 可使用 SQLite Studio、Navicat 等工具直接打开查看 ### 端口说明 默认端口:`8080`(可在 `.env` 中修改 `PROXY_PORT`) --- ## 常见问题(Mac 专属) ### 1. 端口占用 ```bash # 强制释放 8080 端口 lsof -ti:8080 | xargs kill -9 ``` --- ## 技术栈 - **Web 框架**:FastAPI(高性能、异步支持) - **HTTP 客户端**:httpx(异步请求转发) - **虚拟环境**:Python venv(系统依赖隔离) - **数据库**:SQLite(免安装、文件式存储) - **服务器**:Uvicorn(ASGI 官方服务器)