Aller au contenu principal

Gestion des Limites de Tokens dans les Conversations IA

Lors de l’utilisation d’API de modèles de langage (LLM) comme OpenAI GPT-4, chaque appel API est soumis à une limite maximale de tokens (par exemple, 8192 ou 128k tokens). Les conversations longues dépassent facilement cette limite, surtout si l’on conserve l’historique pour assurer la continuité.

Ce guide explique pourquoi les limites de tokens sont importantes et propose des stratégies concrètes pour préserver le contexte tout en restant dans les limites imposées.


Pourquoi les Limites de Tokens Sont Importantes

  • Chaque message de l’historique consomme des tokens (messages utilisateur et assistant).
  • Si le total dépasse la limite du modèle, l’appel API échoue.
  • Le paramètre max_tokens définit l’espace restant pour la réponse du modèle.

Exemple : Avec GPT-4 (8192 tokens max), si votre prompt fait déjà 7800 tokens, la réponse sera très courte ou l’appel échouera.


Stratégies pour Gérer les Limites de Tokens

1. Tronquer les Anciens Messages

Supprimez les premiers messages de l’historique (sauf le message système).

while token_count(messages + [new_prompt]) > MAX_TOKENS - reserved_for_response:
# Supprime le plus ancien message utilisateur/assistant
messages.pop(1)

Avantages : Simple
Inconvénients : Perte de contexte initial


2. Résumer les Anciens Messages

Avant de supprimer des messages, demandez au modèle de les résumer. Remplacez ensuite le bloc supprimé par un résumé.

[
{ "role": "system", "content": "Vous êtes David Goggins..." },
{ "role": "assistant", "content": "Résumé : l'utilisateur a parlé de faiblesse, de douleur, et vous lui avez conseillé d'utiliser la douleur comme moteur." },
{ "role": "user", "content": "Je lutte à nouveau. Que dois-je faire ?" }
]

Avantages : Préserve l’intention et la mémoire
Inconvénients : Nécessite une logique de résumé ou un appel supplémentaire


3. Stratégie Hybride (Recommandée)

  • Conservez les 5 à 10 derniers messages en intégralité
  • Résumez les parties plus anciennes en un seul message
  • Combinez contexte brut et résumé

Idéal pour : Chats longs, jeux de rôle, bots de coaching


4. Mémoire Augmentée par Recherche (Avancé)

  • Stockez toutes les conversations passées en externe (ex. : base de données vectorielle)
  • Récupérez les passages les plus pertinents à chaque nouvelle requête
  • Injectez uniquement ces extraits dans le prompt

Outils : FAISS, Chroma, LangChain, LlamaIndex
Avantages : Meilleure évolutivité à long terme
Inconvénients : Nécessite une infrastructure backend et une logique d’indexation


Choisir la Bonne Approche

StratégieRétention du contexteSimplicitéScalabilitéCas d’usage
Suppression des anciens messages❌ Faible✅ Simple❌ LimitéeTâches courtes, requêtes transactionnelles
Résumer & remplacer✅ Élevée⚠️ Moyenne✅ BonneCoaching, journalisation, chats à personnalité
Hybride (brut + résumé)✅✅ Excellente⚖️ Modérée✅✅ MeilleureAssistants long terme, bots à mémoire enrichie
Mémoire augmentée par recherche✅✅ Excellente❌ Complexe✅✅ MeilleureApplications évolutives avec mémoire ou recherche

Exemple : Résumer puis Continuer

Lorsque l’historique devient trop long :

  1. Résumez les anciens messages
  2. Insérez le résumé comme message assistant
  3. Continuez la conversation avec les nouveaux prompts
messages = [
{ "role": "system", "content": "Vous êtes David Goggins..." },
{ "role": "assistant", "content": "Résumé des 50 messages précédents..." },
{ "role": "user", "content": "Je rechute. Aidez-moi à repartir." }
]

Conseils Pratiques

  • Réservez toujours des max_tokens pour la réponse de l’assistant (ex. : 300–1000 tokens)
  • Utilisez des bibliothèques comme tiktoken pour compter les tokens avant l’envoi
  • Actualisez les résumés tous les 20 à 30 messages