FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-includes
/
php-ai-client
/
src
/
Providers
/
Models
/
Enums
Edit File: OptionEnum.php
<?php declare (strict_types=1); namespace WordPress\AiClient\Providers\Models\Enums; use ReflectionClass; use WordPress\AiClient\Common\AbstractEnum; use WordPress\AiClient\Providers\Models\DTO\ModelConfig; /** * Enum for model options. * * This enum dynamically includes all options from ModelConfig KEY_* constants * in addition to the explicitly defined constants below. * * Explicitly defined option (not in ModelConfig): * @method static self inputModalities() Creates an instance for INPUT_MODALITIES option. * @method bool isInputModalities() Checks if the option is INPUT_MODALITIES. * * Dynamically loaded from ModelConfig KEY_* constants: * @method static self candidateCount() Creates an instance for CANDIDATE_COUNT option. * @method static self customOptions() Creates an instance for CUSTOM_OPTIONS option. * @method static self frequencyPenalty() Creates an instance for FREQUENCY_PENALTY option. * @method static self functionDeclarations() Creates an instance for FUNCTION_DECLARATIONS option. * @method static self logprobs() Creates an instance for LOGPROBS option. * @method static self maxTokens() Creates an instance for MAX_TOKENS option. * @method static self outputFileType() Creates an instance for OUTPUT_FILE_TYPE option. * @method static self outputMediaAspectRatio() Creates an instance for OUTPUT_MEDIA_ASPECT_RATIO option. * @method static self outputMediaOrientation() Creates an instance for OUTPUT_MEDIA_ORIENTATION option. * @method static self outputMimeType() Creates an instance for OUTPUT_MIME_TYPE option. * @method static self outputModalities() Creates an instance for OUTPUT_MODALITIES option. * @method static self outputSchema() Creates an instance for OUTPUT_SCHEMA option. * @method static self outputSpeechVoice() Creates an instance for OUTPUT_SPEECH_VOICE option. * @method static self presencePenalty() Creates an instance for PRESENCE_PENALTY option. * @method static self stopSequences() Creates an instance for STOP_SEQUENCES option. * @method static self systemInstruction() Creates an instance for SYSTEM_INSTRUCTION option. * @method static self temperature() Creates an instance for TEMPERATURE option. * @method static self topK() Creates an instance for TOP_K option. * @method static self topLogprobs() Creates an instance for TOP_LOGPROBS option. * @method static self topP() Creates an instance for TOP_P option. * @method static self webSearch() Creates an instance for WEB_SEARCH option. * @method bool isCandidateCount() Checks if the option is CANDIDATE_COUNT. * @method bool isCustomOptions() Checks if the option is CUSTOM_OPTIONS. * @method bool isFrequencyPenalty() Checks if the option is FREQUENCY_PENALTY. * @method bool isFunctionDeclarations() Checks if the option is FUNCTION_DECLARATIONS. * @method bool isLogprobs() Checks if the option is LOGPROBS. * @method bool isMaxTokens() Checks if the option is MAX_TOKENS. * @method bool isOutputFileType() Checks if the option is OUTPUT_FILE_TYPE. * @method bool isOutputMediaAspectRatio() Checks if the option is OUTPUT_MEDIA_ASPECT_RATIO. * @method bool isOutputMediaOrientation() Checks if the option is OUTPUT_MEDIA_ORIENTATION. * @method bool isOutputMimeType() Checks if the option is OUTPUT_MIME_TYPE. * @method bool isOutputModalities() Checks if the option is OUTPUT_MODALITIES. * @method bool isOutputSchema() Checks if the option is OUTPUT_SCHEMA. * @method bool isOutputSpeechVoice() Checks if the option is OUTPUT_SPEECH_VOICE. * @method bool isPresencePenalty() Checks if the option is PRESENCE_PENALTY. * @method bool isStopSequences() Checks if the option is STOP_SEQUENCES. * @method bool isSystemInstruction() Checks if the option is SYSTEM_INSTRUCTION. * @method bool isTemperature() Checks if the option is TEMPERATURE. * @method bool isTopK() Checks if the option is TOP_K. * @method bool isTopLogprobs() Checks if the option is TOP_LOGPROBS. * @method bool isTopP() Checks if the option is TOP_P. * @method bool isWebSearch() Checks if the option is WEB_SEARCH. * * @since 0.1.0 */ class OptionEnum extends AbstractEnum { /** * Input modalities option. * * This constant is not in ModelConfig as it's derived from message content, * not configured directly. */ public const INPUT_MODALITIES = 'input_modalities'; /** * Determines the class enumerations by reflecting on class constants. * * Overrides the parent method to dynamically add constants from ModelConfig * that are prefixed with KEY_. These are transformed to remove the KEY_ prefix * and converted to snake_case values. * * @since 0.1.0 * * @param class-string $className The fully qualified class name. * @return array<string, string> The enum constants. */ protected static function determineClassEnumerations(string $className): array { // Start with the constants defined in this class using parent method $constants = parent::determineClassEnumerations($className); // Use reflection to get all constants from ModelConfig $modelConfigReflection = new ReflectionClass(ModelConfig::class); $modelConfigConstants = $modelConfigReflection->getConstants(); // Add ModelConfig constants that start with KEY_ foreach ($modelConfigConstants as $constantName => $constantValue) { if (str_starts_with($constantName, 'KEY_')) { // Remove KEY_ prefix to get the enum constant name $enumConstantName = substr($constantName, 4); // The value is the snake_case version stored in ModelConfig // ModelConfig already stores these as snake_case strings if (is_string($constantValue)) { $constants[$enumConstantName] = $constantValue; } } } return $constants; } }
Save
Back