Skip to content

Latest commit

 

History

History
502 lines (370 loc) · 23.3 KB

File metadata and controls

502 lines (370 loc) · 23.3 KB

new-api

New API

🍥 Passerelle de modèles étendus de nouvelle génération et système de gestion d'actifs d'IA

简体中文 | 繁體中文 | English | Français | 日本語

licence version docker AtomGit G-Star

QuantumNous%2Fnew-api | Trendshift
Featured|HelloGitHub AtomGit G-Star

Démarrage rapideFonctionnalités clésDéploiementDocumentationAide

📝 Description du projet

Important

  • Ce projet est exclusivement destiné aux scénarios de passerelle API d'IA légalement autorisés, d'authentification organisationnelle, de gestion multi-modèles, d'analyse d'utilisation, de comptabilisation des coûts et de déploiement privé.
  • Les utilisateurs doivent obtenir légalement les clés API, comptes, services de modèles et autorisations d'interface en amont, et doivent respecter les conditions d'utilisation en amont et les lois et réglementations applicables.
  • Les utilisateurs doivent s'assurer que leur utilisation est conforme aux conditions d'utilisation en amont et aux lois et réglementations applicables.
  • Lors de la fourniture de services d'IA générative au public, les utilisateurs doivent se conformer aux exigences réglementaires applicables et remplir toutes les obligations d'enregistrement, de licence, de sécurité du contenu, de vérification d'identité, de conservation des journaux, de fiscalité et d'autorisation en amont requises par leur juridiction.

🤝 Partenaires de confiance

Sans ordre particulier

Cherry Studio Aion UI Université de Pékin UCloud Alibaba Cloud IO.NET


🙏 Remerciements spéciaux

JetBrains Logo

Merci à JetBrains pour avoir fourni une licence de développement open-source gratuite pour ce projet


🚀 Démarrage rapide

Utilisation de Docker Compose (recommandé)

# Cloner le projet
git clone https://github.com/QuantumNous/new-api.git
cd new-api

# Modifier la configuration docker-compose.yml
nano docker-compose.yml

# Démarrer le service
docker-compose up -d
Utilisation des commandes Docker
# Tirer la dernière image
docker pull calciumion/new-api:latest

# Utilisation de SQLite (par défaut)
docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest

# Utilisation de MySQL
docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest

💡 Astuce: -v ./data:/data sauvegardera les données dans le dossier data du répertoire actuel, vous pouvez également le changer en chemin absolu comme -v /your/custom/path:/data


🎉 Après le déploiement, visitez http://localhost:3000 pour commencer à utiliser!

Warning

Lorsque vous exploitez ce projet en tant que service public d'IA générative ou service de revente d'API, les utilisateurs doivent d'abord remplir toutes les obligations requises en matière d'enregistrement, de licence, de sécurité du contenu, de vérification d'identité, de conservation des journaux, de fiscalité, de paiement et d'autorisation en amont.

📖 Pour plus de méthodes de déploiement, veuillez vous référer à Guide de déploiement


📚 Documentation

Navigation rapide:

Catégorie Lien
🚀 Guide de déploiement Documentation d'installation
⚙️ Configuration de l'environnement Variables d'environnement
📡 Documentation de l'API Documentation de l'API
❓ FAQ FAQ
💬 Interaction avec la communauté Canaux de communication

✨ Fonctionnalités clés

Pour les fonctionnalités détaillées, veuillez vous référer à Présentation des fonctionnalités |

🎨 Fonctions principales

Fonctionnalité Description
🎨 Nouvelle interface utilisateur Conception d'interface utilisateur moderne
🌍 Multilingue Prend en charge le chinois simplifié, le chinois traditionnel, l'anglais, le français et le japonais
🔄 Compatibilité des données Complètement compatible avec la base de données originale de One API
📈 Tableau de bord des données Console visuelle et analyse statistique
🔒 Gestion des permissions Regroupement de jetons, restrictions de modèles, gestion des utilisateurs

💰 Comptabilisation et facturation des usages autorisés

  • ✅ Rechargement interne et allocation de quotas pour les scénarios légalement autorisés (EPay, Stripe)
  • ✅ Comptabilisation des coûts par requête, par utilisation et par hit de cache au niveau organisationnel
  • ✅ Statistiques de facturation du cache pour OpenAI, Azure, DeepSeek, Claude, Qwen et les modèles pris en charge
  • ✅ Politiques de facturation flexibles pour la gestion interne ou les clients entreprise autorisés

🔐 Autorisation et sécurité

  • 😈 Connexion par autorisation Discord
  • 🤖 Connexion par autorisation LinuxDO
  • 📱 Connexion par autorisation Telegram
  • 🔑 Authentification unifiée OIDC
  • 🔍 Requête de quota d'utilisation de clé (avec new-api-key-tool)

🚀 Fonctionnalités avancées

Prise en charge des formats d'API:

Routage intelligent:

  • ⚖️ Sélection aléatoire pondérée des canaux
  • 🔄 Nouvelle tentative automatique en cas d'échec
  • 🚦 Limitation du débit du modèle pour les utilisateurs

Conversion de format:

  • 🔄 OpenAI Compatible ⇄ Claude Messages
  • 🔄 OpenAI Compatible → Google Gemini
  • 🔄 Google Gemini → OpenAI Compatible - Texte uniquement, les appels de fonction ne sont pas encore pris en charge
  • 🚧 OpenAI Compatible ⇄ OpenAI Responses - En développement
  • 🔄 Fonctionnalité de la pensée au contenu

Prise en charge de l'effort de raisonnement:

Voir la configuration détaillée

Modèles de la série OpenAI :

  • o3-mini-high - Effort de raisonnement élevé
  • o3-mini-medium - Effort de raisonnement moyen
  • o3-mini-low - Effort de raisonnement faible
  • gpt-5-high - Effort de raisonnement élevé
  • gpt-5-medium - Effort de raisonnement moyen
  • gpt-5-low - Effort de raisonnement faible

Modèles de pensée de Claude:

  • claude-3-7-sonnet-20250219-thinking - Activer le mode de pensée

Modèles de la série Google Gemini:

  • gemini-2.5-flash-thinking - Activer le mode de pensée
  • gemini-2.5-flash-nothinking - Désactiver le mode de pensée
  • gemini-2.5-pro-thinking - Activer le mode de pensée
  • gemini-2.5-pro-thinking-128 - Activer le mode de pensée avec budget de pensée de 128 tokens
  • Vous pouvez également ajouter les suffixes -low, -medium ou -high aux modèles Gemini pour fixer le niveau d’effort de raisonnement (sans suffixe de budget supplémentaire).

🤖 Prise en charge des modèles

Pour les détails, veuillez vous référer à Documentation de l'API - Interface de passerelle

Type de modèle Description Documentation
🤖 OpenAI-Compatible Modèles compatibles OpenAI Documentation
🤖 OpenAI Responses Format OpenAI Responses Documentation
🎨 Midjourney-Proxy Midjourney-Proxy(Plus) Documentation
🎵 Suno-API Suno API Documentation
🔄 Rerank Cohere, Jina Documentation
💬 Claude Format Messages Documentation
🌐 Gemini Format Google Gemini Documentation
🔧 Dify Mode ChatFlow -
🎯 Amont personnalisé Configuration des points d'accès amont légalement autorisés -

📡 Interfaces prises en charge

Voir la liste complète des interfaces

🚢 Déploiement

Tip

Dernière image Docker: calciumion/new-api:latest

📋 Exigences de déploiement

Composant Exigence
Base de données locale SQLite (Docker doit monter le répertoire /data)
**Base de données distante MySQL ≥ 5.7.8 ou PostgreSQL ≥ 9.6
Moteur de conteneur Docker / Docker Compose
Architecture système 64 bits uniquement (amd64 / arm64) ; les systèmes 32 bits ne sont pas pris en charge

⚙️ Configuration des variables d'environnement

Configuration courante des variables d'environnement
Nom de variable Description Valeur par défaut
SESSION_SECRET Secret de signature d’authentification, identique sur tous les nœuds -
SESSION_COOKIE_SECURE false/non défini désactive l’OriginGuard de refresh/logout pour les proxys HTTP locaux ; true active le cookie Secure et le contrôle strict de l’Origin false
SESSION_COOKIE_TRUSTED_URL Obligatoire en mode Secure : Origins HTTPS exactes autorisées pour refresh/logout, séparées par des virgules ; ce n’est pas une liste CORS relay -
TRUSTED_PROXIES Variable absente/vide : approuve le bouclage, les réseaux RFC 1918 et l’ULA IPv6 avec un avertissement au démarrage ; none n’approuve aucun proxy ; une liste IP/CIDR explicite remplace les valeurs par défaut 127.0.0.0/8, ::1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7
USER_SESSION_ACTIVE_LIMIT Nombre maximal de Sessions de connexion actives par utilisateur 50
USER_SESSION_ISSUANCE_LIMIT Nombre maximal de Sessions créées par utilisateur dans la fenêtre, y compris les Sessions révoquées 100
USER_SESSION_ISSUANCE_WINDOW_SECONDS Fenêtre de comptage des Sessions ; limitée à la durée de conservation des Sessions révoquées si elle est supérieure 86400
USER_SESSION_REVOKED_RETENTION_DAYS Conservation en jours des Sessions révoquées pour l’audit et le comptage 7
USER_SESSION_HOURLY_ALERT_THRESHOLD Seuil global horaire déclenchant uniquement une alerte, sans bloquer les connexions 5000
CRYPTO_SECRET Secret HMAC des clés de cache ; les nœuds partageant Redis doivent utiliser la même valeur effective Par défaut, SESSION_SECRET
SQL_DSN Chaine de connexion à la base de données -
REDIS_CONN_STRING Chaine de connexion Redis -
STREAMING_TIMEOUT Délai d'expiration du streaming (secondes) 300
STREAM_SCANNER_MAX_BUFFER_MB Taille max du buffer par ligne (Mo) pour le scanner SSE ; à augmenter quand les sorties image/base64 sont très volumineuses (ex. images 4K) 64
MAX_REQUEST_BODY_MB Taille maximale du corps de requête (Mo, comptée après décompression ; évite les requêtes énormes/zip bombs qui saturent la mémoire). Dépassement ⇒ 413 32
AZURE_DEFAULT_API_VERSION Version de l'API Azure 2025-04-01-preview
ERROR_LOG_ENABLED Interrupteur du journal d'erreurs false
PYROSCOPE_URL Adresse du serveur Pyroscope -
PYROSCOPE_APP_NAME Nom de l'application Pyroscope new-api
PYROSCOPE_BASIC_AUTH_USER Utilisateur Basic Auth Pyroscope -
PYROSCOPE_BASIC_AUTH_PASSWORD Mot de passe Basic Auth Pyroscope -
PYROSCOPE_MUTEX_RATE Taux d'échantillonnage mutex Pyroscope 5
PYROSCOPE_BLOCK_RATE Taux d'échantillonnage block Pyroscope 5
HOSTNAME Nom d'hôte tagué pour Pyroscope new-api

📖 Configuration complète: Documentation des variables d'environnement

🔧 Méthodes de déploiement

Méthode 1: Docker Compose (recommandé)
# Cloner le projet
git clone https://github.com/QuantumNous/new-api.git
cd new-api

# Modifier la configuration
nano docker-compose.yml

# Démarrer le service
docker-compose up -d
Méthode 2: Commandes Docker

Utilisation de SQLite:

docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest

Utilisation de MySQL:

docker run --name new-api -d --restart always \
  -p 3000:3000 \
  -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" \
  -e TZ=Asia/Shanghai \
  -v ./data:/data \
  calciumion/new-api:latest

💡 Explication du chemin:

  • ./data:/data - Chemin relatif, données sauvegardées dans le dossier data du répertoire actuel
  • Vous pouvez également utiliser un chemin absolu, par exemple : /your/custom/path:/data
Méthode 3: Panneau BaoTa
  1. Installez le panneau BaoTa (version ≥ 9.2.0)
  2. Recherchez New-API dans le magasin d'applications
  3. Installation en un clic

📖 Tutoriel avec des images

⚠️ Considérations sur le déploiement multi-machines

Warning

  • Tous les nœuds doivent utiliser la même base de données principale et la même valeur SESSION_SECRET ; sinon les Access Tokens, sessions Refresh et flux d’authentification temporaires ne peuvent pas être vérifiés de façon cohérente.
  • Les nœuds connectés au même Redis doivent aussi utiliser le même CRYPTO_SECRET, faute de quoi les empreintes de clé de cache diffèrent et les entrées partagées ne peuvent pas être réutilisées de façon cohérente.

La base de données fait autorité pour les Sessions de connexion et pour les limites actives/d’émission par utilisateur. Les entrées Session de Redis sont des caches de courte durée dont le TTL suit SYNC_FREQUENCY (60 secondes par défaut), sans jamais dépasser la durée de vie restante de la Session.

Topologie Redis Propagation des Sessions Limitation de débit
Redis partagé Les révocations et publications de version se propagent normalement immédiatement Les quotas Redis sont partagés entre les nœuds
Redis indépendant par nœud Les nœuds se resynchronisent depuis la base dans le délai effectif de SYNC_FREQUENCY ; un nouveau Token issu d’une rotation peut recevoir temporairement une réponse 401 sur un nœud dont le cache est obsolète Chaque nœud possède son propre quota ; la capacité agrégée peut donc atteindre environ la limite configurée multipliée par le nombre de nœuds
Sans Redis Chaque validation de Session consulte directement la base de données Les limites en mémoire sont indépendantes sur chaque nœud

Réduire SYNC_FREQUENCY raccourcit la fenêtre d’obsolescence avec des Redis indépendants, mais ajoute une lecture de Session par clé primaire, par SID actif, par nœud et par TTL. Ces garanties donnent une obsolescence bornée à l’authentification Session ; les limites et les autres caches du plan de contrôle adossés à Redis restent dépendants de la topologie.

Consultez Authentification utilisateur et sessions de connexion pour les contrats de token, de vérification Origin et de PAT.

🔄 Nouvelle tentative de canal et cache

Configuration de la nouvelle tentative: Paramètres → Paramètres de fonctionnement → Paramètres généraux → Nombre de tentatives en cas d'échec

Configuration du cache:

  • REDIS_CONN_STRING: Cache Redis (recommandé)
  • MEMORY_CACHE_ENABLED: Cache mémoire

🔗 Projets connexes

Projets en amont

Projet Description
One API Base du projet original
Midjourney-Proxy Prise en charge de l'interface Midjourney

Outils d'accompagnement

Projet Description
new-api-key-tool Outil de recherche de quota d'utilisation avec une clé
new-api-horizon Version optimisée haute performance de New API

💬 Aide et support

📖 Ressources de documentation

Ressource Lien
📘 FAQ FAQ
💬 Interaction avec la communauté Canaux de communication
🐛 Commentaires sur les problèmes Commentaires sur les problèmes
📚 Documentation complète Documentation officielle

🤝 Guide de contribution

Bienvenue à toutes les formes de contribution!

  • 🐛 Signaler des bogues
  • 💡 Proposer de nouvelles fonctionnalités
  • 📝 Améliorer la documentation
  • 🔧 Soumettre du code

📜 Licence

Ce projet est sous licence GNU Affero General Public License v3.0 (AGPLv3).

Il s'agit d'un projet open-source développé sur la base de One API (licence MIT).

Si les politiques de votre organisation ne permettent pas l'utilisation de logiciels sous licence AGPLv3, ou si vous souhaitez éviter les obligations open-source de l'AGPLv3, veuillez nous contacter à : support@quantumnous.com


🌟 Historique des étoiles

Graphique de l'historique des étoiles


💖 Merci d'utiliser New API

Si ce projet vous est utile, bienvenue à nous donner une ⭐️ Étoile!

Documentation officielleCommentaires sur les problèmesDernière version

Construit avec ❤️ par QuantumNous