WordPress\AiClient\Builders

PromptBuilder::getCandidateModelsMapprivateWP 0.2.0

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

Method of the class: PromptBuilder{}

No Hooks.

Returns

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

Usage

// private - for code of main (parent) class only
$result = $this->getCandidateModelsMap( $requirements ): array;
$requirements(ModelRequirements) (required)
The requirements derived from the prompt.

Changelog

Since 0.2.0 Introduced.

PromptBuilder::getCandidateModelsMap() code WP 7.0

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