wppaste
WordPress

ModelRequirements

Since
0.1.0
Source
wp-includes/php-ai-client/src/Providers/Models/DTO/ModelRequirements.php:29
Represents requirements that implementing code has for AI model selection.

Description

This class defines the capabilities and options that a model must support in order to be considered suitable for the implementing code's needs.

Compatibility

WordPress
since 0.1.0
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in 2 of the 5 tracked releases, added in 0.1.0.

Properties · 2

$requiredCapabilitiesWordPress\AiClient\Providers\Models\DTO\list<CapabilityEnum>protected
$requiredOptionsWordPress\AiClient\Providers\Models\DTO\list<RequiredOption>protected

Methods · 10

Source code

class ModelRequirements extends AbstractDataTransferObject{    public const KEY_REQUIRED_CAPABILITIES = 'requiredCapabilities';    public const KEY_REQUIRED_OPTIONS = 'requiredOptions';    /**     * @var list<CapabilityEnum> The capabilities that the model must support.     */    protected array $requiredCapabilities;    /**     * @var list<RequiredOption> The options that the model must support with specific values.     */    protected array $requiredOptions;    /**     * Constructor.     *     * @since 0.1.0     *     * @param list<CapabilityEnum> $requiredCapabilities The capabilities that the model must support.     * @param list<RequiredOption> $requiredOptions The options that the model must support with specific values.     *     * @throws InvalidArgumentException If arrays are not lists.     */    public function __construct(array $requiredCapabilities, array $requiredOptions)    {        if (!array_is_list($requiredCapabilities)) {            throw new InvalidArgumentException('Required capabilities must be a list array.');        }        if (!array_is_list($requiredOptions)) {            throw new InvalidArgumentException('Required options must be a list array.');        }        $this->requiredCapabilities = $requiredCapabilities;        $this->requiredOptions = $requiredOptions;    }    /**     * Gets the capabilities that the model must support.     *     * @since 0.1.0     *     * @return list<CapabilityEnum> The required capabilities.     */    public function getRequiredCapabilities(): array    {        return $this->requiredCapabilities;    }    /**     * Gets the options that the model must support with specific values.     *     * @since 0.1.0     *     * @return list<RequiredOption> The required options.     */    public function getRequiredOptions(): array    {        return $this->requiredOptions;    }    /**     * Checks whether the given model metadata meets these requirements.     *     * @since 0.2.0     *     * @param ModelMetadata $metadata The model metadata to check against.     * @return bool True if the model meets all requirements, false otherwise.     */    public function areMetBy(\WordPress\AiClient\Providers\Models\DTO\ModelMetadata $metadata): bool    {        // Create lookup maps for better performance (instead of nested foreach loops)        $capabilitiesMap = [];        foreach ($metadata->getSupportedCapabilities() as $capability) {            $capabilitiesMap[$capability->value] = $capability;        }        $optionsMap = [];        foreach ($metadata->getSupportedOptions() as $option) {            $optionsMap[$option->getName()->value] = $option;        }        // Check if all required capabilities are supported using map lookup        foreach ($this->requiredCapabilities as $requiredCapability) {            if (!isset($capabilitiesMap[$requiredCapability->value])) {                return \false;            }        }

Changelog

Introduced in 0.1.0. Unchanged from 7.0.4 through 7.1.0.

  1. 7.0.4
  2. 7.1.0

Signature, return type and hooks compared across 2 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/php-ai-client/src/Providers/Models/DTO/ModelRequirements.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.