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

# AI-creditlimieten voor sessions

> Stel met sessionLimits een AI-creditlimiet in voor Copilot-sessions en verwerk limietgerelateerde events en prompts bij een bereikte limiet.

Met `sessionLimits` stel je een zachte AI-creditlimiet in voor de huidige afrekenperiode van een Copilot-session. Je kunt deze instellen bij zowel het aanmaken als het hervatten van een session.

## Een limiet instellen

Geef de limiet op via `maxAiCredits` in `SessionLimitsConfig`. Het verbruik wordt gecontroleerd nadat elke model-call is afgerond, dus één antwoord kan de ingestelde waarde overschrijden. Zodra de limiet is overschreden, blokkeert de runtime de volgende model-call.

```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),
    ),
);
```

Zowel `SessionConfig` als `ResumeSessionConfig` accepteert `sessionLimits` als een `SessionLimitsConfig`-instantie of als een array.

## Limiet-events

Luister naar session-events om te reageren op wijzigingen in de limiet en om de gebruiker een prompt te tonen wanneer de limiet is bereikt.

| Event | Wanneer het wordt getriggerd | Belangrijkste data |
| - | - | - |
| `session.session_limits_changed` (`SessionEventType::SESSION_SESSION_LIMITS_CHANGED`) | De effectieve session-limieten veranderen. Als `sessionLimits` `null` is, geldt er geen limiet. | `sessionLimits.maxAiCredits` (optioneel) |
| `session.usage_checkpoint` (`SessionEventType::SESSION_USAGE_CHECKPOINT`) | De runtime legt het totale verbruik vast voor hervatten of afrekening. | `totalNanoAiu`, `totalPremiumRequests` (optioneel) |
| `session_limits_exhausted.requested` (`SessionEventType::SESSION_LIMITS_EXHAUSTED_REQUESTED`) | De limiet is bereikt en de gebruiker moet een keuze maken voordat de session verdergaat. | `requestId`, `maxAiCredits`, `usedAiCredits` |
| `session_limits_exhausted.completed` (`SessionEventType::SESSION_LIMITS_EXHAUSTED_COMPLETED`) | De prompt voor de bereikte limiet is afgehandeld. | `requestId`, `response.action`, `response.additionalAiCredits` (optioneel), `response.maxAiCredits` (optioneel) |

Ontvang je bijvoorbeeld `SESSION_LIMITS_EXHAUSTED_REQUESTED`, gebruik dan de event-data om een bevestigings-UI te tonen.

```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'];

        // Toon een bevestigings-UI met $requestId
    }
});
```

## Reageren op een bereikte limiet

Stuur de keuze van de gebruiker terug naar de runtime met `handlePendingSessionLimitsExhausted()`. Stel `action` in op een case van `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,
        ),
    ),
);
```

De beschikbare actions zijn:

* `Add`: Voegt de opgegeven AI-credits toe aan de huidige limiet. Stel `additionalAiCredits` in.
* `Set`: Wijzigt de limiet naar een nieuwe absolute waarde. Stel `maxAiCredits` in.
* `Unset`: Verwijdert de session-limiet.
* `Cancel`: Annuleert het geblokkeerde model-request zonder de limiet te wijzigen.

> [!WARNING]
>
> De promptflow voor een bereikte limiet met `session_limits_exhausted.requested` en `session_limits_exhausted.completed`, en de bijbehorende response-API, zijn experimenteel. Ze kunnen in de toekomst worden gewijzigd of verwijderd.


## Related topics

- [Amazon Bedrock-driver voor de Laravel AI SDK](https://kawax.biz/nl/packages/laravel-amazon-bedrock.md)
- [Aan de slag - GitHub Copilot SDK voor Laravel](https://kawax.biz/nl/packages/laravel-copilot-sdk/getting-started.md)
- [Remote sessions](https://kawax.biz/nl/packages/laravel-copilot-sdk/remote-sessions.md)
- [Session hooks](https://kawax.biz/nl/packages/laravel-copilot-sdk/hooks.md)
- [SessionConfig](https://kawax.biz/nl/packages/laravel-copilot-sdk/session-config.md)


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