| Server IP : 149.28.60.191 / Your IP : 216.73.217.128 Web Server : nginx/1.31.1 System : Linux vultr.guest 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : mda ( ) PHP Version : 7.4.33 Disable Function : getmyuid,passthru,leak,listen,diskfreespace,tmpfile,link,shell_exec,dl,exec,system,highlight_file,source,show_source,fpassthru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,proc_open,proc_close,proc_nice,proc_terminate,escapeshellcmd,ini_alter,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,symlink,posix_geteuid,ini_alter,socket_listen,socket_create_listen,socket_read,socket_create_pair,stream_socket_server MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/mda/webapps/mda-restore/wp-includes/php-ai-client/src/Events/ |
Upload File : |
<?php
declare (strict_types=1);
namespace WordPress\AiClient\Events;
use WordPress\AiClient\Messages\DTO\Message;
use WordPress\AiClient\Providers\Models\Contracts\ModelInterface;
use WordPress\AiClient\Providers\Models\Enums\CapabilityEnum;
use WordPress\AiClient\Results\DTO\GenerativeAiResult;
/**
* Event dispatched after a prompt has been sent to the AI model and a response received.
*
* This event allows listeners to inspect the result of the model call for logging,
* analytics, or other post-processing purposes. The result object is immutable.
*
* @since 0.4.0
*/
class AfterGenerateResultEvent
{
/**
* @var list<Message> The messages that were sent to the model.
*/
private array $messages;
/**
* @var ModelInterface The model that processed the prompt.
*/
private ModelInterface $model;
/**
* @var CapabilityEnum|null The capability that was used for generation.
*/
private ?CapabilityEnum $capability;
/**
* @var GenerativeAiResult The result from the model.
*/
private GenerativeAiResult $result;
/**
* Constructor.
*
* @since 0.4.0
*
* @param list<Message> $messages The messages that were sent to the model.
* @param ModelInterface $model The model that processed the prompt.
* @param CapabilityEnum|null $capability The capability that was used for generation.
* @param GenerativeAiResult $result The result from the model.
*/
public function __construct(array $messages, ModelInterface $model, ?CapabilityEnum $capability, GenerativeAiResult $result)
{
$this->messages = $messages;
$this->model = $model;
$this->capability = $capability;
$this->result = $result;
}
/**
* Gets the messages that were sent to the model.
*
* @since 0.4.0
*
* @return list<Message> The messages.
*/
public function getMessages(): array
{
return $this->messages;
}
/**
* Gets the model that processed the prompt.
*
* @since 0.4.0
*
* @return ModelInterface The model.
*/
public function getModel(): ModelInterface
{
return $this->model;
}
/**
* Gets the capability that was used for generation.
*
* @since 0.4.0
*
* @return CapabilityEnum|null The capability, or null if not specified.
*/
public function getCapability(): ?CapabilityEnum
{
return $this->capability;
}
/**
* Gets the result from the model.
*
* @since 0.4.0
*
* @return GenerativeAiResult The result.
*/
public function getResult(): GenerativeAiResult
{
return $this->result;
}
/**
* Performs a deep clone of the event.
*
* This method ensures that message and result objects are cloned to prevent
* modifications to the cloned event from affecting the original.
* The model object is not cloned as it is a service object.
*
* @since 0.4.2
*/
public function __clone()
{
$clonedMessages = [];
foreach ($this->messages as $message) {
$clonedMessages[] = clone $message;
}
$this->messages = $clonedMessages;
$this->result = clone $this->result;
}
}