Home
Login

Système de gestion et de distribution d'API LLM, prenant en charge la gestion unifiée des interfaces pour plusieurs grands modèles de langage.

MITJavaScript 25.9ksongquanpengone-api Last Updated: 2025-02-21

One API - Système de gestion et de distribution d'API LLM

Aperçu du projet

One API est un système open source de gestion et de distribution d'API LLM, prenant en charge les principaux modèles tels que OpenAI, Azure, Anthropic Claude, Google Gemini, DeepSeek, ChatGLM, etc. Il unifie l'adaptation des API et peut être utilisé pour la gestion des clés et la redistribution secondaire. Le projet est fourni sous forme d'un seul fichier exécutable, prend en charge les images Docker et permet un déploiement en un clic, prêt à l'emploi.

Caractéristiques principales

📋 Prise en charge de plusieurs modèles

Le projet prend en charge de nombreux fournisseurs de modèles de langage de grande taille :

  • Série OpenAI : Modèles de la série ChatGPT (prise en charge de l'API Azure OpenAI)
  • Anthropic : Modèles de la série Claude (prise en charge d'AWS Claude)
  • Google : Modèles de la série PaLM2/Gemini
  • Autre : Autres séries de modèles

🔧 Fonctionnalités principales

Gestion et distribution d'API

  • Prise en charge de la configuration de miroirs et de nombreux services de proxy tiers
  • Prise en charge de l'accès à plusieurs canaux via l'équilibrage de charge
  • Prise en charge du mode stream, permettant un effet machine à écrire grâce à la transmission en flux continu
  • Prise en charge du déploiement multi-machines
  • Prise en charge de la relance automatique en cas d'échec
  • Prise en charge des interfaces de dessin

Gestion des utilisateurs et des autorisations

  • Gestion des jetons : Définition de la date d'expiration, du quota, de la plage d'adresses IP autorisées et de l'accès aux modèles autorisés pour les jetons
  • Gestion des codes d'échange : Prise en charge de la génération et de l'exportation en masse de codes d'échange, qui peuvent être utilisés pour recharger les comptes
  • Groupes d'utilisateurs : Prise en charge des groupes d'utilisateurs et des groupes de canaux, avec la possibilité de définir différents taux pour différents groupes
  • Gestion des canaux : Création de canaux en masse, prise en charge de la configuration des listes de modèles pour les canaux

Surveillance et statistiques

  • Prise en charge de la consultation des détails du quota
  • Prise en charge des récompenses d'invitation d'utilisateurs
  • Prise en charge de l'affichage du quota en dollars américains
  • En collaboration avec Message Pusher, les informations d'alerte peuvent être envoyées à diverses applications

Fonctionnalités personnalisées

  • Prise en charge de la publication d'annonces, de la configuration de liens de recharge, de la configuration du quota initial pour les nouveaux utilisateurs
  • Prise en charge du mappage de modèles, de la redirection des modèles demandés par les utilisateurs
  • Prise en charge de la personnalisation du nom du système, du logo et du pied de page
  • Prise en charge de la personnalisation de la page d'accueil et de la page "À propos"
  • Prise en charge de l'appel des API de gestion via des jetons d'accès système

🔐 Sécurité et authentification

Plusieurs méthodes de connexion

  • Connexion et inscription par e-mail (prise en charge de la liste blanche des e-mails d'inscription) et réinitialisation du mot de passe par e-mail
  • Connexion autorisée par Feishu
  • Connexion autorisée par GitHub
  • Autorisation via le compte public WeChat (nécessite le déploiement supplémentaire de WeChat Server)

Caractéristiques de sécurité

  • Prise en charge de la validation utilisateur Cloudflare Turnstile
  • Prise en charge du changement de thème
  • Prise en charge de Cloudflare AI Gateway

Méthodes de déploiement

Déploiement Docker (recommandé)

Utilisation de 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

Utilisation de 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

Déploiement Docker Compose

# Actuellement, le démarrage de MySQL est pris en charge, les données sont stockées dans le dossier ./data/mysql
docker-compose up -d

# Afficher l'état du déploiement
docker-compose ps

Déploiement manuel

  1. Téléchargez le fichier exécutable à partir de GitHub Releases ou compilez à partir du code source :
git clone https://github.com/songquanpeng/one-api.git

# Construire le frontend
cd one-api/web/default
npm install
npm run build

# Construire le backend
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
  1. Exécuter :
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs

Déploiement sur plateforme cloud

Déploiement Zeabur

  • Forker le dépôt de code
  • Créer un projet dans Zeabur, ajouter un service MySQL
  • Configurer les variables d'environnement PORT=3000 et SQL_DSN
  • Déployer et configurer le nom de domaine

Déploiement Render

  • Déployer directement l'image Docker
  • Pas besoin de Forker le dépôt

Description de la configuration

Configuration des variables d'environnement

Configuration de la base de données

  • SQL_DSN : Chaîne de connexion à la base de données (il est recommandé d'utiliser MySQL ou PostgreSQL)
  • LOG_SQL_DSN : Connexion à une base de données indépendante pour la table des logs

Configuration du cache

  • REDIS_CONN_STRING : Chaîne de connexion Redis, utilisée pour le cache
  • MEMORY_CACHE_ENABLED : Activer le cache en mémoire
  • SYNC_FREQUENCY : Fréquence de synchronisation de la base de données (en secondes)

Configuration du cluster

  • SESSION_SECRET : Clé de session fixe
  • NODE_TYPE : Type de nœud (master/slave)
  • FRONTEND_BASE_URL : Adresse de redirection du frontend

Configuration de la sécurité

  • GLOBAL_API_RATE_LIMIT : Limitation du taux d'API
  • GLOBAL_WEB_RATE_LIMIT : Limitation du taux Web
  • RELAY_TIMEOUT : Paramètre de délai d'attente du relais

Paramètres de ligne de commande

  • --port <port_number> : Spécifier le numéro de port (par défaut 3000)
  • --log-dir <log_dir> : Spécifier le dossier des logs
  • --version : Afficher le numéro de version
  • --help : Afficher l'aide

Mode d'emploi

  1. Connexion initiale : Utilisez le compte par défaut root, mot de passe 123456
  2. Configuration du canal : Ajouter une clé API sur la page des canaux
  3. Création de jeton : Créer un jeton d'accès sur la page des jetons
  4. Configuration du client : Définir l'API Base sur l'adresse de déploiement One API, l'API Key sur le jeton généré

Exemple d'utilisation de l'API

# Configuration de la bibliothèque officielle OpenAI
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"

Spécification du canal

Vous pouvez spécifier l'utilisation d'un canal spécifique en ajoutant l'ID du canal après le jeton :

Authorization: Bearer ONE_API_KEY-CHANNEL_ID

Conception de l'architecture

Utilisateur → One API → OpenAI/Azure/Claude/Gemini et autres fournisseurs

One API sert de couche intermédiaire, unifiant les formats d'API des différents fournisseurs, fournissant :

  • Équilibrage de charge
  • Relais de requêtes et conversion de format
  • Gestion des utilisateurs et contrôle des autorisations
  • Statistiques d'utilisation et facturation

Cas d'intégration

ChatGPT Next Web

docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web

Définissez l'adresse de l'interface et la clé API sur la page.

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

Licence

Ce projet est open source sous la licence MIT, qui exige que l'attribution et le lien vers ce projet soient conservés au bas de la page.

Adresse du projet

Star History Chart