> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Límites de créditos de IA de la sesión

> Establece un límite de créditos de IA en las sesiones de Copilot con sessionLimits y gestiona los eventos relacionados con el límite y los avisos de límite agotado.

Usa `sessionLimits` para establecer un límite flexible de créditos de IA para la ventana de contabilización actual de una sesión de Copilot. Puedes establecerlo tanto al crear como al reanudar una sesión.

## Establecer un límite

Pasa el límite a `maxAiCredits` en `SessionLimitsConfig`. El uso se comprueba después de que finaliza cada llamada al modelo, por lo que una sola respuesta puede superar el valor configurado. Una vez superado el límite, el runtime bloquea la siguiente llamada al modelo.

```php theme={null}
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ResumeSessionConfig;
use Revolution\Copilot\Types\Rpc\SessionLimitsConfig;
use Revolution\Copilot\Types\SessionConfig;

Copilot::start(function (CopilotSession $session) {
    $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: new SessionConfig(
    sessionLimits: new SessionLimitsConfig(maxAiCredits: 30.0),
));

Copilot::client()->resumeSession(
    'existing-session-id',
    new ResumeSessionConfig(
        sessionLimits: new SessionLimitsConfig(maxAiCredits: 30.0),
    ),
);
```

Tanto `SessionConfig` como `ResumeSessionConfig` aceptan `sessionLimits` como una instancia de `SessionLimitsConfig` o como un array.

## Eventos de límite

Escucha los eventos de la sesión para reaccionar a los cambios del límite y para preguntar al usuario cuando se alcanza el límite.

| Evento | Cuándo se dispara | Datos principales |
| - | - | - |
| `session.session_limits_changed` (`SessionEventType::SESSION_SESSION_LIMITS_CHANGED`) | Cambian los límites efectivos de la sesión. Si `sessionLimits` es `null`, no se aplica ningún límite. | `sessionLimits.maxAiCredits` (opcional) |
| `session.usage_checkpoint` (`SessionEventType::SESSION_USAGE_CHECKPOINT`) | El runtime registra el uso agregado para la reanudación o la contabilización. | `totalNanoAiu`, `totalPremiumRequests` (opcional) |
| `session_limits_exhausted.requested` (`SessionEventType::SESSION_LIMITS_EXHAUSTED_REQUESTED`) | Se alcanza el límite y el usuario debe decidir antes de que la sesión continúe. | `requestId`, `maxAiCredits`, `usedAiCredits` |
| `session_limits_exhausted.completed` (`SessionEventType::SESSION_LIMITS_EXHAUSTED_COMPLETED`) | Se resuelve el aviso de límite agotado. | `requestId`, `response.action`, `response.additionalAiCredits` (opcional), `response.maxAiCredits` (opcional) |

Por ejemplo, cuando recibas `SESSION_LIMITS_EXHAUSTED_REQUESTED`, usa los datos del evento para mostrar una interfaz de confirmación.

```php theme={null}
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Types\SessionEvent;

$session->on(function (SessionEvent $event): void {
    if ($event->is(SessionEventType::SESSION_LIMITS_EXHAUSTED_REQUESTED)) {
        $requestId = $event->data['requestId'];
        $maxAiCredits = $event->data['maxAiCredits'];
        $usedAiCredits = $event->data['usedAiCredits'];

        // Muestra una interfaz de confirmación usando $requestId
    }
});
```

## Responder a un límite agotado

Envía la elección del usuario de vuelta al runtime con `handlePendingSessionLimitsExhausted()`. Establece `action` en un caso de `SessionLimitsExhaustedResponseAction`.

```php theme={null}
use Revolution\Copilot\Enums\SessionLimitsExhaustedResponseAction;
use Revolution\Copilot\Types\Rpc\UIHandlePendingSessionLimitsExhaustedRequest;
use Revolution\Copilot\Types\Rpc\UISessionLimitsExhaustedResponse;

$session->rpc()->ui()->handlePendingSessionLimitsExhausted(
    new UIHandlePendingSessionLimitsExhaustedRequest(
        requestId: $requestId,
        response: new UISessionLimitsExhaustedResponse(
            action: SessionLimitsExhaustedResponseAction::Add,
            additionalAiCredits: 10.0,
        ),
    ),
);
```

Las acciones disponibles son:

* `Add`: añade los créditos de IA indicados al límite actual. Establece `additionalAiCredits`.
* `Set`: cambia el límite a un nuevo valor absoluto. Establece `maxAiCredits`.
* `Unset`: elimina el límite de la sesión.
* `Cancel`: cancela la solicitud al modelo bloqueada sin cambiar el límite.

> [!WARNING]
>
> El flujo de aviso de límite agotado mediante `session_limits_exhausted.requested` y `session_limits_exhausted.completed`, así como la API de respuesta relacionada, son experimentales. Pueden cambiar o eliminarse en el futuro.


## Related topics

- [Sesión](https://kawax.biz/es/session.md)
- [Laravel Agent Detector — Paquete de detección de agentes de IA](https://kawax.biz/es/blog/agent-detector-introduction.md)
- [Eventos del ciclo de vida de sesión](https://kawax.biz/es/packages/laravel-copilot-sdk/session-lifecycle-event.md)
- [Hooks de sesión](https://kawax.biz/es/packages/laravel-copilot-sdk/hooks.md)
- [laravel/agent-skills — Colección oficial de skills para agentes de IA de Laravel](https://kawax.biz/es/blog/agent-skills-introduction.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.