[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/php-ai-client/src/Providers/ApiBasedImplementation/ -> AbstractApiBasedModel.php (source)

   1  <?php
   2  
   3  declare (strict_types=1);
   4  namespace WordPress\AiClient\Providers\ApiBasedImplementation;
   5  
   6  use WordPress\AiClient\Providers\ApiBasedImplementation\Contracts\ApiBasedModelInterface;
   7  use WordPress\AiClient\Providers\DTO\ProviderMetadata;
   8  use WordPress\AiClient\Providers\Http\Contracts\WithHttpTransporterInterface;
   9  use WordPress\AiClient\Providers\Http\Contracts\WithRequestAuthenticationInterface;
  10  use WordPress\AiClient\Providers\Http\DTO\RequestOptions;
  11  use WordPress\AiClient\Providers\Http\Traits\WithHttpTransporterTrait;
  12  use WordPress\AiClient\Providers\Http\Traits\WithRequestAuthenticationTrait;
  13  use WordPress\AiClient\Providers\Models\DTO\ModelConfig;
  14  use WordPress\AiClient\Providers\Models\DTO\ModelMetadata;
  15  /**
  16   * Base class for an API-based model for a provider.
  17   *
  18   * While this class contains no abstract methods, it is still abstract to ensure that each model class can actually
  19   * perform generative AI tasks by implementing the corresponding interfaces.
  20   *
  21   * @since 0.1.0
  22   */
  23  abstract class AbstractApiBasedModel implements ApiBasedModelInterface, WithHttpTransporterInterface, WithRequestAuthenticationInterface
  24  {
  25      use WithHttpTransporterTrait;
  26      use WithRequestAuthenticationTrait;
  27      /**
  28       * @var ModelMetadata The metadata for the model.
  29       */
  30      private ModelMetadata $metadata;
  31      /**
  32       * @var ProviderMetadata The metadata for the model's provider.
  33       */
  34      private ProviderMetadata $providerMetadata;
  35      /**
  36       * @var ModelConfig The configuration for the model.
  37       */
  38      private ModelConfig $config;
  39      /**
  40       * @var RequestOptions|null The request options for HTTP transport.
  41       */
  42      private ?RequestOptions $requestOptions = null;
  43      /**
  44       * Constructor.
  45       *
  46       * @since 0.1.0
  47       *
  48       * @param ModelMetadata $metadata The metadata for the model.
  49       * @param ProviderMetadata $providerMetadata The metadata for the model's provider.
  50       */
  51      public function __construct(ModelMetadata $metadata, ProviderMetadata $providerMetadata)
  52      {
  53          $this->metadata = $metadata;
  54          $this->providerMetadata = $providerMetadata;
  55          $this->config = ModelConfig::fromArray([]);
  56      }
  57      /**
  58       * {@inheritDoc}
  59       *
  60       * @since 0.1.0
  61       */
  62      final public function metadata(): ModelMetadata
  63      {
  64          return $this->metadata;
  65      }
  66      /**
  67       * {@inheritDoc}
  68       *
  69       * @since 0.1.0
  70       */
  71      final public function providerMetadata(): ProviderMetadata
  72      {
  73          return $this->providerMetadata;
  74      }
  75      /**
  76       * {@inheritDoc}
  77       *
  78       * @since 0.1.0
  79       */
  80      final public function setConfig(ModelConfig $config): void
  81      {
  82          $this->config = $config;
  83      }
  84      /**
  85       * {@inheritDoc}
  86       *
  87       * @since 0.1.0
  88       */
  89      final public function getConfig(): ModelConfig
  90      {
  91          return $this->config;
  92      }
  93      /**
  94       * {@inheritDoc}
  95       *
  96       * @since 0.3.0
  97       */
  98      final public function setRequestOptions(RequestOptions $requestOptions): void
  99      {
 100          $this->requestOptions = $requestOptions;
 101      }
 102      /**
 103       * {@inheritDoc}
 104       *
 105       * @since 0.3.0
 106       */
 107      final public function getRequestOptions(): ?RequestOptions
 108      {
 109          return $this->requestOptions;
 110      }
 111  }


Generated : Sat Jun 13 09:38:55 2026 Cross-referenced by PHPXref