---
title: AI Models
description: Vendez des modèles d'IA via votre passerelle : ajoutez vos providers OpenAI/Anthropic, fixez vos prix et offrez un endpoint unique avec clés et wallet.
url: https://nexcmp.com/fr/docs/infrastructure/ai-models/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# AI Models {#ai-models}

> **Dans l'admin :** System › Admin › License & updates (`/license`) pour activer le module. Puis Services › AI Models : Providers (`/ai/providers`), Models (`/ai/models`), Profit (`/ai/profit`) et Audit (`/ai/audit`). Les clients utilisent AI › API dans le portail client.

## Description {#what-it-does}

AI Models est une passerelle et une couche de facturation intégrées à votre propre panneau. Vos clients obtiennent des clés API et appellent **un endpoint unique sur votre domaine**, au format compatible OpenAI ou compatible Anthropic. Vous choisissez les modèles à proposer et le coût de chacun pour 1 million de tokens. NexCMP vérifie la clé, les limites et le solde, transmet la requête à un fournisseur que vous avez ajouté, comptabilise les tokens et débite le compte prépayé du client.

**Vous fournissez les sources de modèles.** NexCMP est livré sans provider, sans modèle, sans adresse par défaut et sans tarif. Il ne fournit ni modèles, ni clés API, ni tokens, ni comptes de provider.

::: warning Vérifiez d'abord les conditions de vos sources
De nombreuses sources de modèles limitent la revente ou la transmission d'accès à des tiers. N'utilisez que des sources que vous êtes autorisé à exploiter et à revendre, et respectez leurs conditions ainsi que la législation en vigueur. Cette page ne constitue pas un conseil juridique.
:::

AI Models est un produit distinct de **AI Chat and AI Agent** (module **AI**, voir [AI providers](https://nexcmp.com/fr/docs/ai/ai-providers/)). Les deux modules sont totalement indépendants.

## Prérequis {#requirements}

| Élément | Prérequis |
|---|---|
| Module | **AI Models** activé sous License & updates, Modules. Il est désactivé par défaut. |
| Providers | Une ou plusieurs sources de modèles que vous êtes autorisé à revendre, chacune avec une API compatible OpenAI (`/chat/completions`), une API compatible Anthropic (`/messages`) ou les deux. Chacune nécessite une URL de base et une clé API. |
| Réseau | Le panel doit pouvoir joindre chaque provider en **HTTPS sur le port 443** via un nom de domaine public. Tout provider situé sur un hôte interne, un autre port ou en HTTP standard doit être répertorié sous **Allowed internal hosts** (paramètre `ai_endpoint_allow`). |
| Clients | Un compte client avec une adresse e-mail vérifiée et un solde sur son wallet. |
| Matériel | Aucun. NexCMP ne fait que relayer les requêtes : aucun GPU ni fichier de modèle requis. |

## Préparer l'infrastructure {#prepare-the-infrastructure}

1. Obtenez une clé API auprès de chaque source de modèle que vous utiliserez, et notez son URL de base (par exemple `https://api.example.com/v1`).
2. Vérifiez les conditions de la source concernant la revente.
3. Si une source fonctionne sur votre réseau interne, déterminez son adresse, par exemple `http://10.0.0.5:8000/v1`. Vous renseignerez `10.0.0.5:8000` sous **Allowed internal hosts**.

## Connecter dans NexCMP {#connect-in-nexcmp}

### 1. Activer le module {#_1-turn-the-module-on}

Ouvrez **System › Admin › License & updates**, localisez la carte **Module** et activez **AI Models**. Le menu se recharge et **Services › AI Models** apparaît. Tant que le module est désactivé, les pages client, les pages d'administration et la passerelle répondent toutes `404 module_disabled`, et aucun provider n'est contacté.

![La carte Module avec le commutateur AI Models activé](https://nexcmp.com/fr/docs/images/infrastructure/ai-models-01-modules.webp)

### 2. Ajouter un fournisseur {#_2-add-a-provider}

1. Ouvrez **AI Models › Providers** et choisissez **Add provider**.
2. Saisissez un **slug** court, un **nom** (vous seul le voyez), le **type** (OpenAI-compatible, Anthropic-compatible ou Both), l'**URL de base** et l'**API key**, ainsi qu'une **priorité** (un nombre plus faible est testé en premier).
3. Enregistrez. La clé est stockée chiffrée et seuls ses quatre derniers caractères sont affichés par la suite. Une clé ne peut être saisie que depuis une session administrateur connectée.

N'utilisez **Both** que pour une passerelle qui prend réellement en charge les deux formats. NexCMP ne convertit **pas** un format vers l'autre : un modèle proposé par un fournisseur compatible OpenAI est accessible sur `/ai/v1/chat/completions`, et un modèle proposé par un fournisseur compatible Anthropic sur `/ai/v1/messages`.

![La page Providers listant trois exemples de fournisseurs avec leur type, priorité et statut](https://nexcmp.com/fr/docs/images/infrastructure/ai-models-02-providers.webp)

### 3. Tester la connexion {#_3-test-the-connection}

Choisissez **Test connection** sur le fournisseur. NexCMP interroge `GET <base URL>/models` avec la clé et indique **ok**, ou la raison de l'échec : **auth** (clé incorrecte), **blocked**, **billing** ou **unreachable**. Les tests sont limités à 6 par minute.

### 4. Synchroniser les modèles {#_4-sync-the-models}

Choisissez **Sync models**. NexCMP lit la liste des modèles du fournisseur et ajoute chaque nouveau modèle **désactivé et sans prix**. Un modèle qui ne figure plus chez le fournisseur est signalé. Tant que le module est activé, la liste est également synchronisée automatiquement toutes les 6 heures (paramètre `ai_models_sync_hours`).

### 5. Définir les prix et activer les modèles {#_5-set-prices-and-switch-models-on}

1. Ouvrez **AI Models › Models**.
2. Pour chaque modèle que vous souhaitez commercialiser, définissez le **prix de vente** en dollars américains par 1 million de tokens: **input**, **cached input** et **output**.
3. Vous pouvez également saisir votre **coût** pour le modèle. **Profit** affiche alors les revenus par rapport aux coûts par jour et par modèle, et un prix de vente inférieur à votre coût majoré de la marge minimale (paramètre `ai_min_margin_pct`, 10 par défaut) est refusé à moins que vous ne confirmiez une vente à perte délibérée. **Set price from cost** utilise une marge que vous choisissez ; il n'y a pas de marge par défaut.
4. Activez le modèle. Un modèle sans prix de vente ne peut pas être activé. Un prix de cached input laissé à zéro est facturé au prix de l'input.

![La page Models avec les prix de vente input, cached input et output ainsi que les commutateurs d'activation](https://nexcmp.com/fr/docs/images/infrastructure/ai-models-03-models.webp)

### 6. Routes et basculement {#_6-routes-and-failover}

Sur un modèle, **Routes** liste les fournisseurs qui le desservent, dans l'ordre. Ajoutez un deuxième fournisseur de secours, définissez l'ordre et indiquez si besoin un nom de modèle différent pour chaque fournisseur (le nom envoyé au fournisseur peut différer du nom que vous publiez). Lorsqu'un fournisseur renvoie une erreur de serveur, une erreur d'autorisation ou de facturation, un modèle manquant ou une limite de débit, NexCMP essaie la route suivante. Si un délai d'attente de lecture expire après l'envoi de la requête, celle-ci n'est **pas** envoyée à un autre fournisseur, pour vous éviter de payer deux fois.

Chaque fournisseur est régulé à `ai_provider_rpm` requêtes par minute (50 par défaut). Si un fournisseur continue de renvoyer des erreurs d'autorisation ou de facturation, NexCMP alerte l'administrateur sur Telegram lorsque Telegram est configuré.

### 7. Activer le commutateur de vente {#_7-open-the-sale-switch}

En haut des pages AI Models, le **commutateur de vente** (paramètre `feature_ai_models`) est désactivé par défaut. Tant qu'il est désactivé, les clients voient que le service n'est pas encore ouvert et la liste de prix publique l'indique comme indisponible. Vérifiez qu'au moins un modèle est activé, qu'il a un prix de vente et une route avec une clé, puis activez-le.

### Ce que les clients peuvent faire {#what-customers-can-do}

Dans le portail client, **AI › API**:

- **Models** affiche vos modèles et vos prix, l'URL de base et des exemples de commandes prêts à l'emploi.
- **API Keys** : créez, renommez, renouvelez, désactivez et supprimez des clés. Un secret n'est affiché qu'une seule fois ; seul un hash est conservé. Par clé : modèles autorisés, expiration, budget indicatif (avertit) et budget strict (bloque avec `402`), requêtes par minute et tokens par minute.
- **Usage** par modèle, clé et jour, avec export.
- **Logs**: enregistrements de requêtes filtrables (heure, clé, modèle, tokens, coût, statut, latence). **Les prompts et réponses ne sont pas enregistrés.** Les logs sont conservés 90 jours par défaut (`ai_log_retention_days`).
- **Settings**: un budget de compte et l'adresse e-mail pour les alertes de budget.
- **Playground**: discutez avec un modèle, comparez des modèles côte à côte et copiez le code correspondant.

![La page API Keys du client avec les URL de base pour les deux formats d'API](https://nexcmp.com/fr/docs/images/infrastructure/ai-models-04-keys.webp)

Les endpoints de la passerelle, sur votre domaine:

```text
POST /ai/v1/chat/completions      OpenAI-compatible
POST /ai/v1/messages              Anthropic-compatible (also /ai/v1/messages/count_tokens)
GET  /ai/v1/models                model list
GET  /ai/v1/models/pricing        public price list, no key needed
```

### Portefeuille et facturation {#wallet-and-billing}

L'utilisation de l'IA est débitée du même portefeuille prépayé que tous les autres services. Avant qu'une requête ne soit envoyée à un fournisseur, NexCMP réserve le montant maximal que la requête pourrait coûter; si le solde est inférieur au minimum (`ai_min_balance_cents`, 20 centimes par défaut) ou insuffisant, la requête est refusée avec `402 insufficient_balance` et **aucun fournisseur n'est appelé**. L'utilisation est regroupée par compte et imputée dans le grand livre du portefeuille après chaque heure, avec un balayage toutes les 5 minutes; l'utilisation non encore imputée est déjà déduite du solde visible par la passerelle.

Les revendeurs peuvent vendre AI Models sur leur propre domaine: leur marge ou remise s'applique à votre prix de vente et leur portefeuille wholesale est débité du prix de gros. Un commutateur d'IA par revendeur, activé par défaut, contrôle qui peut les vendre.

## Vérification {#verify}

1. Après l'étape 3, **Test connection** affiche **ok** et le nombre de modèles.
2. Après l'étape 4, les nouveaux modèles sont listés, désactivés, sans aucun prix.
3. En tant que client disposant d'un portefeuille approvisionné, créez une clé et appelez la passerelle:

   ```bash
   curl https://your-domain/ai/v1/chat/completions \
     -H "Authorization: Bearer sk-ai-…" -H "Content-Type: application/json" \
     -d '{"model":"model-one","messages":[{"role":"user","content":"hello"}]}'
   ```

   Une réponse `200` renvoie la réponse du modèle. **Usage** affiche la requête, et **Profit** l'affiche si vous avez saisi un coût.
4. Avec un portefeuille à zéro, le même appel renvoie `402 insufficient_balance`.

## Limites et remarques {#limits-and-notes}

- Le module n'intègre aucun fournisseur, modèle ou tarif par défaut, et aucune grille tarifaire n'est jamais récupérée auprès d'un fournisseur.
- Les outils exécutés côté fournisseur et facturés par appel, comme la recherche web, sont rejetés car ils ne peuvent pas être mesurés. Seule une courte liste de paramètres de requête est transmise.
- L'utilisation des tokens est extraite de la réponse du fournisseur; si une réponse n'en contient pas, NexCMP l'estime et marque l'enregistrement comme estimé.
- Les erreurs d'un fournisseur sont nettoyées avant d'atteindre le client (les noms, hôtes, adresses et le nom de modèle du fournisseur sont supprimés). Les clients ne voient jamais quel fournisseur a traité une requête.
- Les clients accèdent à la passerelle via le domaine de votre panneau, le protocole TLS de ce domaine doit donc être fonctionnel.
- NexCMP ne fournit pas de contrat de niveau de service, de fine-tuning ni d'hébergement GPU pour ce module.

## Dépannage {#troubleshooting}

| Symptôme | Cause et résolution |
|---|---|
| Toutes les pages AI Models et la passerelle répondent `404 module_disabled` | Le module est désactivé. Activez **AI Models** sous License & updates, Modules. |
| L'ajout d'un fournisseur échoue avec `endpoint_host_not_allowed`, `endpoint_must_be_https` ou `invalid_endpoint_port` | L'URL de base doit être en HTTPS sur le port 443 avec un nom de domaine public. Pour un hôte interne, un autre port ou du HTTP simple, ajoutez `host:port` sous **Allowed internal hosts**. |
| `blocked_endpoint` | L'adresse est une IP, ou le nom résout vers une adresse privée. Ajoutez-la sous **Allowed internal hosts** si c'est ce que vous souhaitez. |
| **Test connection** indique `auth` | La clé est incorrecte ou n'a aucun accès. Saisissez à nouveau la clé. |
| Un modèle ne peut pas être activé (`no_price`) | Définissez d'abord un prix de vente. |
| Les clients reçoivent `503 ai_unavailable` | Le commutateur de vente est désactivé, ou le commutateur d'IA du revendeur est désactivé. |
| Les clients reçoivent `503 upstream_unavailable` | Aucune route activée avec une clé ne dessert ce modèle dans le format demandé. Vérifiez les routes du modèle et le type de fournisseur. |
| Les clients reçoivent `402 insufficient_balance` | Le solde du portefeuille est inférieur au minimum ou insuffisant pour la requête. Demandez au client de recharger. |
