> ## 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-Credit-Limits für Sessions

> Legen Sie mit sessionLimits ein AI-Credit-Limit für Copilot-Sessions fest und verarbeiten Sie limitbezogene Events sowie Abfragen bei erschöpftem Limit.

Mit `sessionLimits` legen Sie ein weiches AI-Credit-Limit für das aktuelle Abrechnungsfenster einer Copilot-Session fest. Sie können es sowohl beim Erstellen als auch beim Fortsetzen einer Session angeben.

## Limit festlegen

Übergeben Sie das Limit an `maxAiCredits` von `SessionLimitsConfig`. Die Nutzung wird nach Abschluss jedes Modellaufrufs geprüft, daher kann eine einzelne Antwort den konfigurierten Wert überschreiten. Sobald das Limit überschritten ist, blockiert die Runtime den nächsten Modellaufruf.

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

Sowohl `SessionConfig` als auch `ResumeSessionConfig` akzeptieren `sessionLimits` entweder als `SessionLimitsConfig`-Instanz oder als Array.

## Limit-Events

Hören Sie auf Session-Events, um auf Änderungen des Limits zu reagieren und den Benutzer zu fragen, wenn das Limit erreicht ist.

| Event | Wann es ausgelöst wird | Wichtigste Daten |
| - | - | - |
| `session.session_limits_changed` (`SessionEventType::SESSION_SESSION_LIMITS_CHANGED`) | Die effektiven Session-Limits ändern sich. Ist `sessionLimits` `null`, gilt kein Limit. | `sessionLimits.maxAiCredits` (optional) |
| `session.usage_checkpoint` (`SessionEventType::SESSION_USAGE_CHECKPOINT`) | Die Runtime erfasst die aggregierte Nutzung für das Fortsetzen oder die Abrechnung. | `totalNanoAiu`, `totalPremiumRequests` (optional) |
| `session_limits_exhausted.requested` (`SessionEventType::SESSION_LIMITS_EXHAUSTED_REQUESTED`) | Das Limit ist erreicht und der Benutzer muss entscheiden, bevor die Session fortgesetzt wird. | `requestId`, `maxAiCredits`, `usedAiCredits` |
| `session_limits_exhausted.completed` (`SessionEventType::SESSION_LIMITS_EXHAUSTED_COMPLETED`) | Die Abfrage bei erschöpftem Limit ist abgeschlossen. | `requestId`, `response.action`, `response.additionalAiCredits` (optional), `response.maxAiCredits` (optional) |

Wenn Sie beispielsweise `SESSION_LIMITS_EXHAUSTED_REQUESTED` erhalten, verwenden Sie die Event-Daten, um eine Bestätigungs-UI anzuzeigen.

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

        // Bestätigungs-UI mit $requestId anzeigen
    }
});
```

## Auf ein erschöpftes Limit antworten

Senden Sie die Auswahl des Benutzers mit `handlePendingSessionLimitsExhausted()` an die Runtime zurück. Setzen Sie `action` auf einen Case von `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,
        ),
    ),
);
```

Die verfügbaren Aktionen sind:

* `Add`: Fügt die angegebenen AI-Credits zum aktuellen Limit hinzu. Geben Sie `additionalAiCredits` an.
* `Set`: Ändert das Limit auf einen neuen absoluten Wert. Geben Sie `maxAiCredits` an.
* `Unset`: Entfernt das Session-Limit.
* `Cancel`: Bricht die blockierte Modellanfrage ab, ohne das Limit zu ändern.

> [!WARNING]
>
> Der Ablauf für Abfragen bei erschöpftem Limit mit `session_limits_exhausted.requested` und `session_limits_exhausted.completed` sowie die zugehörige Antwort-API sind experimentell. Sie können sich in Zukunft ändern oder entfernt werden.


## Related topics

- [Amazon-Bedrock-Treiber für das Laravel AI SDK](https://kawax.biz/de/packages/laravel-amazon-bedrock.md)
- [Laravel AI SDK](https://kawax.biz/de/ai-sdk.md)
- [Session](https://kawax.biz/de/session.md)
- [SessionEvent](https://kawax.biz/de/packages/laravel-copilot-sdk/session-event.md)
- [Erste Schritte - GitHub Copilot SDK für Laravel](https://kawax.biz/de/packages/laravel-copilot-sdk/getting-started.md)


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