WordPress\AiClient\Builders
PromptBuilder::usingModelPreference
Sets preferred models to evaluate in order.
Method of the class: PromptBuilder{}
No Hooks.
Returns
self.
Usage
$PromptBuilder = new PromptBuilder(); $PromptBuilder->usingModelPreference( ...$preferredModels ): self;
- ...$preferredModels(string|ModelInterface|array{0:string,1:string}) (required)
- The preferred models as model IDs, model instances, or [provider ID, model ID] tuples. For broader compatibility, it is recommended you specify only model IDs or model instances, as that will allow for different providers that expose the same model to be considered.
Changelog
| Since 0.2.0 | Introduced. |
PromptBuilder::usingModelPreference() PromptBuilder::usingModelPreference code WP 7.0
public function usingModelPreference(...$preferredModels): self
{
if ($preferredModels === []) {
throw new InvalidArgumentException('At least one model preference must be provided.');
}
$preferenceKeys = [];
foreach ($preferredModels as $preferredModel) {
if (is_array($preferredModel)) {
// [model identifier, provider ID] tuple
if (!array_is_list($preferredModel) || count($preferredModel) !== 2) {
throw new InvalidArgumentException('Model preference tuple must contain model identifier and provider ID.');
}
[$providerId, $modelId] = $preferredModel;
$modelId = $this->normalizePreferenceIdentifier($modelId);
$providerId = $this->normalizePreferenceIdentifier($providerId, 'Model preference provider identifiers cannot be empty.');
$preferenceKey = $this->createProviderModelPreferenceKey($providerId, $modelId);
} elseif ($preferredModel instanceof ModelInterface) {
// Model instance
$modelId = $preferredModel->metadata()->getId();
$providerId = $preferredModel->providerMetadata()->getId();
$preferenceKey = $this->createProviderModelPreferenceKey($providerId, $modelId);
} elseif (is_string($preferredModel)) {
// Model ID
$modelId = $this->normalizePreferenceIdentifier($preferredModel);
$preferenceKey = $this->createModelPreferenceKey($modelId);
} else {
// Invalid type
throw new InvalidArgumentException('Model preferences must be model identifiers, instances of ModelInterface, ' . 'or provider/model tuples.');
}
$preferenceKeys[] = $preferenceKey;
}
$this->modelPreferenceKeys = $preferenceKeys;
return $this;
}