WordPress\AiClient\Builders

PromptBuilder::executeModelGenerationprivateWP 0.4.0

Executes the model generation based on capability.

Method of the class: PromptBuilder{}

No Hooks.

Returns

GenerativeAiResult. The generated result.

Usage

// private - for code of main (parent) class only
$result = $this->executeModelGeneration( $model, $capability, $messages ): GenerativeAiResult;
$model(ModelInterface) (required)
The model to use for generation.
$capability(CapabilityEnum) (required)
The capability to use.
$messages(list) (required)
The messages to send.

Changelog

Since 0.4.0 Introduced.

PromptBuilder::executeModelGeneration() code WP 7.0

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));
}