diff --git a/apps/gpt-load/README.md b/apps/gpt-load/README.md
new file mode 100644
index 000000000..049996a22
--- /dev/null
+++ b/apps/gpt-load/README.md
@@ -0,0 +1,461 @@
+# GPT-Load
+
+中文文档 | [English](README_EN.md)
+
+[](https://github.com/tbphp/gpt-load/releases)
+
+
+
+一个高性能、企业级的 AI 接口透明代理服务,专门为需要集成多种 AI 服务的企业和开发者设计。采用 Go 语言开发,具备智能密钥管理、负载均衡和完善的监控功能,专为高并发生产环境而设计。
+
+详细请查看[官方文档](https://www.gpt-load.com/docs)
+
+
+
+## 功能特性
+
+- **透明代理**: 完全保留原生 API 格式,支持 OpenAI、Google Gemini 和 Anthropic Claude 等多种格式
+- **智能密钥管理**: 高性能密钥池,支持分组管理、自动轮换和故障恢复
+- **负载均衡**: 支持多上游端点的加权负载均衡,提升服务可用性
+- **智能故障处理**: 自动密钥黑名单管理和恢复机制,确保服务连续性
+- **动态配置**: 系统设置和分组配置支持热重载,无需重启即可生效
+- **企业级架构**: 分布式主从部署,支持水平扩展和高可用
+- **现代化管理**: 基于 Vue 3 的 Web 管理界面,直观易用
+- **全面监控**: 实时统计、健康检查、详细请求日志
+- **高性能设计**: 零拷贝流式传输、连接池复用、原子操作
+- **生产就绪**: 优雅关闭、错误恢复、完善的安全机制
+- **双重认证体系**: 管理端与代理端认证分离,代理认证支持全局和分组级别密钥
+
+## 支持的 AI 服务
+
+GPT-Load 作为透明代理服务,完整保留各 AI 服务商的原生 API 格式:
+
+- **OpenAI 格式**: 官方 OpenAI API、Azure OpenAI、以及其他 OpenAI 兼容服务
+- **Google Gemini 格式**: Gemini Pro、Gemini Pro Vision 等模型的原生 API
+- **Anthropic Claude 格式**: Claude 系列模型,支持高质量的对话和文本生成
+
+## 快速开始
+
+### 环境要求
+
+- Go 1.23+ (源码构建)
+- Docker (容器化部署)
+- MySQL, PostgreSQL, 或 SQLite (数据库存储)
+- Redis (缓存和分布式协调,可选)
+
+### 方式一:Docker 快速开始
+
+```bash
+docker run -d --name gpt-load \
+ -p 3001:3001 \
+ -e AUTH_KEY=sk-123456 \
+ -v "$(pwd)/data":/app/data \
+ ghcr.io/tbphp/gpt-load:latest
+```
+
+> 使用 `sk-123456` 登录管理界面:
+
+### 方式二:使用 Docker Compose(推荐)
+
+**安装命令:**
+
+```bash
+# 创建目录
+mkdir -p gpt-load && cd gpt-load
+
+# 下载配置文件
+wget https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/docker-compose.yml
+wget -O .env https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/.env.example
+
+# 启动服务
+docker compose up -d
+```
+
+默认安装的是 SQLite 版本,适合轻量单机应用。
+
+如需安装 MySQL, PostgreSQL 及 Redis,请在 `docker-compose.yml` 文件中取消所需服务的注释,并配置好对应的环境配置重启即可。
+
+**其他命令:**
+
+```bash
+# 查看服务状态
+docker compose ps
+
+# 查看日志
+docker compose logs -f
+
+# 重启服务
+docker compose down && docker compose up -d
+
+# 更新到最新版本
+docker compose pull && docker compose down && docker compose up -d
+```
+
+部署完成后:
+
+- 访问 Web 管理界面:
+- API 代理地址:
+
+> 使用默认的认证 Key `sk-123456` 登录管理端,认证 Key 可以在 .env 中修改 AUTH_KEY。
+
+### 方式三:源码构建
+
+源码构建需要本地已安装数据库(SQLite、MySQL 或 PostgreSQL)和 Redis(可选)。
+
+```bash
+# 克隆并构建
+git clone https://github.com/tbphp/gpt-load.git
+cd gpt-load
+go mod tidy
+
+# 创建配置
+cp .env.example .env
+
+# 修改 .env 中 DATABASE_DSN 和 REDIS_DSN 配置
+# REDIS_DSN 为可选,如果不配置则启用内存存储
+
+# 运行
+make run
+```
+
+部署完成后:
+
+- 访问 Web 管理界面:
+- API 代理地址:
+
+> 使用默认的认证 Key `sk-123456` 登录管理端,认证 Key 可以在 .env 中修改 AUTH_KEY。
+
+### 方式四:集群部署
+
+集群部署需要所有节点都连接同一个 MySQL(或者 PostgreSQL) 和 Redis,并且 Redis 是必须要求。建议使用统一的分布式 MySQL 和 Redis 集群。
+
+**部署要求:**
+
+- 所有节点必须配置相同的 `AUTH_KEY`、`DATABASE_DSN`、`REDIS_DSN`
+- 一主多从架构,从节点必须配置环境变量:`IS_SLAVE=true`
+
+详细请参考[集群部署文档](https://www.gpt-load.com/docs/cluster)
+
+## 配置系统
+
+### 配置架构概述
+
+GPT-Load 采用双层配置架构:
+
+#### 1. 静态配置(环境变量)
+
+- **特点**:应用启动时读取,运行期间不可修改,需重启应用生效
+- **用途**:基础设施配置,如数据库连接、服务器端口、认证密钥等
+- **管理方式**:通过 `.env` 文件或系统环境变量设置
+
+#### 2. 动态配置(热重载)
+
+- **系统设置**:存储在数据库中,为整个应用提供统一的行为基准
+- **分组配置**:为特定分组定制的行为参数,可覆盖系统设置
+- **配置优先级**:分组配置 > 系统设置
+- **特点**:支持热重载,修改后立即生效,无需重启应用
+
+
+静态配置(环境变量)
+
+**服务器配置:**
+
+| 配置项 | 环境变量 | 默认值 | 说明 |
+| ------------ | ---------------------------------- | --------------- | -------------------------- |
+| 服务端口 | `PORT` | 3001 | HTTP 服务器监听端口 |
+| 服务地址 | `HOST` | 0.0.0.0 | HTTP 服务器绑定地址 |
+| 读取超时 | `SERVER_READ_TIMEOUT` | 60 | HTTP 服务器读取超时(秒) |
+| 写入超时 | `SERVER_WRITE_TIMEOUT` | 600 | HTTP 服务器写入超时(秒) |
+| 空闲超时 | `SERVER_IDLE_TIMEOUT` | 120 | HTTP 连接空闲超时(秒) |
+| 优雅关闭超时 | `SERVER_GRACEFUL_SHUTDOWN_TIMEOUT` | 10 | 服务优雅关闭等待时间(秒) |
+| 从节点模式 | `IS_SLAVE` | false | 集群部署时从节点标识 |
+| 时区 | `TZ` | `Asia/Shanghai` | 指定时区 |
+
+**认证与数据库配置:**
+
+| 配置项 | 环境变量 | 默认值 | 说明 |
+| ---------- | -------------- | ------------------ | ------------------------------------ |
+| 管理密钥 | `AUTH_KEY` | `sk-123456` | **管理端**的访问认证密钥 |
+| 数据库连接 | `DATABASE_DSN` | ./data/gpt-load.db | 数据库连接字符串 (DSN) 或文件路径 |
+| Redis 连接 | `REDIS_DSN` | - | Redis 连接字符串,为空时使用内存存储 |
+
+**性能与跨域配置:**
+
+| 配置项 | 环境变量 | 默认值 | 说明 |
+| ------------ | ------------------------- | ----------------------------- | ------------------------ |
+| 最大并发请求 | `MAX_CONCURRENT_REQUESTS` | 100 | 系统允许的最大并发请求数 |
+| 启用 CORS | `ENABLE_CORS` | true | 是否启用跨域资源共享 |
+| 允许的来源 | `ALLOWED_ORIGINS` | `*` | 允许的来源,逗号分隔 |
+| 允许的方法 | `ALLOWED_METHODS` | `GET,POST,PUT,DELETE,OPTIONS` | 允许的 HTTP 方法 |
+| 允许的头部 | `ALLOWED_HEADERS` | `*` | 允许的请求头,逗号分隔 |
+| 允许凭据 | `ALLOW_CREDENTIALS` | false | 是否允许发送凭据 |
+
+**日志配置:**
+
+| 配置项 | 环境变量 | 默认值 | 说明 |
+| ------------ | ----------------- | --------------------- | ---------------------------------- |
+| 日志级别 | `LOG_LEVEL` | `info` | 日志级别:debug, info, warn, error |
+| 日志格式 | `LOG_FORMAT` | `text` | 日志格式:text, json |
+| 启用文件日志 | `LOG_ENABLE_FILE` | false | 是否启用文件日志输出 |
+| 日志文件路径 | `LOG_FILE_PATH` | `./data/logs/app.log` | 日志文件存储路径 |
+
+**代理配置:**
+
+GPT-Load 会自动从环境变量中读取代理设置,用于向上游 AI 服务商发起请求。
+
+| 配置项 | 环境变量 | 默认值 | 说明 |
+| ---------- | ------------- | ------ | ---------------------------------------- |
+| HTTP 代理 | `HTTP_PROXY` | - | 用于 HTTP 请求的代理服务器地址 |
+| HTTPS 代理 | `HTTPS_PROXY` | - | 用于 HTTPS 请求的代理服务器地址 |
+| 无代理 | `NO_PROXY` | - | 不需要通过代理访问的主机或域名,逗号分隔 |
+
+支持的代理协议格式:
+
+- **HTTP**: `http://user:pass@host:port`
+- **HTTPS**: `https://user:pass@host:port`
+- **SOCKS5**: `socks5://user:pass@host:port`
+
+
+
+动态配置(热重载)
+
+**基础设置:**
+
+| 配置项 | 字段名 | 默认值 | 分组可覆盖 | 说明 |
+| ------------ | ------------------------------------ | --------------------------- | ---------- | -------------------------------------- |
+| 项目地址 | `app_url` | `http://localhost:3001` | ❌ | 项目基础 URL |
+| 日志保留天数 | `request_log_retention_days` | 7 | ❌ | 请求日志保留天数,0 为不清理 |
+| 日志写入间隔 | `request_log_write_interval_minutes` | 1 | ❌ | 日志写入数据库周期(分钟) |
+| 全局代理密钥 | `proxy_keys` | 初始值为环境配置的 AUTH_KEY | ❌ | 全局生效的代理认证密钥,多个用逗号分隔 |
+
+**请求设置:**
+
+| 配置项 | 字段名 | 默认值 | 分组可覆盖 | 说明 |
+| -------------------- | ------------------------- | ------ | ---------- | ------------------------------ |
+| 请求超时 | `request_timeout` | 600 | ✅ | 转发请求完整生命周期超时(秒) |
+| 连接超时 | `connect_timeout` | 15 | ✅ | 与上游服务建立连接超时(秒) |
+| 空闲连接超时 | `idle_conn_timeout` | 120 | ✅ | HTTP 客户端空闲连接超时(秒) |
+| 响应头超时 | `response_header_timeout` | 600 | ✅ | 等待上游响应头超时(秒) |
+| 最大空闲连接数 | `max_idle_conns` | 100 | ✅ | 连接池最大空闲连接总数 |
+| 每主机最大空闲连接数 | `max_idle_conns_per_host` | 50 | ✅ | 每个上游主机最大空闲连接数 |
+
+**密钥配置:**
+
+| 配置项 | 字段名 | 默认值 | 分组可覆盖 | 说明 |
+| -------------- | --------------------------------- | ------ | ---------- | ------------------------------------------------ |
+| 最大重试次数 | `max_retries` | 3 | ✅ | 单个请求使用不同密钥的最大重试次数 |
+| 黑名单阈值 | `blacklist_threshold` | 3 | ✅ | 密钥连续失败多少次后进入黑名单 |
+| 密钥验证间隔 | `key_validation_interval_minutes` | 60 | ✅ | 后台定时验证密钥周期(分钟) |
+| 密钥验证并发数 | `key_validation_concurrency` | 10 | ✅ | 后台定时验证无效 Key 时的并发数 |
+| 密钥验证超时 | `key_validation_timeout_seconds` | 20 | ✅ | 后台定时验证单个 Key 时的 API 请求超时时间(秒) |
+
+
+
+## Web 管理界面
+
+访问管理控制台:(默认地址)
+
+### 界面展示
+
+
+
+
+
+
+
+
+
+Web 管理界面提供以下功能:
+
+- **仪表盘**: 实时统计信息和系统状态概览
+- **密钥管理**: 创建和配置 AI 服务商分组,添加、删除和监控 API 密钥
+- **请求日志**: 详细的请求历史记录和调试信息
+- **系统设置**: 全局配置管理和热重载
+
+## API 使用说明
+
+
+代理接口调用方式
+
+GPT-Load 通过分组名称路由请求到不同的 AI 服务。使用方式如下:
+
+#### 1. 代理端点格式
+
+```text
+http://localhost:3001/proxy/{group_name}/{原始API路径}
+```
+
+- `{group_name}`: 在管理界面创建的分组名称
+- `{原始API路径}`: 保持与原始 AI 服务完全一致的路径
+
+#### 2. 认证方式
+
+在 Web 管理界面中配置**代理密钥** (`Proxy Keys`),可设置系统级别和分组级别的代理密钥。
+
+- **认证方式**: 与原生 API 一致,但需将原始密钥替换为配置的代理密钥。
+- **密钥作用域**: 在系统设置配置的 **全局代理密钥** 可以在所有分组使用,在分组配置的 **分组代理密钥** 仅在当前分组有效。
+- **格式**: 多个密钥使用半角英文逗号分隔。
+
+#### 3. OpenAI 接口调用示例
+
+假设创建了名为 `openai` 的分组:
+
+**原始调用方式:**
+
+```bash
+curl -X POST https://api.openai.com/v1/chat/completions \
+ -H "Authorization: Bearer sk-your-openai-key" \
+ -H "Content-Type: application/json" \
+ -d '{"model": "gpt-4.1-mini", "messages": [{"role": "user", "content": "Hello"}]}'
+```
+
+**代理调用方式:**
+
+```bash
+curl -X POST http://localhost:3001/proxy/openai/v1/chat/completions \
+ -H "Authorization: Bearer your-proxy-key" \
+ -H "Content-Type: application/json" \
+ -d '{"model": "gpt-4.1-mini", "messages": [{"role": "user", "content": "Hello"}]}'
+```
+
+**变更说明:**
+
+- 将 `https://api.openai.com` 替换为 `http://localhost:3001/proxy/openai`
+- 将原始 API Key 替换为**代理密钥**
+
+#### 4. Gemini 接口调用示例
+
+假设创建了名为 `gemini` 的分组:
+
+**原始调用方式:**
+
+```bash
+curl -X POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent?key=your-gemini-key \
+ -H "Content-Type: application/json" \
+ -d '{"contents": [{"parts": [{"text": "Hello"}]}]}'
+```
+
+**代理调用方式:**
+
+```bash
+curl -X POST http://localhost:3001/proxy/gemini/v1beta/models/gemini-2.5-pro:generateContent?key=your-proxy-key \
+ -H "Content-Type: application/json" \
+ -d '{"contents": [{"parts": [{"text": "Hello"}]}]}'
+```
+
+**变更说明:**
+
+- 将 `https://generativelanguage.googleapis.com` 替换为 `http://localhost:3001/proxy/gemini`
+- 将 URL 参数中的 `key=your-gemini-key` 替换为**代理密钥**
+
+#### 5. Anthropic 接口调用示例
+
+假设创建了名为 `anthropic` 的分组:
+
+**原始调用方式:**
+
+```bash
+curl -X POST https://api.anthropic.com/v1/messages \
+ -H "x-api-key: sk-ant-api03-your-anthropic-key" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "Content-Type: application/json" \
+ -d '{"model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "Hello"}]}'
+```
+
+**代理调用方式:**
+
+```bash
+curl -X POST http://localhost:3001/proxy/anthropic/v1/messages \
+ -H "x-api-key: your-proxy-key" \
+ -H "anthropic-version: 2023-06-01" \
+ -H "Content-Type: application/json" \
+ -d '{"model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "Hello"}]}'
+```
+
+**变更说明:**
+
+- 将 `https://api.anthropic.com` 替换为 `http://localhost:3001/proxy/anthropic`
+- 将 `x-api-key` 头部中的原始 API Key 替换为**代理密钥**
+
+#### 6. 支持的接口
+
+**OpenAI 格式:**
+
+- `/v1/chat/completions` - 聊天对话
+- `/v1/completions` - 文本补全
+- `/v1/embeddings` - 文本嵌入
+- `/v1/models` - 模型列表
+- 以及其他所有 OpenAI 兼容接口
+
+**Gemini 格式:**
+
+- `/v1beta/models/*/generateContent` - 内容生成
+- `/v1beta/models` - 模型列表
+- 以及其他所有 Gemini 原生接口
+
+**Anthropic 格式:**
+
+- `/v1/messages` - 消息对话
+- `/v1/models` - 模型列表(如果可用)
+- 以及其他所有 Anthropic 原生接口
+
+#### 7. 客户端 SDK 配置
+
+**OpenAI Python SDK:**
+
+```python
+from openai import OpenAI
+
+client = OpenAI(
+ api_key="your-proxy-key", # 使用密钥
+ base_url="http://localhost:3001/proxy/openai" # 使用代理端点
+)
+
+response = client.chat.completions.create(
+ model="gpt-4.1-mini",
+ messages=[{"role": "user", "content": "Hello"}]
+)
+```
+
+**Google Gemini SDK (Python):**
+
+```python
+import google.generativeai as genai
+
+# 配置 API 密钥和基础 URL
+genai.configure(
+ api_key="your-proxy-key", # 使用代理密钥
+ client_options={"api_endpoint": "http://localhost:3001/proxy/gemini"}
+)
+
+model = genai.GenerativeModel('gemini-2.5-pro')
+response = model.generate_content("Hello")
+```
+
+**Anthropic SDK (Python):**
+
+```python
+from anthropic import Anthropic
+
+client = Anthropic(
+ api_key="your-proxy-key", # 使用代理密钥
+ base_url="http://localhost:3001/proxy/anthropic" # 使用代理端点
+)
+
+response = client.messages.create(
+ model="claude-sonnet-4-20250514",
+ messages=[{"role": "user", "content": "Hello"}]
+)
+```
+
+> **重要提示**:作为透明代理服务,GPT-Load 完全保留各 AI 服务的原生 API 格式和认证方式,仅需要替换端点地址并使用在管理端配置的**代理密钥**即可无缝迁移。
+
+
+
+## 许可证
+
+MIT 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件。
+
+## Star History
+
+[](https://starchart.cc/tbphp/gpt-load)
diff --git a/apps/gpt-load/data.yml b/apps/gpt-load/data.yml
new file mode 100644
index 000000000..50b406385
--- /dev/null
+++ b/apps/gpt-load/data.yml
@@ -0,0 +1,19 @@
+name: gpt-load
+tags:
+- AI / 大模型
+title: 智能密钥轮询的多渠道 AI 代理
+description: 智能密钥轮询的多渠道 AI 代理
+additionalProperties:
+ key: gpt-load
+ name: gpt-load
+ tags:
+ - AI
+ shortDescZh: 一个高性能、企业级的 AI 接口透明代理服务,专门为需要集成多种 AI 服务的企业和开发者设计。采用 Go 语言开发,具备智能密钥管理、负载均衡和完善的监控功能,专为高并发生产环境而设计。
+ shortDescEn: A high-performance, enterprise-grade AI API transparent proxy service designed specifically for enterprises and developers who need to integrate multiple AI services. Built with Go, featuring intelligent key management, load balancing, 和 comprehensive monitoring capabilities, designed for high-concurrency production environments.
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://github.com/tbphp/gpt-load
+ github: https://github.com/tbphp/gpt-load
+ document: https://github.com/tbphp/gpt-load/blob/main/README.md
diff --git a/apps/gpt-load/logo.png b/apps/gpt-load/logo.png
new file mode 100644
index 000000000..152beced4
Binary files /dev/null and b/apps/gpt-load/logo.png differ
diff --git a/apps/gpt-load/sqllite/.env.sample b/apps/gpt-load/sqllite/.env.sample
new file mode 100644
index 000000000..26189eedb
--- /dev/null
+++ b/apps/gpt-load/sqllite/.env.sample
@@ -0,0 +1,43 @@
+# 服务器配置
+PORT=3001
+HOST=0.0.0.0
+
+# 服务器读取、写入和空闲连接的超时时间(秒)
+SERVER_READ_TIMEOUT=60
+SERVER_WRITE_TIMEOUT=600
+SERVER_IDLE_TIMEOUT=120
+SERVER_GRACEFUL_SHUTDOWN_TIMEOUT=10
+
+# 从节点标识
+IS_SLAVE=false
+
+# 时区
+TZ=Asia/Shanghai
+
+# 认证配置 是必需的,用于保护管理 API 和 UI 界面
+AUTH_KEY=sk-123456
+
+# 数据库配置 默认不填写,使用./data/gpt-load.db的SQLite
+# MySQL 示例:
+# DATABASE_DSN=root:123456@tcp(mysql:3306)/gpt-load?charset=utf8mb4&parseTime=True&loc=Local
+# PostgreSQL 示例:
+# DATABASE_DSN=postgres://postgres:123456@postgres:5432/gpt-load?sslmode=disable
+
+# Redis配置 默认不填写,使用内存存储
+# REDIS_DSN=redis://redis:6379/0
+
+# 并发数量
+MAX_CONCURRENT_REQUESTS=100
+
+# CORS配置
+ENABLE_CORS=true
+ALLOWED_ORIGINS=*
+ALLOWED_METHODS=GET,POST,PUT,DELETE,OPTIONS
+ALLOWED_HEADERS=*
+ALLOW_CREDENTIALS=false
+
+# 日志配置
+LOG_LEVEL=info
+LOG_FORMAT=text
+LOG_ENABLE_FILE=true
+LOG_FILE_PATH=./data/logs/app.log
diff --git a/apps/gpt-load/sqllite/data.yml b/apps/gpt-load/sqllite/data.yml
new file mode 100644
index 000000000..140b5d714
--- /dev/null
+++ b/apps/gpt-load/sqllite/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: 3001
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/gpt-load/sqllite/docker-compose.yml b/apps/gpt-load/sqllite/docker-compose.yml
new file mode 100644
index 000000000..81c87273d
--- /dev/null
+++ b/apps/gpt-load/sqllite/docker-compose.yml
@@ -0,0 +1,18 @@
+services:
+ gpt-load:
+ image: ghcr.io/tbphp/gpt-load:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:3001
+ networks:
+ - 1panel-network
+ volumes:
+ - ./data:/app/data
+ env_file:
+ - .env
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/pro-api/README.md b/apps/pro-api/README.md
new file mode 100644
index 000000000..8aeee7c2f
--- /dev/null
+++ b/apps/pro-api/README.md
@@ -0,0 +1,359 @@
+# pro-api
+
+
+
+
+
+
+
+[English](./README.md)
+[简体中文](./README_CN.md)
+
+
+## 介绍
+
+这是一个统一管理大模型API的项目,可以通过OpenAI 的API接口格式调用多个后端服务。该项目旨在简化与不同AI模型的交互,支持多种后端服务的调用。
+
+## 支持的后端服务
+
+目前支持的后端服务有:OpenAI、Anthropic、Gemini、Vertex、Cloudflare、DeepBricks、OpenRouter等。
+
+## 后台功能
+
+后台提供请求日志查询和使用统计查询。若不启动后台,则仅进行请求转发,不记录任何信息。
+
+
+
+
+
+
+
+
+## 配置
+
+使用 `api.yaml` 配置文件,可以配置多个模型,每个模型可以配置多个后端服务,支持负载均衡。以下是 `api.yaml` 配置文件的示例:
+
+
+api.yaml
+```
+providers:
+ - provider: openai # 服务提供商
+ name: 智谱清言 # 服务名称
+ base_url: https://open.bigmodel.cn/api/paas/v4 # 服务地址
+ api_key: 请填写你的api_key
+ model:
+ - glm-4-flash # 模型名称
+
+
+ - provider: gemini
+ name: Gemini
+ base_url: https://generativelanguage.googleapis.com/v1beta
+ api_key: 请填写你的api_key
+ model:
+ - gemini-1.5-pro
+ - gemini-1.5-flash
+ - gemini-1.5-flash: gpt-4o
+ balance: # 配置负载均衡 不配置默认为1
+ - gemini-1.5-pro: 1 #表示这个名称下的模型权重是1
+ - gemini-1.5-flash: 1 #表示这个名称下的模型权重是2
+ - gemini-flash: 1 #表示这个名称下的模型权重是2
+
+
+ - provider: openai
+ name: 豆包
+ base_url: https://ark.cn-beijing.volces.com/api/v3
+ api_key: 请填写你的api_key
+ model:
+ - ep-20240906033439-zrc2x: doubao-pro-128k # 可以简化模型名称为 doubao-pro-128k
+ - ep-20240613130011-c2zgx: doubao-pro-32k
+ - ep-20240729175503-5bbf7: moonshot-v1-128k
+
+ - provider: openai
+ name: 硅基流动
+ base_url: https://api.siliconflow.cn/v1
+ api_key: 请填写你的api_key
+ model:
+ - Qwen/Qwen2-72B-Instruct: qwen2-72b
+ - Qwen/Qwen1.5-110B-Chat: qwen1.5-110b
+ - deepseek-ai/DeepSeek-V2-Chat: deepseek-chat
+ - deepseek-ai/DeepSeek-Coder-V2-Instruct: deepseek-coder
+ - Qwen/Qwen2-7B-Instruct: qwen2-7b
+ - Qwen/Qwen2-7B-Instruct: gpt-3.5-turbo
+ - Qwen/Qwen2-1.5B-Instruct: qwen2-1.5b
+ - Qwen/Qwen1.5-7B-Chat: qwen1.5-7b-chat
+ - THUDM/glm-4-9b-chat: glm-4-9b-chat
+ - THUDM/chatglm3-6b: chatglm3-6b
+ - 01-ai/Yi-1.5-9B-Chat-16K: yi-1.5-9b-chat-16k
+ - 01-ai/Yi-1.5-6B-Chat: yi-1.5-6b-chat
+ - google/gemma-2-9b-it: gemma-2-9b
+ - internlm/internlm2_5-7b-chat: internlm-7b-chat
+ - meta-llama/Meta-Llama-3-8B-Instruct: meta-llama-3-8b
+ - meta-llama/Meta-Llama-3.1-8B-Instruct: meta-llama-3.1-8b
+ - mistralai/Mistral-7B-Instruct-v0.2: mistral-7b
+
+
+ - provider: openai
+ name: deepseek
+ base_url: https://api.deepseek.com/v1
+ api_key: 请填写你的api_key
+ model:
+ - deepseek-chat
+ - deepseek-coder
+
+
+ - provider: vertexai_claude
+ name: vertexai_claude
+ PROJECT_ID: 请填写
+ CLIENT_ID: 请填写
+ CLIENT_SECRET: 请填写
+ REFRESH_TOKEN: 请填写
+ model:
+ - claude-3-5-sonnet@20240620
+ - claude-3-5-sonnet@20240620: claude-3-5-sonnet
+
+ - provider: vertexai_gemini
+ name: vertexai_gemini
+ PROJECT_ID: 请填写
+ CLIENT_ID: 请填写
+ CLIENT_SECRET: 请填写
+ REFRESH_TOKEN: 请填写
+ model:
+ - gemini-1.5-flash-001
+
+
+ - provider: cohere
+ name: cohere
+ base_url: https://api.cohere.com/v1
+ api_key: 请填写
+ model:
+ - command-r-plus-08-2024
+ - command-r-plus-04-2024: gpt-4
+ - command-r-plus
+ - command-nightly
+ - command-light
+ - command-light-nightly
+
+ - provider: cloudflare
+ name: cloudflare
+ api_key: 请填写
+ account_id: 请填写
+ model:
+ - "@cf/qwen/qwen1.5-14b-chat-awq": qwen1.5-14b
+ - "@hf/thebloke/deepseek-coder-6.7b-instruct-awq"
+
+
+ - provider: openai
+ name: openrouter
+ base_url: https://openrouter.ai/api/v1
+ api_key: s请填写
+ model:
+ - mattshumer/reflection-70b:free: reflection-70b
+ - nousresearch/hermes-3-llama-3.1-405b:free: llama-3.1-405b
+
+
+
+tokens:
+ - api_key: sk-111111
+ model:
+ - glm* # 可以使用通配符*
+ - all # all 代表全部都可以
+
+ - api_key: sk-222222
+ model:
+ - gpt-3.5-turbo
+
+server:
+ default_model: glm-4-flash # 如果匹配不到,则使用这个默认的模型
+ debug: false
+ admin_server: false # 是否启动后台功能 如果不启动则只转发不作任何记录
+ db_cache: false # 相同内容的情况下返回上一次成功的回复
+ save_log_file: false
+ db_path: sqlite:///./data/request_log.db
+ username: admin # 后台用户名
+ password: admin # 后台密码
+ jwt_secret_key: admin # 随便填不填就随机
+```
+
+[vertexai的参数获取教程](./docs/vertexai的参数获取教程.md)
+
+# 配置负载均衡
+
+可以对相同模型名称的模型进行负载均衡
+
+默认权重为1
+
+```
+ - provider: gemini
+ name: Gemini1
+ base_url: https://generativelanguage.googleapis.com/v1beta
+ api_key: 请填写
+ model:
+ - gemini-1.5-pro
+ - gemini-1.5-flash
+ - gemini-1.5-flash : gemini-flash
+ balance: # 负载均衡
+ - gemini-1.5-pro: 1 #表示这个名称下的模型权重是1
+ - gemini-1.5-flash: 1 #表示这个名称下的模型权重是2
+ - gemini-flash: 1 #表示这个名称下的模型权重是2
+
+ - provider: gemini
+ name: Gemini2
+ base_url: https://generativelanguage.googleapis.com/v1beta
+ api_key: 请填写
+ model:
+ - gemini-1.5-pro
+ - gemini-1.5-flash
+ - gemini-1.5-flash : gemini-flash
+ balance: # 负载均衡
+ - gemini-1.5-pro: 2 #表示这个名称下的模型权重是1
+ - gemini-1.5-flash: 2 #表示这个名称下的模型权重是2
+ - gemini-flash: 3 #表示这个名称下的模型权重是2
+```
+以上配置讲解:
+
+比如:
+
+当前权重信息
+
+* Gemini1 的 gemini-1.5-flash 权重1
+* Gemini2 的 gemini-1.5-flash 权重2
+
+请求 gemini-1.5-flash 的时候
+
+- 第1次 Gemini1 的 gemini-1.5-flash
+- 第2次 Gemini2 的 gemini-1.5-flash
+- 第3次 Gemini2 的 gemini-1.5-flash
+- 第4次 Gemini1 的 gemini-1.5-flash
+- 第5次 Gemini2 的 gemini-1.5-flash
+
+
+## vercel 部署
+
+
+点击下面的按钮一键部署到 Vercel:
+
+[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fduolabmeng6%2Fpro-api&env=config_url,secret_key&project-name=pro-api&repository-name=pro-api)
+
+部署时需要设置以下环境变量:
+
+- `config_url`: 远程配置文件的 URL
+- `secret_key`: 用于加密的密钥(如果不需要加密,可以留空)如果需要加密,请使用 aes-128-ecb 加密 不加密就给明文的配置内容
+
+部署完成后,访问 Vercel 分配的域名即可使用 API。
+
+注意:请确保您的远程配置文件 (`config_url`) 可以被公开访问,否则 Vercel 将无法获取配置信息。
+
+这里我给一个最简单配置内容
+
+config_url=https://可以访问下载配置的地址/api.yaml
+
+```
+providers:
+ - provider: openai
+ name: deepseek
+ base_url: https://api.deepseek.com/v1
+ api_key: sk-xxxxxxxxxxxxx
+ model:
+ - deepseek-chat
+ - deepseek-coder
+
+tokens:
+ - api_key: sk-123456
+ model:
+ - all
+
+server:
+ default_model: deepseek-chat
+
+```
+
+
+## Docker 本地部署
+
+启动容器
+
+1. 使用本地api.yaml配置文件启动
+```bash
+docker run -d \
+ --name pro-api \
+ -p 8001:8000 \
+ -v $(pwd)/api.yaml:/app/api.yaml \
+ -v $(pwd)/data:/app/data:rw \
+ duolabmeng/pro-api:latest
+```
+
+2. 使用远程api.yaml配置文件启动
+```bash
+docker run -d \
+ --name pro-api \
+ -e config_url=http://你的服务器/api.yaml \
+ -e secret_key=123456789 \
+ -p 8001:8000 \
+ -v $(pwd)/api.yaml:/app/api.yaml \
+ -v $(pwd)/data:/app/data:rw \
+ duolabmeng/pro-api:latest
+```
+config_url 自动下载远程的配置文件
+secret_key 用aes加密,ECB,128位,如果你要安全记得启动aes密码,不填就给明文的配置内容
+
+
+3. 如果你想使用 Docker Compose
+```yaml
+services:
+ pro-api:
+ container_name: pro-api
+ image: duolabmeng/pro-api:latest
+ environment:
+ - config_url=http://file_url/api.yaml
+ - secret_key=123456789
+ ports:
+ - 8001:8000
+ volumes:
+ - ./api.yaml:/app/api.yaml
+ - ./data/:/app/data:rw
+```
+
+比如你在某个平台不方便修改配置文件,可以把配置文件传到某个托管服务,可以提供直链给 pro-api 下载,config_url 就是这个直链。
+如果你不想重启容器更新配置访问 /reload_config 即可重新下载刷新配置。
+
+
+一键重启 Docker 映像
+
+```bash
+set -eu
+docker pull duolabmeng/pro-api:latest
+docker rm -f pro-api
+docker run --user root -p 8001:8000 -dit --name pro-api \
+-v ./api.yaml:/app/api.yaml \
+duolabmeng/pro-api:latest
+docker logs -f pro-api
+```
+
+RESTful curl 测试
+
+```bash
+curl -X POST http://127.0.0.1:8000/v1/chat/completions \
+-H "Content-Type: application/json" \
+-H "Authorization: Bearer ${API}" \
+-d '{"model": "gpt-4o","messages": [{"role": "user", "content": "Hello"}],"stream": true}'
+```
+
+# 帮助
+
+1.如果在一些云平台不能安装依赖那么你可以直接把依赖安装到运行的目录然后启动
+
+```shell
+pip install -r requirements.txt --no-user -t ./app
+
+```
+
+## Star 记录
+
+
+
+
+# 赞赏
+
+如果觉得项目对你有帮助,可以请作者喝杯咖啡
+
+
\ No newline at end of file
diff --git a/apps/pro-api/data.yml b/apps/pro-api/data.yml
new file mode 100644
index 000000000..eaa119b9a
--- /dev/null
+++ b/apps/pro-api/data.yml
@@ -0,0 +1,19 @@
+name: pro-api
+tags:
+- AI / 大模型
+title: 统一管理大模型 API 的项目,可以通过一个统一的API 接口调用多种不同提供商的服务,统一转换为 OpenAI 格式。
+description: 这是一个统一管理大模型API的项目,可以通过OpenAI 的API接口格式调用多个后端服务。该项目旨在简化与不同AI模型的交互,支持多种后端服务的调用
+additionalProperties:
+ key: pro-api
+ name: pro-api
+ tags:
+ - Tool
+ shortDescZh: 统一管理大模型 API 的项目,可以通过一个统一的API 接口调用多种不同提供商的服务,统一转换为 OpenAI 格式。
+ shortDescEn: This is a project that centrally manages a large model API and can call multiple backend services through OpenAI's API interface format. The project aims to simplify interactions with different AI models and support the calling of multiple backend services
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://github.com/duolabmeng6/pro-api
+ github: https://github.com/duolabmeng6/pro-api
+ document: https://github.com/duolabmeng6/pro-api/blob/main/README_CN.md
diff --git a/apps/pro-api/latest/data.yml b/apps/pro-api/latest/data.yml
new file mode 100644
index 000000000..e108c46d1
--- /dev/null
+++ b/apps/pro-api/latest/data.yml
@@ -0,0 +1,24 @@
+additionalProperties:
+ formFields:
+ - default: ./config
+ edit: true
+ envKey: LOCAL_CONFIG_PATH
+ labelEn: local config file path
+ labelZh: 本地配置文件地址
+ required: true
+ type: text
+ - default: ./data
+ edit: true
+ envKey: DATA_PATH
+ labelEn: uni-api data path
+ labelZh: uni-api数据存储路径
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/pro-api/latest/docker-compose.yml b/apps/pro-api/latest/docker-compose.yml
new file mode 100644
index 000000000..270b52334
--- /dev/null
+++ b/apps/pro-api/latest/docker-compose.yml
@@ -0,0 +1,21 @@
+services:
+ pro-api:
+ image: duolabmeng/pro-api:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ volumes:
+ - "${DATA_PATH}:/app/data:rw"
+ - "${LOCAL_CONFIG_PATH}:/app/api.yaml"
+ environment:
+ - PYTHONUNBUFFERED=1
+ networks:
+ - 1panel-network
+ labels:
+ createdBy: "Apps"
+
+
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/pro-api/logo.png b/apps/pro-api/logo.png
new file mode 100644
index 000000000..9cec3e62d
Binary files /dev/null and b/apps/pro-api/logo.png differ