Qu'est-ce qu'une API de LLM ?

Mis à jour : septembre 2026

Une API de LLM est un endpoint HTTP vers un modèle de langage hébergé : envoyez un prompt, recevez du texte généré, facturé au token. C’est une API ordinaire dotée de trois propriétés inhabituelles — elle est stateless (vous renvoyez toute la conversation à chaque appel), mesurée en tokens (entrée et sortie tarifées séparément) et non déterministe (le même prompt peut renvoyer des textes différents). Maîtrisez ces trois points, et le reste est la discipline opérationnelle que les pages les mieux classées escamotent : où l’appel a sa place, ce qu’il coûte et comment il échoue.

Points clés

QuestionRéponse
Ce que c’estUn POST d’un tableau messages → une réponse de l’assistant + le décompte des tokens
La facturationAu token, entrée et sortie tarifées séparément ; la sortie coûte plus cher
Le piège du statelessLa mémoire, c’est vous qui renvoyez les tours précédents — à chaque appel, chaque token payé
La règle d’orNe l’appelez jamais depuis le client — la clé fuit ; passez par un proxy dans le backend
La passerelle vers les agentsLe tool calling — le modèle demande une fonction, votre code l’exécute

Un vrai appel, côté serveur

// JavaScript — Cloud Code (cloud/main.js)
// The LLM call belongs server-side — the key never reaches the client
Parse.Cloud.define('summarize', async (req) => {
  const res = await Parse.Cloud.httpRequest({
    method: 'POST',
    url: 'https://api.llm-provider.example/v1/chat/completions',
    headers: {
      Authorization: `Bearer ${process.env.LLM_KEY}`, // server-side secret
      'Content-Type': 'application/json',
    },
    body: {
      model: 'default-chat',
      messages: [
        { role: 'system', content: 'Summarize in one sentence.' },
        { role: 'user', content: req.params.text },
      ],
      max_tokens: 80, // cost + latency guardrail, enforced by YOU
    },
  });
  return res.data.choices[0].message.content;
});

Le format est portable — la plupart des fournisseurs acceptent le même format chat-completions, si bien que la requête et la réponse ci-dessous se lisent de la même façon quel que soit le modèle visé :

POST /v1/chat/completions            Authorization: Bearer <key>
{ "model": "default-chat",
  "messages": [
    { "role": "system", "content": "You are concise." },   ← définit le comportement
    { "role": "user",   "content": "Explain tokens." } ],   ← l'instruction
  "max_tokens": 200, "temperature": 0.7, "stream": false }

→ { "choices": [ { "message": { "role": "assistant",
                                "content": "A token is…" },
                   "finish_reason": "stop" } ],
    "usage": { "prompt_tokens": 24, "completion_tokens": 118,
               "total_tokens": 142 } }        ← ce qui vous est facturé

Les tokens sont la monnaie

Un token est un fragment de texte — environ quatre caractères, ou les trois quarts d’un mot anglais. Tout le coût d’une API de LLM se ramène à les compter, et deux faits surprennent. La sortie coûte plus cher que l’entrée — souvent plusieurs fois plus — parce que lire votre prompt est bon marché, alors que générer chaque token de la réponse est gourmand en calcul, une prédiction à la fois sur tout le vocabulaire. Et le contexte se paie à chaque appel : le modèle est stateless, donc la « mémoire », c’est vous qui renvoyez les tours précédents, et un long historique ou un gros passage récupéré est facturé à nouveau à chaque requête. La formule mensuelle approximative à intérioriser :

coût mensuel ≈ ( requêtes/jour
                 × (avg_input_tokens  × input_price_per_M  / 1_000_000
                  + avg_output_tokens × output_price_per_M / 1_000_000) )
               × 30

Les leviers qui la font bouger : plafonner max_tokens, réduire le contexte renvoyé,
choisir un modèle plus petit pour les tâches simples, et mettre en cache les préfixes de prompt réutilisés.

Les paramètres qui comptent

ParamètreContrôleConseil pratique
temperatureLe caractère aléatoire (0–2)0 pour l’extraction/la classification ; ~0,7 pour la prose
top_pNucleus samplingRéglez celui-ci ou temperature — pas les deux
max_tokensPlafond de longueur de sortieDéfinissez-le presque toujours — il borne le coût et la latence
stopSéquences d’arrêtTerminez la génération sur un délimiteur que vous contrôlez

Streaming : pourquoi les interfaces de chat semblent rapides

Activez un flag stream et la réponse arrive de façon incrémentale sous forme de Server-Sent Events — des lignes data:, un fragment de tokens à la fois, terminées par un marqueur [DONE] — au lieu d’un bloc unique après plusieurs secondes. La raison tient à la perception : le délai jusqu’au premier token n’est qu’une fraction du délai jusqu’à la réponse complète, donc l’utilisateur voit les mots apparaître plutôt qu’un spinner tourner. C’est du texte unidirectionnel du serveur vers le client sur du HTTP simple, ce qui correspond exactement à la forme de SSE et explique précisément pourquoi le streaming de LLM l’utilise plutôt que les WebSockets. La conséquence côté backend : votre proxy doit laisser passer le flux de bout en bout — lire le flux d’événements du fournisseur et le relayer — plutôt que de mettre toute la réponse en tampon, ce qui ruinerait l’intérêt.

Tool calling et sortie structurée

Deux fonctionnalités transforment « du texte en entrée, du texte en sortie » en quelque chose de programmable. Le tool calling (appel d’outils) : vous décrivez les fonctions disponibles (nom + schéma JSON) dans la requête, et le modèle — au lieu de prose — renvoie un appel JSON structuré qui nomme un outil et ses arguments ; votre code l’exécute et renvoie le résultat (le pas-à-pas de Fowler est la référence claire). Le modèle n’exécute jamais la fonction ; il se contente de la demander. La sortie structurée, distincte du tool calling et souvent confondue avec lui, recouvre trois choses qu’il vaut la peine de distinguer :

MécanismeGarantieÀ utiliser pour
Mode JSONDu JSON valide — mais de n’importe quelle formeLes besoins lâches du type « donne-moi du JSON »
Structured OutputsCorrespond exactement à votre schémaExtraction, classification, données typées
Tool callingUn appel à votre fonctionFaire des choses, pas seulement formater

Le tool calling est le mécanisme qui rend possible un agent IA — la même requête/réponse, exécutée en boucle jusqu’à ce que le modèle cesse de demander des outils.

API de LLM vs. auto-hébergement d’un modèle ouvert

API de LLM hébergéeModèle ouvert auto-hébergé
InfrastructureAucune — le fournisseur la fait tournerGPU, stack de serving, exploitation
FacturationAu token, à l’usageCapacité fixe, à vous de la remplir
Délai de mise en productionDes minutesDes jours à des semaines
Résidence des donnéesLes conditions du fournisseurEntièrement à vous
Coût à volume faible/irrégulierLe moins cherDes GPU inactifs qui brûlent de l’argent
Coût à volume extrême et soutenuPeut dépasser l’auto-hébergementGagnant au-delà du seuil de rentabilité

La lecture honnête : une API l’emporte pour presque tout le monde, presque tout le temps — zéro infrastructure, démarrage instantané, et moins cher tant que le volume n’est pas réellement important et régulier. Auto-héberger un modèle ouvert (avec Ollama, vLLM ou llama.cpp) ne rentabilise son coût d’exploitation qu’au-delà d’un seuil élevé, ou quand la résidence des données est une exigence ferme. La plupart des produits démarrent sur l’API et ne réexaminent la question que si l’échelle l’impose un jour.

Fiabilité : les endpoints de LLM sont capricieux

Traitez l’API de LLM comme une dépendance distante lente, soumise à des limites de débit et qui échoue de temps en temps, parce que c’en est une. Les limites s’expriment en requêtes par minute et tokens par minute ; dépassez l’une ou l’autre et vous recevez un 429. La discipline est la même que celle qu’exige toute API soumise au rate limiting : sur un 429 ou un 5xx, réessayez avec un backoff exponentiel plus du jitter et respectez Retry-After ; sur un 4xx — authentification invalide, requête malformée, refus de politique de contenu — ne réessayez pas, car l’appel échouera à l’identique. Ajoutez des timeouts par requête (la génération peut se bloquer), et souvenez-vous qu’un appel non idempotent retenté coûte ses tokens deux fois. Rien de tout cela n’est propre aux LLM ; tout cela est ignoré par les tutoriels qui s’arrêtent au curl du cas nominal.

La règle que les tutoriels enterrent : ne l’appelez jamais depuis le client

Le fait opérationnel le plus important, et celui que les pages de glossaire omettent : l’appel à l’API de LLM a sa place sur votre serveur, jamais dans le navigateur ni dans l’app. Une clé d’API de modèle livrée au client peut être volée d’un simple coup d’œil sur l’onglet réseau ou en décompilant le binaire — et contrairement à une clé publiable qui fuit, une clé de modèle volée, c’est un inconnu avec votre budget de tokens et aucune autre limite que votre facture. Le pattern est la même discipline de proxy qu’exige tout service protégé par une clé secrète : le client appelle votre endpoint, votre backend garde la clé dans la configuration côté serveur et appelle le modèle, et la réponse revient par vous. Ce proxy est aussi l’endroit où vivent tous les autres contrôles de cet article — plafonds de coût, nouvelles tentatives, streaming, réduction des prompts — et c’est pourquoi la question « où va l’appel ? » n’a qu’une seule réponse.

Cas d’usage courants

  • Résumé et extraction — transformer un long texte en données courtes et structurées, temperature: 0.
  • Chat et assistants — des réponses en streaming sur un historique de conversation renvoyé.
  • Classification et étiquetage — des Structured Outputs qui imposent votre schéma d’étiquettes.
  • Réponses RAG — une génération ancrée dans un contexte récupéré, dont le coût se maîtrise en réduisant ce contexte.
  • Actions agentiques — du tool calling en boucle, chaque outil étant une fonction backend soumise aux permissions.

Devriez-vous utiliser une API de LLM ? Matrice de décision

SituationChoisissez
Livrer une feature d’IA maintenantUne API de LLM — zéro infrastructure
Toute app exposée aux clientsL’API, appelée côté serveur — jamais depuis l’appareil
Volume extrême et soutenuÉvaluez l’auto-hébergement (Ollama, vLLM) au-delà du seuil de rentabilité
Résidence des données stricteAuto-hébergez, ou choisissez un fournisseur offrant les bonnes garanties
Tâche déterministe, fondée sur des règlesPeut-être aucun LLM — du code simple est moins cher et fiable
Le modèle doit faire des chosesTool calling → un agent

Limites et trade-offs

  • Le non-déterminisme est la règle par défaut. Le même prompt varie d’une exécution à l’autre ; tout ce qui exige une répétabilité exacte nécessite temperature: 0 et, souvent, une validation de la sortie.
  • Le coût grimpe avec les tokens, en silence. Un contexte généreux ou un max_tokens non borné rend coûteuse à grande échelle une feature bon marché — mesurez la consommation, ne la supposez pas.
  • La latence se compte en secondes, pas en millisecondes. Les appels de LLM sont lents selon les standards du web ; concevez en conséquence avec du streaming, des patterns asynchrones et des états de chargement honnêtes.
  • La dépendance est externe et soumise à des limites de débit. Les pannes et le throttling du fournisseur sont vos pannes ; nouvelles tentatives, solutions de repli et cache relèvent de la résilience, pas de la finition.
  • Les sorties peuvent être fausses et assurées. L’API renvoie un texte fluide indépendamment de la vérité ; l’ancrage (RAG) et la validation sont ce qui vous permet de lui faire confiance.

Les API de LLM sur Back4app

Back4app est une plateforme open-source de Backend as a Service (BaaS) qui combine une base de données gérée, des API REST et GraphQL générées automatiquement, l’authentification, le stockage de fichiers et des fonctions serverless avec Cloud Code. La question « où l’appel a-t-il sa place ? » se règle d’elle-même ici : dans une Cloud Function, exactement comme le montrent les onglets de code — le client appelle votre summarize, la fonction garde la clé du modèle dans la configuration côté serveur et appelle l’API de LLM, et la clé ne touche jamais l’appareil. Ce seul emplacement comble d’un coup toute la liste des lacunes : plafonds de coût (la fonction fixe max_tokens et choisit le modèle), nouvelles tentatives et backoff (dans la fonction, face à l’endpoint capricieux), et livraison de deux manières — renvoyez la réponse de façon synchrone pour une réponse unique, ou écrivez-la en base de données et laissez les clients la voir se remplir via Live Queries, ce qui revient à du streaming sans socket à construire vous-même. L’API de LLM cesse d’être un risque d’intégration et devient un appel côté serveur de plus, que votre backend sait déjà passer en toute sécurité.

Questions fréquentes

Qu'est-ce qu'une API de LLM ?

Un endpoint HTTP qui permet à votre code d'envoyer un prompt à un grand modèle de langage hébergé et de recevoir du texte généré en retour — sans faire tourner vous-même le modèle, les GPU ni l'infrastructure d'inférence. Vous envoyez un corps JSON en POST, vous recevez un message de l'assistant accompagné du décompte des tokens consommés, et vous payez au token.

Qu'est-ce qu'un token, et comment le pricing est-il calculé ?

Un token est un fragment de texte — environ quatre caractères, ou les trois quarts d'un mot en anglais. Vous payez par million de tokens, avec des tarifs distincts pour l'entrée (votre prompt) et la sortie (la réponse générée). La sortie coûte généralement plusieurs fois plus cher que l'entrée, car générer chaque token demande plus de calcul que d'en lire un.

Qu'est-ce que la fenêtre de contexte ?

Le nombre maximal de tokens — entrée plus sortie — qu'un modèle peut prendre en compte dans une requête. Elle plafonne la quantité d'historique de conversation ou de document que vous pouvez inclure, et c'est un facteur de coût direct : chaque appel paie pour tout le contexte envoyé, si bien qu'un long historique ou un gros passage récupéré représente de l'argent dépensé à chaque requête.

Qu'est-ce que le streaming, et pourquoi les interfaces de chat l'utilisent-elles ?

Activer un flag stream renvoie la réponse de façon incrémentale sous forme de Server-Sent Events plutôt qu'en un bloc final unique, si bien que l'interface affiche les tokens au fil de leur génération. Il existe pour la latence perçue : le délai jusqu'au premier token n'est qu'une fraction du délai jusqu'à la réponse complète, donc l'utilisateur voit des mots immédiatement au lieu d'un spinner pendant plusieurs secondes.

Qu'est-ce que le function calling ou tool calling ?

Vous décrivez les outils disponibles — un nom et un schéma JSON — dans la requête ; le modèle, au lieu de répondre en prose, renvoie un appel JSON structuré qui nomme un outil et ses arguments. Votre code l'exécute et renvoie le résultat. Le modèle n'exécute jamais la fonction ; il se contente de la demander. C'est le mécanisme qui transforme une API de LLM en agent.

Faut-il appeler une API de LLM depuis le client ou depuis le serveur ?

Depuis le serveur, toujours. Une clé d'API livrée dans un bundle navigateur ou un binaire mobile peut être volée après une simple inspection de l'onglet réseau ou une décompilation — et une clé de modèle volée, c'est un inconnu qui dépense votre budget de tokens. Chaque appel de LLM passe par votre backend, avec la clé dans la configuration côté serveur.

API de LLM ou auto-héberger un modèle ouvert ?

Une API, c'est zéro infrastructure, une facturation à l'appel et une mise en production dès aujourd'hui ; auto-héberger un modèle ouvert (avec des outils comme Ollama, vLLM ou llama.cpp) achète le contrôle total et la résidence des données, mais ne l'emporte sur le coût qu'à un volume très élevé et soutenu, une fois les GPU et l'exploitation comptés. La plupart des produits démarrent avec l'API et réexaminent la question à l'échelle.

Comment gérer les rate limits et les pannes ?

Les limites s'expriment en requêtes par minute et en tokens par minute ; sur un 429 ou un 5xx, réessayez avec un backoff exponentiel plus du jitter et respectez le header Retry-After s'il est présent. Ne réessayez pas les erreurs 4xx — une authentification invalide, une requête malformée ou un refus de politique de contenu échoueront à l'identique la seconde fois.

Termes associés

À comparer avec

Lectures recommandées

Prêt à construire votre backend ?

Lancez votre projet sur Back4app en quelques minutes — base de données, authentification, API et Cloud Code inclus. Sans carte bancaire.

Écrit et révisé par Back4app Engineering, Back4app Engineering · Publié le 2026-09-14