One API - LLM API Verwaltungs- und Verteilungssystem
Projektübersicht
One API ist ein Open-Source-LLM-API-Verwaltungs- und Verteilungssystem, das gängige Modelle wie OpenAI, Azure, Anthropic Claude, Google Gemini, DeepSeek, ChatGLM usw. unterstützt. Es vereinheitlicht die API-Anpassung und kann für die Schlüsselverwaltung und -verteilung verwendet werden. Das Projekt bietet eine einzelne ausführbare Datei, unterstützt Docker-Images und ermöglicht eine einfache Bereitstellung und sofortige Nutzung.
Kernfunktionen
📋 Unterstützung mehrerer Modelle
Das Projekt unterstützt zahlreiche gängige Anbieter von großen Sprachmodellen:
- OpenAI-Serie: ChatGPT-Serie (unterstützt Azure OpenAI API)
- Anthropic: Claude-Serie (unterstützt AWS Claude)
- Google: PaLM2/Gemini-Serie
- other: Andere Modellserien
🔧 Kernfunktionen
API-Verwaltung und -Verteilung
- Unterstützt die Konfiguration von Spiegeln und zahlreichen Drittanbieter-Proxy-Diensten
- Unterstützt den Zugriff auf mehrere Kanäle über Load Balancing
- Unterstützt den Stream-Modus, der durch Streaming einen Schreibmaschineneffekt erzielen kann
- Unterstützt die Bereitstellung auf mehreren Rechnern
- Unterstützt die automatische Wiederholung bei Fehlern
- Unterstützt Zeichen-APIs
Benutzer- und Rechteverwaltung
- Token-Verwaltung: Festlegen der Gültigkeitsdauer, des Kontingents, des zulässigen IP-Bereichs und des zulässigen Modellzugriffs für Token
- Gutscheincode-Verwaltung: Unterstützt die Batch-Generierung und den Export von Gutscheincodes, die zum Aufladen von Konten verwendet werden können
- Benutzergruppierung: Unterstützt Benutzer- und Kanalgruppierung, unterstützt die Festlegung unterschiedlicher Multiplikatoren für verschiedene Gruppen
- Kanalverwaltung: Batch-Erstellung von Kanälen, unterstützt die Kanaleinstellung von Modelllisten
Überwachung und Statistik
- Unterstützt die Anzeige von Kontingentdetails
- Unterstützt Benutzer-Einladungsprämien
- Unterstützt die Anzeige des Kontingents in US-Dollar
- In Verbindung mit Message Pusher können Alarminformationen an verschiedene Apps gesendet werden
Benutzerdefinierte Funktionen
- Unterstützt die Veröffentlichung von Ankündigungen, das Festlegen von Auflade-Links und das Festlegen des anfänglichen Kontingents für neue Benutzer
- Unterstützt die Modellzuordnung, um die Anfragen der Benutzer umzuleiten
- Unterstützt die Anpassung des Systemnamens, des Logos und der Fußzeile
- Unterstützt benutzerdefinierte Start- und Über-uns-Seiten
- Unterstützt den Aufruf der Verwaltungs-API über Systemzugriffstoken
🔐 Sicherheit und Authentifizierung
Verschiedene Anmeldemethoden
- E-Mail-Anmeldung und -Registrierung (unterstützt Whitelist für Registrierungs-E-Mails) sowie Passwortzurücksetzung per E-Mail
- Feishu-Autorisierungsanmeldung
- GitHub-Autorisierungsanmeldung
- WeChat-Kontoautorisierung (erfordert die zusätzliche Bereitstellung von WeChat Server)
Sicherheitsmerkmale
- Unterstützt Cloudflare Turnstile-Benutzerprüfung
- Unterstützt Themenwechsel
- Unterstützt Cloudflare AI Gateway
Bereitstellungsmethoden
Docker-Bereitstellung (empfohlen)
Verwendung von 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
Verwendung von 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
Docker Compose-Bereitstellung
# Derzeit wird der MySQL-Start unterstützt, die Daten werden im Ordner ./data/mysql gespeichert
docker-compose up -d
# Bereitstellungsstatus anzeigen
docker-compose ps
Manuelle Bereitstellung
- Laden Sie die ausführbare Datei von GitHub Releases herunter oder kompilieren Sie sie aus dem Quellcode:
git clone https://github.com/songquanpeng/one-api.git
# Frontend erstellen
cd one-api/web/default
npm install
npm run build
# Backend erstellen
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
- Ausführen:
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
Cloud-Plattform-Bereitstellung
Zeabur-Bereitstellung
- Fork des Code-Repositorys
- Erstellen Sie ein Projekt in Zeabur und fügen Sie einen MySQL-Dienst hinzu
- Konfigurieren Sie die Umgebungsvariablen
PORT=3000
und SQL_DSN
- Bereitstellen und Konfigurieren der Domain
Render-Bereitstellung
- Direkte Bereitstellung des Docker-Images
- Kein Fork des Repositorys erforderlich
Konfigurationsbeschreibung
Umgebungsvariablenkonfiguration
Datenbankkonfiguration
SQL_DSN
: Datenbankverbindungszeichenfolge (empfohlene Verwendung von MySQL oder PostgreSQL)
LOG_SQL_DSN
: Unabhängige Datenbankverbindung für die Protokolltabelle
Cache-Konfiguration
REDIS_CONN_STRING
: Redis-Verbindungszeichenfolge für den Cache
MEMORY_CACHE_ENABLED
: Aktivieren des Speicher-Cache
SYNC_FREQUENCY
: Datenbank-Synchronisierungsfrequenz (Sekunden)
Cluster-Konfiguration
SESSION_SECRET
: Fester Sitzungsschlüssel
NODE_TYPE
: Knotentyp (master/slave)
FRONTEND_BASE_URL
: Frontend-Umleitungsadresse
Sicherheitskonfiguration
GLOBAL_API_RATE_LIMIT
: API-Ratenbegrenzung
GLOBAL_WEB_RATE_LIMIT
: Web-Ratenbegrenzung
RELAY_TIMEOUT
: Relay-Timeout-Einstellung
Kommandozeilenparameter
--port <port_number>
: Gibt die Portnummer an (Standard 3000)
--log-dir <log_dir>
: Gibt den Protokollordner an
--version
: Gibt die Versionsnummer aus
--help
: Zeigt die Hilfe an
Verwendung
- Erstanmeldung: Verwenden Sie das Standardkonto
root
mit dem Passwort 123456
- Kanalkonfiguration: Fügen Sie auf der Kanalseite einen API-Schlüssel hinzu
- Token-Erstellung: Erstellen Sie auf der Token-Seite ein Zugriffstoken
- Client-Konfiguration: Legen Sie die API-Basis auf die One API-Bereitstellungsadresse und den API-Schlüssel auf das generierte Token fest
API-Verwendungsbeispiel
# OpenAI offizielle Bibliothekskonfiguration
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"
Kanalangabe
Sie können den Kanal angeben, indem Sie nach dem Token die Kanal-ID hinzufügen:
Authorization: Bearer ONE_API_KEY-CHANNEL_ID
Architekturentwurf
Benutzer → One API → OpenAI/Azure/Claude/Gemini usw. mehrere Anbieter
One API fungiert als Zwischenschicht, vereinheitlicht die API-Formate verschiedener Anbieter und bietet:
- Lastverteilung
- Anfrage-Relay und Formatkonvertierung
- Benutzerverwaltung und Zugriffskontrolle
- Nutzungsstatistik und Abrechnung
Integrationsbeispiele
ChatGPT Next Web
docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
Legen Sie die Schnittstellenadresse und den API-Schlüssel auf der Seite fest.
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
Lizenz
Dieses Projekt ist unter der MIT-Lizenz Open Source und erfordert, dass die Namensnennung und der Link zu diesem Projekt am Ende der Seite beibehalten werden.
Projektadresse
