Zum Hauptinhalt springen

Session fortsetzen

Methoden, um eine frühere Session fortzusetzen.

Bei Verwendung in einem interaktiven Chat als Artisan-Command

// Über listSessions die Liste der bisherigen Sessions abrufen
$sessions = Copilot::client()->listSessions();

// Fortzusetzende Session-ID z. B. per Laravel\Prompts\select auswählen
$sessions = collect(Copilot::client()->listSessions())
    ->mapWithKeys(function (SessionMetadata $session) {
        return [$session->sessionId => $session->summary ?? ''];
    })
    ->toArray();

$session_id = select(
    label: 'What session do you want to resume?',
    options: $sessions,
);

// Session mit der ausgewählten ID fortsetzen
$session = Copilot::client()->resumeSession($session_id);

// Bisherige Nachrichten abrufen
$messages = $session->getMessages();

Bei Verwendung einer festen Session-ID

Ist keine interaktive Auswahl möglich, geben Sie von Anfang an eine feste ID an. Bereiten Sie eine ID vor, die z. B. auf einer Nutzer-ID oder einem Kontext basiert. Bei einem Multi-User-Webdienst nutzen Sie diese Variante mit vorab bereitgestellter ID.
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

$config = new SessionConfig(
    sessionId: 'user-123-conversation',
);

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: $config);
Beim Fortsetzen können Sie in Copilot::start auch das Argument resume verwenden.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ResumeSessionConfig;

// In ResumeSessionConfig kann sessionId nicht angegeben werden
$config = new ResumeSessionConfig();

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: $config, resume: 'user-123-conversation');
Es ist auch möglich, in der Closure von Copilot::start die aktuelle Session zu verwerfen und neu fortzusetzen.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $session->disconnect();

    $session = Copilot::client()->resumeSession(sessionId: 'user-123-conversation');

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
});

Die zuletzt genutzte Session fortsetzen

Wenn keine Session existiert, gibt getLastSessionId() null zurück, sodass automatisch eine neue Session gestartet wird. Auch das Umschalten der SessionConfig ist möglich.
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Types\ResumeSessionConfig;
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

$session_id = Copilot::client()->getLastSessionId();

if (empty($session_id)) {
    $config = new SessionConfig();
} else {
    $config = new ResumeSessionConfig();
}

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: $config, resume: $session_id);

SessionMetadata verwenden

Auch getSessionMetadata() gibt bei nicht existierender Session null zurück und startet in diesem Fall entsprechend eine neue Session. Zudem lassen sich Erstellungs- und Änderungszeit der Session abrufen.
use Revolution\Copilot\Types\SessionMetadata;
use Revolution\Copilot\Facades\Copilot;

$meta = Copilot::client()->getSessionMetadata('user-123-conversation');
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026