# Sitzungsgrenzwerte

Sitzungslimits ermöglichen es einer Anwendung, ein KI-Guthabenbudget für eine Copilot Sitzung festzulegen. Verwenden Sie sessionLimits beim Erstellen oder Fortsetzen einer Sitzung, um eine weiche Obergrenze für den aktuellen Abrechnungszeitraum festzulegen.

<!-- markdownlint-disable GHD046 GHD005 -->
<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->

## Konfigurieren eines Sitzungslimits

Setzt `maxAiCredits` auf den Softcap für AI Credits für den aktuellen Abrechnungszeitraum der Sitzung. Die Verwendung wird nach der Rückgabe von Modellaufrufen überprüft, sodass eine Antwort den konfigurierten Wert überschreiten kann, bevor die Laufzeit den nächsten Modellaufruf blockiert. Das SDK leitet diesen Wert beim Erstellen oder Fortsetzen der Sitzung an die Copilot CLI weiter.

<div class="ghd-codetabs">
<div class="ghd-codetab" data-lang="typescript" data-label="TypeScript"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">TypeScript</div>

<!-- docs-validate: skip -->

```typescript
const session = await client.createSession({
    onPermissionRequest: approveAll,
    sessionLimits: {
        maxAiCredits: 30,
    },
});

const resumed = await client.resumeSession(session.sessionId, {
    onPermissionRequest: approveAll,
    sessionLimits: {
        maxAiCredits: 30,
    },
});
```

</div>

<div class="ghd-codetab" data-lang="python" data-label="Python"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Python</div>

<!-- docs-validate: skip -->

```python
session = await client.create_session(
    on_permission_request=PermissionHandler.approve_all,
    session_limits={
        "max_ai_credits": 30,
    },
)

resumed = await client.resume_session(
    session.session_id,
    on_permission_request=PermissionHandler.approve_all,
    session_limits={
        "max_ai_credits": 30,
    },
)
```

</div>

<div class="ghd-codetab" data-lang="go" data-label="Go"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Go</div>

<!-- docs-validate: skip -->

```golang
session, err := client.CreateSession(ctx, &copilot.SessionConfig{
    OnPermissionRequest: copilot.PermissionHandler.ApproveAll,
    SessionLimits: &rpc.SessionLimitsConfig{
        MaxAiCredits: copilot.Float64(30),
    },
})

resumed, err := client.ResumeSession(ctx, session.SessionID, &copilot.ResumeSessionConfig{
    OnPermissionRequest: copilot.PermissionHandler.ApproveAll,
    SessionLimits: &rpc.SessionLimitsConfig{
        MaxAiCredits: copilot.Float64(30),
    },
})
```

</div>

<div class="ghd-codetab" data-lang="dotnet" data-label=".NET"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">.NET</div>

<!-- docs-validate: skip -->

```csharp
var session = await client.CreateSessionAsync(new SessionConfig
{
    OnPermissionRequest = PermissionHandler.ApproveAll,
    SessionLimits = new SessionLimitsConfig
    {
        MaxAiCredits = 30,
    },
});

var resumed = await client.ResumeSessionAsync(session.SessionId, new ResumeSessionConfig
{
    OnPermissionRequest = PermissionHandler.ApproveAll,
    SessionLimits = new SessionLimitsConfig
    {
        MaxAiCredits = 30,
    },
});
```

</div>

<div class="ghd-codetab" data-lang="java" data-label="Java"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Java</div>

<!-- docs-validate: skip -->

```java
CopilotSession session = client
        .createSession(new SessionConfig()
                .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
                .setSessionLimits(new SessionLimitsConfig(30.0)))
        .get();

CopilotSession resumed = client
        .resumeSession(session.getSessionId(), new ResumeSessionConfig()
                .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)
                .setSessionLimits(new SessionLimitsConfig(30.0)))
        .get();
```

</div>

<div class="ghd-codetab" data-lang="rust" data-label="Rust"><div class="ghd-codetab-fallback-label" role="heading" aria-level="3">Rust</div>

<!-- docs-validate: skip -->

```rust
let limits = SessionLimitsConfig {
    max_ai_credits: Some(30.0),
};

let session = client
    .create_session(
        SessionConfig::default()
            .approve_all_permissions()
            .with_session_limits(limits.clone()),
    )
    .await?;

let resumed = client
    .resume_session(
        ResumeSessionConfig::new(session.id().clone())
            .approve_all_permissions()
            .with_session_limits(limits),
    )
    .await?;
```

</div>

</div>

## Budgetereignisse überwachen

Anwendungen können Session-Ereignisse abonnieren, um die UI zu aktualisieren, wenn sich die Softcap ändert oder die Session in den Ablauf für ausgeschöpftes Budget eintritt.

| Ereignistyp | Wenn sie ausgegeben wird | Wichtige Felder |
|---|---|---|
| `session.session_limits_changed` | Die Grenzwerte für aktive Sitzungen wurden geändert. Ein `null``sessionLimits` Wert bedeutet, dass keine Grenzwerte aktiv sind. | `sessionLimits.maxAiCredits?` |
| `session.usage_checkpoint` | Die Laufzeit zeichnet aggregierte Nutzungsdaten zur Wiederaufnahme und Abrechnung dauerhaft auf. | 
`totalNanoAiu`, `totalPremiumRequests?` |
| `session_limits_exhausted.requested` | Die Sitzung hat den Ablauf bei ausgeschöpftem Budget erreicht und erfordert eine Entscheidung des Benutzers, bevor sie fortgesetzt werden kann. | 
`requestId`, `maxAiCredits``usedAiCredits` |
| `session_limits_exhausted.completed` | Die Meldung zum erreichten Limit wurde behoben. | 
`requestId`, , `response.action``response.additionalAiCredits?``response.maxAiCredits?` |

Verwenden Sie die generierten Ereignistypen für die verwendete SDK-Sprache. Beispielsweise grenzt TypeScript mithilfe von `event.type` ein:

```typescript
session.on((event) => {
    if (event.type === "session_limits_exhausted.requested") {
        showBudgetDialog({
            requestId: event.data.requestId,
            maxAiCredits: event.data.maxAiCredits,
            usedAiCredits: event.data.usedAiCredits,
        });
    }
});
```