wppaste
WordPress

ProviderModelsMetadata

Since
0.1.0
Source
wp-includes/php-ai-client/src/Providers/DTO/ProviderModelsMetadata.php:27
Represents metadata about a provider and its available models.

Description

This class combines provider information with the models that the provider offers, facilitating model discovery and selection.

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

$providerWordPress\AiClient\Providers\DTO\ProviderMetadataprotected
$modelsWordPress\AiClient\Providers\DTO\list<ModelMetadata>protected

Methods · 7

Source code

class ProviderModelsMetadata extends AbstractDataTransferObject{    public const KEY_PROVIDER = 'provider';    public const KEY_MODELS = 'models';    /**     * @var ProviderMetadata The provider metadata.     */    protected \WordPress\AiClient\Providers\DTO\ProviderMetadata $provider;    /**     * @var list<ModelMetadata> The available models.     */    protected array $models;    /**     * Constructor.     *     * @since 0.1.0     *     * @param ProviderMetadata $provider The provider metadata.     * @param list<ModelMetadata> $models The available models.     *     * @throws InvalidArgumentException If models is not a list.     */    public function __construct(\WordPress\AiClient\Providers\DTO\ProviderMetadata $provider, array $models)    {        if (!array_is_list($models)) {            throw new InvalidArgumentException('Models must be a list array.');        }        $this->provider = $provider;        $this->models = $models;    }    /**     * Creates a deep clone of this metadata.     *     * Clones the provider metadata and all model metadata objects     * to ensure the cloned instance is independent of the original.     *     * @since 0.4.2     */    public function __clone()    {        // Clone provider metadata        $this->provider = clone $this->provider;        // Deep clone models array (ModelMetadata has __clone)        $clonedModels = [];        foreach ($this->models as $model) {            $clonedModels[] = clone $model;        }        $this->models = $clonedModels;    }    /**     * Gets the provider metadata.     *     * @since 0.1.0     *     * @return ProviderMetadata The provider metadata.     */    public function getProvider(): \WordPress\AiClient\Providers\DTO\ProviderMetadata    {        return $this->provider;    }    /**     * Gets the available models.     *     * @since 0.1.0     *     * @return list<ModelMetadata> The available models.     */    public function getModels(): array    {        return $this->models;    }    /**     * {@inheritDoc}     *     * @since 0.1.0     */    public static function getJsonSchema(): array    {        return ['type' => 'object', 'properties' => [self::KEY_PROVIDER => \WordPress\AiClient\Providers\DTO\ProviderMetadata::getJsonSchema(), self::KEY_MODELS => ['type' => 'array', 'items' => ModelMetadata::getJsonSchema(), 'description' => 'The available models for this provider.']], 'required' => [self::KEY_PROVIDER, self::KEY_MODELS]];    }

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/DTO/ProviderModelsMetadata.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.