Verzoeken om gebruikersinvoer
Als je deonUserInputRequest-handler instelt, kan de agent met de ask_user-tool vragen stellen aan de gebruiker.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Types\UserInputRequest;
use Revolution\Copilot\Types\UserInputResponse;
Copilot::start(function (CopilotSession $session) {
$response = $session->sendAndWait(prompt: 'Vraag de gebruiker welke taal zijn voorkeur heeft');
dump($response->content());
}, config: [
'model' => 'gpt-5',
'onUserInputRequest' => function (UserInputRequest $request): UserInputResponse {
// $request->question - de inhoud van de vraag
// $request->choices - array met keuzemogelijkheden (optioneel)
// $request->allowFreeform - of vrije invoer is toegestaan (standaard: true)
dump("Question from agent: {$request->question}");
if ($request->choices) {
dump('Choices: '.implode(', ', $request->choices));
}
// Het antwoord van de gebruiker teruggeven
return new UserInputResponse(
answer: 'PHP',
wasFreeform: true, // of het vrije invoer was in plaats van een keuze uit de opties
);
},
]);
De UserInputRequest-klasse
Een verzoek om gebruikersinvoer vanuit de agent.| Property | Type | Beschrijving |
|---|---|---|
question | string | De vraag aan de gebruiker |
choices | ?array | De keuzemogelijkheden bij meerkeuze (optioneel) |
allowFreeform | ?bool | Of vrije invoer is toegestaan (standaard: true) |
De UserInputResponse-klasse
Het antwoord op een verzoek om gebruikersinvoer.| Property | Type | Beschrijving |
|---|---|---|
answer | string | Het antwoord van de gebruiker |
wasFreeform | bool | Of het antwoord vrije invoer was (true als het niet uit de keuzemogelijkheden kwam) |
Praktijkvoorbeeld
Gebruik in een interactief command.use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Types\UserInputRequest;
use Revolution\Copilot\Types\UserInputResponse;
// Binnen een Artisan-command
Copilot::start(function (CopilotSession $session) use ($command) {
$response = $session->sendAndWait(prompt: 'Configureer de projectinstellingen');
$command->info($response->content());
}, config: [
'onUserInputRequest' => function (UserInputRequest $request) use ($command): UserInputResponse {
if ($request->choices) {
// Gebruik de choice-method als er keuzemogelijkheden zijn
$answer = $command->choice(
$request->question,
$request->choices,
$request->choices[0] ?? null
);
return new UserInputResponse(answer: $answer, wasFreeform: false);
}
// Vrije invoer
$answer = $command->ask($request->question);
return new UserInputResponse(answer: $answer, wasFreeform: true);
},
]);
Zie de GitHub-repository voor de laatste informatie.