Title: PromptBuilder::executeModelGeneration
Published: May 20, 2026

---

# PromptBuilder::executeModelGeneration( WordPressAiClientProvidersModelsContractsModelInterface $model, WordPressAiClientProvidersModelsEnumsCapabilityEnum $capability, WordPressAiClientBuilderslist $messages ): WordPressAiClientResultsDTOGenerativeAiResult

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#changelog)

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

This function’s access is marked private. This means it is not intended for use 
by plugin or theme developers, only by core. It is listed here for completeness.

Executes the model generation based on capability.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#parameters)󠁿

 `$model`WordPressAiClientProvidersModelsContractsModelInterfacerequired

The model to use for generation.

`$capability`WordPressAiClientProvidersModelsEnumsCapabilityEnumrequired

The capability to use.

`$messages`<span class="WordPressAiClientBuilderslist”>WordPressAiClientBuilderslistrequired

The messages to send.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#return)󠁿

 WordPressAiClientResultsDTOGenerativeAiResult The generated result.

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

    ```php
    private function executeModelGeneration(ModelInterface $model, CapabilityEnum $capability, array $messages): GenerativeAiResult
    {
        if ($capability->isTextGeneration()) {
            if (!$model instanceof TextGenerationModelInterface) {
                throw new RuntimeException(sprintf('Model "%s" does not support text generation.', $model->metadata()->getId()));
            }
            return $model->generateTextResult($messages);
        }
        if ($capability->isImageGeneration()) {
            if (!$model instanceof ImageGenerationModelInterface) {
                throw new RuntimeException(sprintf('Model "%s" does not support image generation.', $model->metadata()->getId()));
            }
            return $model->generateImageResult($messages);
        }
        if ($capability->isTextToSpeechConversion()) {
            if (!$model instanceof TextToSpeechConversionModelInterface) {
                throw new RuntimeException(sprintf('Model "%s" does not support text-to-speech conversion.', $model->metadata()->getId()));
            }
            return $model->convertTextToSpeechResult($messages);
        }
        if ($capability->isSpeechGeneration()) {
            if (!$model instanceof SpeechGenerationModelInterface) {
                throw new RuntimeException(sprintf('Model "%s" does not support speech generation.', $model->metadata()->getId()));
            }
            return $model->generateSpeechResult($messages);
        }
        if ($capability->isVideoGeneration()) {
            if (!$model instanceof VideoGenerationModelInterface) {
                throw new RuntimeException(sprintf('Model "%s" does not support video generation.', $model->metadata()->getId()));
            }
            return $model->generateVideoResult($messages);
        }
        // TODO: Add support for other capabilities when interfaces are available
        throw new RuntimeException(sprintf('Capability "%s" is not yet supported for generation.', $capability->value));
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/php-ai-client/src/builders/promptbuilder.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/php-ai-client/src/Builders/PromptBuilder.php#L849)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/php-ai-client/src/Builders/PromptBuilder.php#L849-L883)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?output_format=md#related)󠁿

| Used by | Description | 
| [PromptBuilder::generateResult()](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/generateresult/)`wp-includes/php-ai-client/src/Builders/PromptBuilder.php` |

Generates a result from the prompt.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wordpress-aiclient-builders-promptbuilder/executemodelgeneration/?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-builders-promptbuilder%2Fexecutemodelgeneration%2F)
before being able to contribute a note or feedback.