메인 콘텐츠로 건너뛰기

세션 재개

이전 세션을 재개하는 방법입니다.

Artisan 명령어로 대화형 채팅에서 사용하는 경우

// listSessions로 지금까지의 세션 목록 가져오기
$sessions = Copilot::client()->listSessions();

// Laravel\Prompts\select 등으로 재개할 세션 ID를 선택
$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,
);

// 선택된 ID로 세션 재개
$session = Copilot::client()->resumeSession($session_id);

// 지금까지의 메시지 가져오기
$messages = $session->getMessages();

고정 세션 ID를 사용하는 경우

대화형이 아닌 경우 선택할 수 없으므로 처음부터 고정 ID를 지정합니다. 사용자 ID나 어떤 컨텍스트에 따른 ID를 준비합니다. 예를 들어 웹 서비스에서 멀티유저로 사용한다면 사전에 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);
재개 시 방법은 Copilot::start라면 resume 인자로 지정할 수도 있습니다.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ResumeSessionConfig;

// ResumeSessionConfig에서는 sessionId를 지정할 수 없음
$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');
Copilot::start의 클로저 내에서 현재 세션을 파기하고 새로 재개하는 방법도 있습니다.
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.');
});

마지막 세션 재개

세션이 존재하지 않는 경우 getLastSessionId()null을 반환하므로 자동으로 새 세션으로 시작됩니다. SessionConfig의 전환도 가능합니다.
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 사용하기

getSessionMetadata()도 세션이 존재하지 않으면 null을 반환하므로 마찬가지로 새 세션으로 시작됩니다. 세션의 생성 일시나 갱신 일시 등도 가져올 수 있습니다.
use Revolution\Copilot\Types\SessionMetadata;
use Revolution\Copilot\Facades\Copilot;

$meta = Copilot::client()->getSessionMetadata('user-123-conversation');
최신 정보는 GitHub 저장소를 참고하세요.
마지막 수정일 2026년 7월 13일