{"meta":{"title":"Limites de sessão","intro":"Os limites de sessão permitem que um aplicativo defina um orçamento de Créditos de IA para uma sessão de Copilot. Use sessionLimits ao criar ou retomar uma sessão para definir um limite flexível para a janela de contabilidade atual.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/how-tos","title":"Instruções"},{"href":"/pt/copilot/how-tos/copilot-sdk","title":"SDK do Copilot"},{"href":"/pt/copilot/how-tos/copilot-sdk/features","title":"Features"},{"href":"/pt/copilot/how-tos/copilot-sdk/features/session-limits","title":"Limites de sessão"}],"documentType":"article"},"body":"# Limites de sessão\n\nOs limites de sessão permitem que um aplicativo defina um orçamento de Créditos de IA para uma sessão de Copilot. Use sessionLimits ao criar ou retomar uma sessão para definir um limite flexível para a janela de contabilidade atual.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Configurar um limite de sessão\n\nDefina `maxAiCredits` como o limite flexível de Créditos de IA na janela de contabilização atual da sessão. O uso é verificado após o retorno de chamadas de modelo, portanto, uma resposta pode exceder o valor configurado antes que o runtime bloqueie a próxima chamada de modelo. O SDK encaminha esse valor para a CLI Copilot quando cria ou retoma a sessão.\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## Ver eventos orçamentários\n\nOs aplicativos podem se inscrever em eventos da sessão para atualizar a interface do usuário quando o limite flexível muda ou a sessão entra no fluxo de orçamento esgotado.\n\n| Tipo de evento | Quando é emitido | Campos importantes |\n|---|---|---|\n| `session.session_limits_changed` | Os limites de sessões ativas foram alterados. Um `null``sessionLimits` valor significa que nenhum limite está ativo. | `sessionLimits.maxAiCredits?` |\n| `session.usage_checkpoint` | O runtime registra o uso agregado persistente para retomada e contabilização. | \n`totalNanoAiu`, `totalPremiumRequests?` |\n| `session_limits_exhausted.requested` | A sessão atingiu o fluxo de orçamento esgotado e precisa de uma decisão do usuário antes de continuar. | \n`requestId`, , `maxAiCredits``usedAiCredits` |\n| `session_limits_exhausted.completed` | A mensagem de limite atingido foi corrigida. | \n`requestId`, `response.action`, , `response.additionalAiCredits?``response.maxAiCredits?` |\n\nUse os tipos de evento gerados para o idioma do SDK que você está usando. Por exemplo, TypeScript restringe 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```"}