{"meta":{"title":"Límites de sesión","intro":"Los límites de sesión permiten a una aplicación establecer un presupuesto de créditos de IA para una sesión de Copilot. Use sessionLimits al crear o reanudar una sesión para establecer un límite flexible para la ventana de contabilidad actual.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/es/enterprise-cloud@latest/copilot/how-tos","title":"Procedimientos"},{"href":"/es/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"SDK de Copilot"},{"href":"/es/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features","title":"Características"},{"href":"/es/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/features/session-limits","title":"Límites de sesión"}],"documentType":"article"},"body":"# Límites de sesión\n\nLos límites de sesión permiten a una aplicación establecer un presupuesto de créditos de IA para una sesión de Copilot. Use sessionLimits al crear o reanudar una sesión para establecer un límite flexible para la ventana de contabilidad actual.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Configuración de un límite de sesión\n\nEstablezca `maxAiCredits` como el límite flexible de créditos de IA para la ventana de contabilidad actual de la sesión. El uso se comprueba después de que se devuelvan las llamadas del modelo, por lo que una respuesta puede superar el valor configurado antes de que el tiempo de ejecución bloquee la siguiente llamada al modelo. El SDK reenvía este valor a la CLI de Copilot cuando crea o reanuda la sesión.\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## Observar eventos presupuestarios\n\nLas aplicaciones pueden suscribirse a eventos de sesión para actualizar la interfaz de usuario cuando cambia el límite temporal o la sesión alcanza el flujo de presupuesto agotado.\n\n| Tipo de evento | Cuando se emite | Campos importantes |\n|---|---|---|\n| `session.session_limits_changed` | Se han cambiado los límites de sesión activos. Un `null``sessionLimits` valor significa que no hay límites activos. | `sessionLimits.maxAiCredits?` |\n| `session.usage_checkpoint` | El entorno de ejecución registra el uso agregado persistente para la reanudación y la contabilización. | \n`totalNanoAiu`, `totalPremiumRequests?` |\n| `session_limits_exhausted.requested` | La sesión ha llegado al flujo de presupuesto agotado y requiere una decisión del usuario antes de continuar. | \n`requestId`, , `maxAiCredits`, `usedAiCredits` |\n| `session_limits_exhausted.completed` | Se corrigió el aviso de límite alcanzado. | \n`requestId`, `response.action`, , `response.additionalAiCredits?`, `response.maxAiCredits?` |\n\nUse los tipos de eventos generados para el lenguaje del SDK que usa. Por ejemplo, TypeScript limita por `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```"}