PromptBuilder::getCandidateModelsMap( WordPressAiClientProvidersModelsDTOModelRequirements $requirements ): WordPressAiClientBuildersarray<string,

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.

Builds a map of candidate models that satisfy the requirements for efficient lookup.

Parameters

$requirementsWordPressAiClientProvidersModelsDTOModelRequirementsrequired
The requirements derived from the prompt.

Return

WordPressAiClientBuildersarray<string, array{0:string,1:string}> Map of preference keys to [providerId, modelId] tuples.

Source

private function getCandidateModelsMap(ModelRequirements $requirements): array
{
    if ($this->providerIdOrClassName === null) {
        // No provider locked in, gather all models across providers that meet requirements.
        $providerModelsMetadata = $this->registry->findModelsMetadataForSupport($requirements);
        $candidateMap = [];
        foreach ($providerModelsMetadata as $providerModels) {
            $providerId = $providerModels->getProvider()->getId();
            $providerMap = $this->generateMapFromCandidates($providerId, $providerModels->getModels());
            // Use + operator to merge, preserving keys from $candidateMap (first provider wins for model-only keys)
            $candidateMap = $candidateMap + $providerMap;
        }
        return $candidateMap;
    }
    // Provider set, only consider models from that provider.
    $modelsMetadata = $this->registry->findProviderModelsMetadataForSupport($this->providerIdOrClassName, $requirements);
    // Ensure we pass the provider ID, not the class name
    $providerId = $this->registry->getProviderId($this->providerIdOrClassName);
    return $this->generateMapFromCandidates($providerId, $modelsMetadata);
}

Changelog

VersionDescription
0.2.0Introduced.

User Contributed Notes

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