Title: BeforeGenerateResultEvent
Published: May 20, 2026

---

# class BeforeGenerateResultEvent {}

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#description)
 * [Methods](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#methods)
 * [Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#source)
 * [Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#wp--skip-link--target)

Event dispatched before a prompt is sent to the AI model.

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#description)󠁿

This event allows listeners to inspect and modify the messages before they are sent
to the model. The event is not stoppable, meaning the model call will always proceed
regardless of listener actions.

## 󠀁[Methods](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#methods)󠁿

| Name | Description | 
| [BeforeGenerateResultEvent::__clone](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/__clone/) | Performs a deep clone of the event. | 
| [BeforeGenerateResultEvent::__construct](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/__construct/) | Constructor. | 
| [BeforeGenerateResultEvent::getCapability](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/getcapability/) | Gets the capability being used for generation. | 
| [BeforeGenerateResultEvent::getMessages](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/getmessages/) | Gets the messages to be sent to the model. | 
| [BeforeGenerateResultEvent::getModel](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/getmodel/) | Gets the model that will process the prompt. |

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#source)󠁿

    ```php
    class BeforeGenerateResultEvent
    {
        /**
         * @var list<Message> The messages to be sent to the model.
         */
        private array $messages;
        /**
         * @var ModelInterface The model that will process the prompt.
         */
        private ModelInterface $model;
        /**
         * @var CapabilityEnum|null The capability being used for generation.
         */
        private ?CapabilityEnum $capability;
        /**
         * Constructor.
         *
         * @since 0.4.0
         *
         * @param list<Message> $messages The messages to be sent to the model.
         * @param ModelInterface $model The model that will process the prompt.
         * @param CapabilityEnum|null $capability The capability being used for generation.
         */
        public function __construct(array $messages, ModelInterface $model, ?CapabilityEnum $capability)
        {
            $this->messages = $messages;
            $this->model = $model;
            $this->capability = $capability;
        }
        /**
         * Gets the messages to be sent to the model.
         *
         * @since 0.4.0
         *
         * @return list<Message> The messages.
         */
        public function getMessages(): array
        {
            return $this->messages;
        }
        /**
         * Gets the model that will process the prompt.
         *
         * @since 0.4.0
         *
         * @return ModelInterface The model.
         */
        public function getModel(): ModelInterface
        {
            return $this->model;
        }
        /**
         * Gets the capability being used for generation.
         *
         * @since 0.4.0
         *
         * @return CapabilityEnum|null The capability, or null if not specified.
         */
        public function getCapability(): ?CapabilityEnum
        {
            return $this->capability;
        }
        /**
         * Performs a deep clone of the event.
         *
         * This method ensures that message 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;
        }
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/php-ai-client/src/events/beforegenerateresultevent.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/php-ai-client/src/Events/BeforeGenerateResultEvent.php#L18)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/php-ai-client/src/Events/BeforeGenerateResultEvent.php#L18-L97)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-events-beforegenerateresultevent/?output_format=md#changelog)󠁿

| Version | Description | 
| [0.4.0](https://developer.wordpress.org/reference/since/0.4.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwordpress-aiclient-events-beforegenerateresultevent%2F)
before being able to contribute a note or feedback.