Skip to content

Latest commit

 

History

History
343 lines (248 loc) · 17.7 KB

File metadata and controls

343 lines (248 loc) · 17.7 KB

new-api

New API

Une passerelle IA pour les modèles, les applications et les agents

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

licence version docker AtomGit G-Star

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

Fonctionnalités • Démarrage rapide • Déploiement • Développement • Documentation


📝 Description du projet

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.


🤝 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


Fonctionnalités

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

Protocoles et points d'accès

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.

Démarrage rapide

Essai local avec Docker

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:latest

Ouvrez 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.

Première requête

  1. Ajoutez un canal avec votre clé API amont, ses modèles et son groupe, puis lancez un test du canal.
  2. Configurez les prix des modèles et vérifiez que l'utilisateur dispose d'un quota ou d'un abonnement valide.
  3. Créez une clé API dans la console, autorisée à accéder au même groupe et aux mêmes modèles.
  4. Pour un client compatible OpenAI, utilisez http://localhost:3000/v1 comme 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!"}'

Déploiement

Docker Compose

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-api

Avant 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

Stockage et configuration

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.

Développement et extensions

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 5173

Ouvrez 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/.

Documentation et communauté

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.


🔗 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

📜 Licence

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.


🌟 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 officielle • Commentaires sur les problèmes • Dernière version

Construit avec ❤️ par QuantumNous