ModelRequirements::toRequiredOptions( WordPressAiClientProvidersModelsDTOModelConfig $modelConfig ): WordPressAiClientProvidersModelsDTOlist<RequiredOption>

In this article

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.

Converts ModelConfig to an array of RequiredOptions.

Parameters

$modelConfigWordPressAiClientProvidersModelsDTOModelConfigrequired
The model configuration.

Return

WordPressAiClientProvidersModelsDTOlist<RequiredOption> The required options.

Source

private static function toRequiredOptions(\WordPress\AiClient\Providers\Models\DTO\ModelConfig $modelConfig): array
{
    $requiredOptions = [];
    // Map properties that have corresponding OptionEnum values
    if ($modelConfig->getOutputModalities() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::outputModalities(), $modelConfig->getOutputModalities());
    }
    if ($modelConfig->getSystemInstruction() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::systemInstruction(), $modelConfig->getSystemInstruction());
    }
    if ($modelConfig->getCandidateCount() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::candidateCount(), $modelConfig->getCandidateCount());
    }
    if ($modelConfig->getMaxTokens() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::maxTokens(), $modelConfig->getMaxTokens());
    }
    if ($modelConfig->getTemperature() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::temperature(), $modelConfig->getTemperature());
    }
    if ($modelConfig->getTopP() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::topP(), $modelConfig->getTopP());
    }
    if ($modelConfig->getTopK() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::topK(), $modelConfig->getTopK());
    }
    if ($modelConfig->getOutputMimeType() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::outputMimeType(), $modelConfig->getOutputMimeType());
    }
    if ($modelConfig->getOutputSchema() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::outputSchema(), $modelConfig->getOutputSchema());
    }
    // Handle properties without OptionEnum values as custom options
    if ($modelConfig->getStopSequences() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::stopSequences(), $modelConfig->getStopSequences());
    }
    if ($modelConfig->getPresencePenalty() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::presencePenalty(), $modelConfig->getPresencePenalty());
    }
    if ($modelConfig->getFrequencyPenalty() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::frequencyPenalty(), $modelConfig->getFrequencyPenalty());
    }
    if ($modelConfig->getLogprobs() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::logprobs(), $modelConfig->getLogprobs());
    }
    if ($modelConfig->getTopLogprobs() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::topLogprobs(), $modelConfig->getTopLogprobs());
    }
    if ($modelConfig->getFunctionDeclarations() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::functionDeclarations(), \true);
    }
    if ($modelConfig->getWebSearch() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::webSearch(), \true);
    }
    if ($modelConfig->getOutputFileType() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::outputFileType(), $modelConfig->getOutputFileType());
    }
    if ($modelConfig->getOutputMediaOrientation() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::outputMediaOrientation(), $modelConfig->getOutputMediaOrientation());
    }
    if ($modelConfig->getOutputMediaAspectRatio() !== null) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::outputMediaAspectRatio(), $modelConfig->getOutputMediaAspectRatio());
    }
    // Add custom options as individual RequiredOptions
    foreach ($modelConfig->getCustomOptions() as $key => $value) {
        $requiredOptions[] = new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::customOptions(), [$key => $value]);
    }
    return $requiredOptions;
}

Changelog

VersionDescription
0.2.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.