One API - Sistema de Gestión y Distribución de APIs LLM
Resumen del Proyecto
One API es un sistema de gestión y distribución de APIs LLM de código abierto que soporta modelos principales como OpenAI, Azure, Anthropic Claude, Google Gemini, DeepSeek, ChatGLM, etc. Unifica la adaptación de APIs y puede utilizarse para la gestión de claves y la redistribución secundaria. El proyecto proporciona un único archivo ejecutable, soporta imágenes Docker e implementa la implementación con un solo clic, listo para usar.
Características Principales
📋 Soporte Multimodelo
El proyecto soporta numerosos proveedores de modelos de lenguaje grandes principales:
- Serie OpenAI: Modelos de la serie ChatGPT (soporta Azure OpenAI API)
- Anthropic: Modelos de la serie Claude (soporta AWS Claude)
- Google: Modelos de la serie PaLM2/Gemini
- other: Otras series de modelos
🔧 Funciones Principales
Gestión y Distribución de APIs
- Soporta la configuración de espejos y numerosos servicios de proxy de terceros
- Soporta el acceso a múltiples canales a través del balanceo de carga
- Soporta el modo stream, que puede lograr el efecto de máquina de escribir a través de la transmisión en flujo
- Soporta la implementación multi-máquina
- Soporta el reintento automático en caso de fallo
- Soporta interfaces de dibujo
Gestión de Usuarios y Permisos
- Gestión de Tokens: Establecer el tiempo de expiración, la cuota, el rango de IP permitido y el acceso al modelo permitido para los tokens
- Gestión de Códigos de Canje: Soporta la generación y exportación por lotes de códigos de canje, que pueden utilizarse para recargar cuentas
- Agrupación de Usuarios: Soporta la agrupación de usuarios y la agrupación de canales, y soporta el establecimiento de diferentes multiplicadores para diferentes grupos
- Gestión de Canales: Crear canales por lotes, soporta la configuración de listas de modelos para canales
Monitorización y Estadísticas
- Soporta la visualización de detalles de cuota
- Soporta recompensas por invitación de usuarios
- Soporta la visualización de la cuota en dólares estadounidenses
- En combinación con Message Pusher, la información de alarma puede enviarse a varias aplicaciones
Funciones Personalizadas
- Soporta la publicación de anuncios, el establecimiento de enlaces de recarga y el establecimiento de la cuota inicial para nuevos usuarios
- Soporta el mapeo de modelos, redirigiendo los modelos de solicitud de los usuarios
- Soporta la personalización del nombre del sistema, el logotipo y el pie de página
- Soporta la personalización de la página de inicio y la página "Acerca de"
- Soporta la llamada a la API de gestión a través de tokens de acceso del sistema
🔐 Seguridad y Autenticación
Múltiples Métodos de Inicio de Sesión
- Registro e inicio de sesión por correo electrónico (soporta la lista blanca de correos electrónicos de registro) y restablecimiento de contraseña por correo electrónico
- Inicio de sesión autorizado por Feishu
- Inicio de sesión autorizado por GitHub
- Autorización de la cuenta pública de WeChat (requiere la implementación adicional de WeChat Server)
Características de Seguridad
- Soporta la verificación de usuarios de Cloudflare Turnstile
- Soporta el cambio de tema
- Soporta Cloudflare AI Gateway
Métodos de Implementación
Implementación con Docker (Recomendado)
Usando SQLite
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Usando MySQL
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Implementación con Docker Compose
# Actualmente soporta el inicio de MySQL, los datos se almacenan en la carpeta ./data/mysql
docker-compose up -d
# Ver el estado de la implementación
docker-compose ps
Implementación Manual
- Descargue el archivo ejecutable de GitHub Releases o compile desde el código fuente:
git clone https://github.com/songquanpeng/one-api.git
# Construir el frontend
cd one-api/web/default
npm install
npm run build
# Construir el backend
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
- Ejecutar:
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
Implementación en la Nube
Implementación en Zeabur
- Haga un fork del repositorio de código
- Cree un Proyecto en Zeabur, añada un servicio MySQL
- Configure las variables de entorno
PORT=3000
y SQL_DSN
- Implemente y configure el dominio
Implementación en Render
- Implemente directamente la imagen Docker
- No es necesario hacer un fork del repositorio
Descripción de la Configuración
Configuración de Variables de Entorno
Configuración de la Base de Datos
SQL_DSN
: Cadena de conexión de la base de datos (se recomienda utilizar MySQL o PostgreSQL)
LOG_SQL_DSN
: Cadena de conexión de la base de datos independiente para la tabla de registros
Configuración de la Caché
REDIS_CONN_STRING
: Cadena de conexión de Redis, utilizada para la caché
MEMORY_CACHE_ENABLED
: Activar la caché en memoria
SYNC_FREQUENCY
: Frecuencia de sincronización de la base de datos (segundos)
Configuración del Clúster
SESSION_SECRET
: Clave de sesión fija
NODE_TYPE
: Tipo de nodo (master/slave)
FRONTEND_BASE_URL
: Dirección de redirección del frontend
Configuración de Seguridad
GLOBAL_API_RATE_LIMIT
: Límite de velocidad de la API
GLOBAL_WEB_RATE_LIMIT
: Límite de velocidad de la Web
RELAY_TIMEOUT
: Configuración del tiempo de espera del relé
Parámetros de la Línea de Comandos
--port <port_number>
: Especifica el número de puerto (por defecto 3000)
--log-dir <log_dir>
: Especifica la carpeta de registros
--version
: Imprime el número de versión
--help
: Muestra la ayuda
Modo de Empleo
- Inicio de Sesión Inicial: Utilice la cuenta predeterminada
root
, contraseña 123456
- Configuración del Canal: Añada la clave API en la página del canal
- Creación de Tokens: Cree un token de acceso en la página de tokens
- Configuración del Cliente: Establezca la API Base en la dirección de implementación de One API, la API Key en el token generado
Ejemplo de Uso de la API
# Configuración de la biblioteca oficial de OpenAI
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"
Especificación del Canal
Puede especificar el uso de un canal específico añadiendo el ID del canal después del token:
Authorization: Bearer ONE_API_KEY-CHANNEL_ID
Diseño de la Arquitectura
Usuario → One API → OpenAI/Azure/Claude/Gemini y otros proveedores
One API actúa como una capa intermedia, unificando los formatos de API de diferentes proveedores, proporcionando:
- Balanceo de carga
- Retransmisión y conversión de formato de solicitudes
- Gestión de usuarios y control de permisos
- Estadísticas de uso y facturación
Casos de Integración
ChatGPT Next Web
docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
Simplemente configure la dirección de la interfaz y la clave API en la página.
ChatGPT Web
docker run --name chatgpt-web -d -p 3002:3002 -e OPENAI_API_BASE_URL=https://openai.justsong.cn -e OPENAI_API_KEY=sk-xxx chenzhaoyu94/chatgpt-web
Licencia
Este proyecto es de código abierto bajo la licencia MIT, que requiere que se conserve la atribución y el enlace a este proyecto en la parte inferior de la página.
Dirección del Proyecto
