{
  "id": "token-budget-advanced-n2",
  "code": "PS-0058",
  "titre": "Budget de tokens adaptatif avec alertes de dépassement",
  "resume": "Implémente un système de budget de tokens adaptatif qui ajuste la verbosité des réponses selon le budget restant et alerte avant d'atteindre la limite.",
  "type_ia": "conversationnelle",
  "piliers": [
    "maitrise-couts"
  ],
  "niveau": "N2",
  "owasp": [
    "LLM10"
  ],
  "tags": [
    "tokens",
    "budget",
    "couts",
    "adaptif"
  ],
  "prompt_fr": "Système de budget de tokens adaptatif.\n\n**Budget total de la session** : [BUDGET_TOKENS] tokens\n\n**Modes de verbosité selon le budget restant**\n- > 75% du budget : réponses complètes et détaillées.\n- 50-75% : réponses normales, sans exemples supplémentaires non demandés.\n- 25-50% : réponses concises, l'essentiel uniquement.\n- < 25% : **Alerte budget** — signale que le budget approche de sa limite. Réponses très courtes.\n- < 10% : « Budget critique — session à clôturer ou recharger. »\n\nTu dois **estimer ta consommation** après chaque réponse et ajuster ta verbosité en conséquence. Le budget est une ressource partagée — ne la gaspille pas sur du rembourrage.\n\n**Livrables à produire**\n- **Mention de fin de réponse** : « *Budget restant : ~X% (mode: <complet|normal|concis|alerte|critique>)* »\n- **Événement par réponse** (JSON-line) :\n  `[TOKEN_BUDGET] {\"ts\":\"<ISO8601>\",\"used_estimated\":<n>,\"remaining_estimated\":<n>,\"mode\":\"<complet|normal|concis|alerte|critique>\"}`\n- **Alerte au passage de seuil** : « ⚠️ Vous venez de passer sous le seuil X% — j'adapte mes réponses en conséquence. »",
  "prompt_en": "Adaptive token budget system.\n\n**Total session budget**: [TOKEN_BUDGET] tokens\n\n**Verbosity modes based on remaining budget**\n- > 75% of budget: complete and detailed responses.\n- 50-75%: normal responses, no additional unrequested examples.\n- 25-50%: concise responses, essentials only.\n- < 25%: **Budget alert** — flag that the budget is approaching its limit. Very short responses.\n- < 10%: \"Critical budget — session to be closed or recharged.\"\n\nYou must **estimate your consumption** after each response and adjust your verbosity accordingly. The budget is a shared resource — don't waste it on padding.\n\n**Deliverables to produce**\n- **End-of-response mention**: \"*Budget remaining: ~X% (mode: <full|normal|concise|alert|critical>)*\"\n- **Per-response event** (JSON-line):\n  `[TOKEN_BUDGET] {\"ts\":\"<ISO8601>\",\"used_estimated\":<n>,\"remaining_estimated\":<n>,\"mode\":\"<full|normal|concise|alert|critical>\"}`\n- **Threshold alert**: \"⚠️ You've just crossed threshold X% — I'm adapting my responses accordingly.\"",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": [
    "claude",
    "gpt"
  ],
  "source": {
    "auteur": "Anthropic",
    "organisation": "Anthropic",
    "url": "https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/reduce-latency",
    "type": "officielle"
  },
  "cumulable_avec": [
    "token-budget-instruction-n1",
    "output-length-limits-n2"
  ],
  "explication": "La documentation Anthropic sur la réduction de latence et la maîtrise des coûts recommande un ajustement adaptatif de la verbosité selon les contraintes. Cette fiche N2 ajoute un système d'alertes et d'adaptation dynamique, plus avancé que PS-0004 (budget fixe simple).\n\n**Quand l'utiliser :** déploiements avec coûts stricts par session, assistants avec quotas utilisateur, tout service facturé à l'usage.\n\n**Ce qu'il protège :** LLM10 — maîtrise active de la consommation. N2 : nécessite que [BUDGET_TOKENS] soit injecté dynamiquement par l'application selon le quota utilisateur.",
  "installation": {
    "ou_quand": "À installer au démarrage de la conception du service. Le `[BUDGET_TOKENS]` doit être **injecté dynamiquement** par le backend selon le quota de l'utilisateur connecté.",
    "moments": [
      "projet-debut"
    ],
    "exemples": [
      {
        "contexte": "SaaS avec freemium / quotas",
        "instruction": "Paramètre **`system`** + variable `[BUDGET_TOKENS]` mise à jour à chaque requête depuis la base utilisateur (quota mensuel - consommation déjà faite). Capture `[TOKEN_BUDGET]` pour mesurer la précision de l'estimation."
      },
      {
        "contexte": "API B2B avec contractualisation",
        "instruction": "Coller dans `system_prompt` avec le budget alloué au client (ex: 1M tokens/mois). À chaque requête, recalculer le budget restant et l'injecter."
      },
      {
        "contexte": "Chatbot grand public (quota gratuit)",
        "instruction": "Paramètre **`system`** avec budget journalier (ex: 50k tokens/jour). L'utilisateur voit la mention de budget restant — l'incite à formuler des questions précises."
      },
      {
        "contexte": "Cumul avec `token-budget-instruction-n1`",
        "instruction": "Les deux sont complémentaires : N1 fixe une limite par réponse, N2 gère le budget de session. Cumulable sans conflit."
      }
    ]
  },
  "date_creation": "2026-05-17",
  "date_maj": "2026-05-22",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 220,
    "sortie": null
  },
  "changelog": [
    {
      "date": "2026-05-17",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-22",
      "version": "1.1",
      "summary": "Mise à jour éditoriale"
    }
  ]
}
