Une passerelle IA pour les modèles, les applications et les agents
简体中文 | 繁體中文 | English | Français | 日本語
Fonctionnalités • Démarrage rapide • Déploiement • Développement • Documentation
New API est une passerelle IA auto-hébergée pour les applications, les agents et les équipes. Connectez vos fournisseurs de modèles, exposez une API commune à vos clients et gérez le routage, les accès, les usages et les coûts depuis une même console.
Utilisez-la pour partager des accès autorisés au sein d'une équipe, changer de fournisseur sans reconfigurer chaque client ou exploiter un service privé multi-modèles. Les fournisseurs incluent OpenAI, Anthropic, Google Gemini, Azure OpenAI, AWS Bedrock, Vertex AI, DeepSeek, Qwen et d'autres services compatibles.
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.
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.
Sans ordre particulier
Merci à JetBrains pour avoir fourni une licence de développement open-source gratuite pour ce projet
| Domaine | Possibilités |
|---|---|
| Accès aux modèles | OpenAI Chat Completions, Responses, Anthropic Messages et Gemini ; streaming, outils, raisonnement et entrées multimodales selon le fournisseur |
| Routage | Correspondance des noms de modèles, priorités et poids des canaux, tentatives supplémentaires, affinité de canal et gestion de plusieurs clés |
| Usages et coûts | Quotas, abonnements, journaux d'utilisation, comptabilisation du cache et tarification par paliers fondée sur des expressions |
| Contrôle d'accès | Utilisateurs, groupes, permissions fines et restrictions des clés API ; OAuth/OIDC, clés d'accès, double authentification et gestion des sessions |
| Tâches asynchrones | Extensions JavaScript pour les API de tâches d'image, de vidéo et autres, avec suivi d'état et récupération des résultats |
| Console web | Gestion des canaux et modèles, journaux d'utilisation et d'audit, playground ; interface en anglais, chinois simplifié et traditionnel, français, japonais, russe et vietnamien |
| Interface | Points d'accès courants |
|---|---|
| OpenAI Chat / Responses | POST /v1/chat/completions, POST /v1/responses |
| Anthropic Messages | POST /v1/messages |
| Gemini | POST /v1beta/models/{model}:generateContent, POST /v1beta/models/{model}:streamGenerateContent |
| Realtime / Responses WebSocket | GET /v1/realtime, GET /v1/responses (mise à niveau WebSocket) |
| Images / audio | /v1/images/generations, /v1/images/edits, /v1/audio/speech, /v1/audio/transcriptions, /v1/audio/translations |
| Embeddings / rerank | POST /v1/embeddings, POST /v1/rerank |
| Extensions de tâches | POST /v1/tasks/{pluginKey}, GET /v1/tasks/{taskId}, ainsi que les routes déclarées par chaque extension |
RelayKit convertit les requêtes, réponses et flux entre les quatre protocoles textuels. Les capacités disponibles dépendent du canal, du modèle amont et du chemin de conversion ; certains outils et champs propres à un protocole ne sont pas entièrement transposables. WebSocket nécessite également un fournisseur et une configuration de canal compatibles.
Ce README décrit le code source actuel. Consultez les notes de la version que vous déployez.
Cette commande démarre une instance SQLite accessible uniquement depuis la machine locale :
mkdir -p data
docker run --name new-api -d --restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-e TZ=Asia/Shanghai \
-v "$(pwd)/data:/data" \
calciumion/new-api:latestOuvrez http://localhost:3000 et suivez l'assistant pour créer le compte administrateur. Le répertoire data conserve la base SQLite lors du remplacement du conteneur.
- Ajoutez un canal avec votre clé API amont, ses modèles et son groupe, puis lancez un test du canal.
- Configurez les prix des modèles et vérifiez que l'utilisateur dispose d'un quota ou d'un abonnement valide.
- Créez une clé API dans la console, autorisée à accéder au même groupe et aux mêmes modèles.
- Pour un client compatible OpenAI, utilisez
http://localhost:3000/v1comme URL de base et la clé émise par New API.
Définissez NEW_API_KEY dans votre shell avec cette clé, puis listez les modèles accessibles :
curl --fail-with-body http://localhost:3000/v1/models \
-H "Authorization: Bearer ${NEW_API_KEY}"Appelez ensuite Responses en remplaçant your-enabled-model par un modèle activé qui prend en charge cette interface :
curl --fail-with-body http://localhost:3000/v1/responses \
-H "Authorization: Bearer ${NEW_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"your-enabled-model","input":"Hello!"}'La configuration Compose du dépôt démarre New API + PostgreSQL + Redis par défaut. Elle contient aussi des exemples pour MySQL et une base de journaux ClickHouse distincte.
git clone https://github.com/QuantumNous/new-api.git
cd new-apiAvant de démarrer, modifiez docker-compose.yml : remplacez les mots de passe d'exemple de la base et de Redis dans les services et les chaînes de connexion, puis définissez un SESSION_SECRET aléatoire et persistant (générable avec openssl rand -hex 32). Pour une console HTTPS, définissez SESSION_COOKIE_SECURE=true et renseignez son origine HTTPS publique exacte dans SESSION_COOKIE_TRUSTED_URL.
docker compose up -d
docker compose logs -f new-api| Composant | Options |
|---|---|
| Base principale | SQLite, MySQL ≥ 5.7.8 ou PostgreSQL ≥ 9.6 |
| Base de journaux distincte | Configurée avec LOG_SQL_DSN ; prend aussi en charge ClickHouse |
| Cache | Redis facultatif et cache mémoire ; partagez Redis si les nœuds doivent partager les limites de débit |
| Plateformes des conteneurs | Linux amd64 / arm64 |
| Variable | Rôle |
|---|---|
SQL_DSN |
Connexion à la base principale ; SQLite si non définie |
LOG_SQL_DSN |
Connexion facultative à une base de journaux distincte |
REDIS_CONN_STRING |
Chaîne de connexion Redis |
SESSION_SECRET |
Secret d'authentification persistant, identique sur tous les nœuds |
CRYPTO_SECRET |
Vaut SESSION_SECRET par défaut ; même valeur effective pour les nœuds partageant Redis |
SESSION_COOKIE_SECURE |
true pour une console HTTPS ; active les cookies de renouvellement Secure et les contrôles stricts d'origine du renouvellement et de la déconnexion |
SESSION_COOKIE_TRUSTED_URL |
Obligatoire en mode Secure : origines HTTPS exactes séparées par des virgules, sans chemin ni joker ; à laisser non définie en HTTP local |
TRUSTED_PROXIES |
IP/CIDR des proxys de confiance, ou none ; à configurer selon votre réseau |
Consultez l'exemple d'environnement, la référence des variables et le guide des sessions. Injectez les variables du conteneur avec environment ou env_file dans Compose ; copier .env.example ne suffit pas.
En production, utilisez HTTPS et configurez le proxy inverse pour le streaming et WebSocket. Conservez et sauvegardez les bases et les données montées. Tous les nœuds doivent partager la base principale et les secrets d'authentification ; des Redis distincts ou des limiteurs en mémoire comptent les limites séparément par nœud. Le guide des sessions détaille la propagation selon la topologie.
Choisissez une version précise d'image dans les versions publiées, lisez ses notes et sauvegardez avant toute mise à niveau. Le tag latest évolue avec les publications ; évaluez les migrations et la compatibilité de votre installation.
Le backend utilise Go et Gin ; la console utilise React 19, TypeScript, Rsbuild, TanStack et Tailwind CSS 4. Utilisez Bun pour le frontend. Consultez go.mod pour la version de référence du langage Go et Dockerfile pour la chaîne de compilation du conteneur.
Compilez le frontend avant de démarrer le backend, qui intègre web/dist :
# Racine du dépôt
cd web
bun install --frozen-lockfile
bun run build
cd ..
go run .Dans un second terminal, démarrez le serveur de développement frontend :
cd web
bun run dev -- --port 5173Ouvrez http://localhost:5173 ; les requêtes API sont relayées vers le backend sur le port 3000. Pour un backend de développement en conteneur, consultez docker-compose.dev.yml et la cible make dev du makefile.
| Emplacement | Responsabilité |
|---|---|
router/, middleware/, controller/ |
Routes HTTP, contrôles d'accès et gestionnaires API |
relay/ |
Adaptateurs amont et routage des requêtes |
service/, model/ |
Logique métier et persistance |
| relaykit/ | Module Go autonome pour les DTO et conversions de protocoles |
| plugins/tasks/ | Extensions de tâches JavaScript ; contrat et limites de l'hôte dans Task Plugin API v1 |
web/ |
Console web ; voir les conventions frontend |
| electron/ | Application de bureau et packaging |
Lisez AGENTS.md avant de contribuer. Exécutez les vérifications adaptées : make test pour les modules Go ; bun run typecheck, bun run lint, bun run test et bun run build dans web/ pour le frontend. Une modification de RelayKit nécessite aussi GOWORK=off go build ./... depuis relaykit/.
| Ressource | Lien |
|---|---|
| Documentation officielle | Guides · Installation · Référence API |
| Exploration du projet | DeepWiki |
| Questions et échanges | FAQ · Communauté |
| Bugs et propositions | GitHub Issues |
| Vulnérabilités | Signalement privé selon la politique de sécurité |
Pour signaler un bug, indiquez la version, le déploiement, les étapes de reproduction et des journaux expurgés des données sensibles. Les contributions à la documentation, aux traductions, aux intégrations et aux tests de régression ciblés sont les bienvenues.
| Projet | Description |
|---|---|
| One API | Base du projet original |
| Midjourney-Proxy | Prise en charge de l'interface Midjourney |
| 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 |
Ce projet est sous licence GNU Affero General Public License v3.0 (AGPLv3).
Des conditions supplémentaires s'appliquent au titre de la section 7 de l'AGPLv3. Les versions modifiées doivent conserver la mention Frontend design and development by New API contributors. dans les mentions légales appropriées et les emplacements visibles de l'interface dédiés aux informations, au droit, au pied de page ou aux attributions, ainsi qu'un lien visible vers le projet original : https://github.com/QuantumNous/new-api.
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
Consultez NOTICE et les licences tierces pour les attributions et les dépendances.
Si ce projet vous est utile, bienvenue à nous donner une ⭐️ Étoile!
Documentation officielle • Commentaires sur les problèmes • Dernière version
Construit avec ❤️ par QuantumNous
