{"meta":{"title":"Limites de session","intro":"Les limites de session permettent à une application de définir un budget de crédits IA pour une session Copilot. Utilisez-la sessionLimits lors de la création ou de la reprise d’une session pour définir une limite réversible pour la fenêtre de comptabilité actuelle.","product":"GitHub Copilot","breadcrumbs":[{"href":"/fr/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/fr/enterprise-cloud@latest/copilot/how-tos","title":"Procédures"},{"href":"/fr/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"Kit de développement logiciel (SDK) Copilot"},{"href":"/fr/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features","title":"Fonctionnalités"},{"href":"/fr/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/session-limits","title":"Limites de session"}],"documentType":"article"},"body":"# Limites de session\n\nLes limites de session permettent à une application de définir un budget de crédits IA pour une session Copilot. Utilisez-la sessionLimits lors de la création ou de la reprise d’une session pour définir une limite réversible pour la fenêtre de comptabilité actuelle.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Configurer une limite de session\n\nDéfinissez `maxAiCredits` sur le plafond souple des crédits IA pour la fenêtre de comptabilisation actuelle de la session. L’utilisation est vérifiée après le retour des appels de modèle, de sorte qu’une réponse peut dépasser la valeur configurée avant que le runtime bloque l’appel de modèle suivant. Le Kit de développement logiciel (SDK) transfère cette valeur à l’interface CLI Copilot lorsqu’il crée ou reprend la session.\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n<!-- docs-validate: skip -->\n\n```typescript\nconst session = await client.createSession({\n    onPermissionRequest: approveAll,\n    sessionLimits: {\n        maxAiCredits: 30,\n    },\n});\n\nconst resumed = await client.resumeSession(session.sessionId, {\n    onPermissionRequest: approveAll,\n    sessionLimits: {\n        maxAiCredits: 30,\n    },\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n<!-- docs-validate: skip -->\n\n```python\nsession = await client.create_session(\n    on_permission_request=PermissionHandler.approve_all,\n    session_limits={\n        \"max_ai_credits\": 30,\n    },\n)\n\nresumed = await client.resume_session(\n    session.session_id,\n    on_permission_request=PermissionHandler.approve_all,\n    session_limits={\n        \"max_ai_credits\": 30,\n    },\n)\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n<!-- docs-validate: skip -->\n\n```golang\nsession, err := client.CreateSession(ctx, &copilot.SessionConfig{\n    OnPermissionRequest: copilot.PermissionHandler.ApproveAll,\n    SessionLimits: &rpc.SessionLimitsConfig{\n        MaxAiCredits: copilot.Float64(30),\n    },\n})\n\nresumed, err := client.ResumeSession(ctx, session.SessionID, &copilot.ResumeSessionConfig{\n    OnPermissionRequest: copilot.PermissionHandler.ApproveAll,\n    SessionLimits: &rpc.SessionLimitsConfig{\n        MaxAiCredits: copilot.Float64(30),\n    },\n})\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n<!-- docs-validate: skip -->\n\n```csharp\nvar session = await client.CreateSessionAsync(new SessionConfig\n{\n    OnPermissionRequest = PermissionHandler.ApproveAll,\n    SessionLimits = new SessionLimitsConfig\n    {\n        MaxAiCredits = 30,\n    },\n});\n\nvar resumed = await client.ResumeSessionAsync(session.SessionId, new ResumeSessionConfig\n{\n    OnPermissionRequest = PermissionHandler.ApproveAll,\n    SessionLimits = new SessionLimitsConfig\n    {\n        MaxAiCredits = 30,\n    },\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n<!-- docs-validate: skip -->\n\n```java\nCopilotSession session = client\n        .createSession(new SessionConfig()\n                .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)\n                .setSessionLimits(new SessionLimitsConfig(30.0)))\n        .get();\n\nCopilotSession resumed = client\n        .resumeSession(session.getSessionId(), new ResumeSessionConfig()\n                .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)\n                .setSessionLimits(new SessionLimitsConfig(30.0)))\n        .get();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"rust\" data-label=\"Rust\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Rust</div>\n\n<!-- docs-validate: skip -->\n\n```rust\nlet limits = SessionLimitsConfig {\n    max_ai_credits: Some(30.0),\n};\n\nlet session = client\n    .create_session(\n        SessionConfig::default()\n            .approve_all_permissions()\n            .with_session_limits(limits.clone()),\n    )\n    .await?;\n\nlet resumed = client\n    .resume_session(\n        ResumeSessionConfig::new(session.id().clone())\n            .approve_all_permissions()\n            .with_session_limits(limits),\n    )\n    .await?;\n```\n\n</div>\n\n</div>\n\n## Observer les événements budgétaires\n\nLes applications peuvent s’abonner aux événements de session pour mettre à jour l’interface utilisateur lorsque la limite réversible change ou que la session atteint le flux budgétaire épuisé.\n\n| Type d’événement | Lorsqu’il est émis | Champs importants |\n|---|---|---|\n| `session.session_limits_changed` | Les limites de session actives ont changé. Une `null``sessionLimits` valeur signifie qu’aucune limite n’est active. | `sessionLimits.maxAiCredits?` |\n| `session.usage_checkpoint` | Le runtime enregistre une utilisation agrégée durable pour la reprise et la comptabilisation. | \n`totalNanoAiu`, `totalPremiumRequests?` |\n| `session_limits_exhausted.requested` | La session a atteint le flux budgétaire épuisé et a besoin d’une décision de l’utilisateur avant de continuer. | \n`requestId`, , `maxAiCredits``usedAiCredits` |\n| `session_limits_exhausted.completed` | Le message de limite atteinte a été corrigé. | \n`requestId`, , `response.action``response.additionalAiCredits?`, ,`response.maxAiCredits?` |\n\nUtilisez les types d’événements générés pour le langage sdk que vous utilisez. Par exemple, TypeScript réduit par `event.type`:\n\n```typescript\nsession.on((event) => {\n    if (event.type === \"session_limits_exhausted.requested\") {\n        showBudgetDialog({\n            requestId: event.data.requestId,\n            maxAiCredits: event.data.maxAiCredits,\n            usedAiCredits: event.data.usedAiCredits,\n        });\n    }\n});\n```"}