WordPress\AiClient\Providers\Models\DTO

ModelRequirements::fromPromptDatapublic staticWP 0.2.0

Creates ModelRequirements from prompt data and model configuration.

Метод класса: ModelRequirements{}

Хуков нет.

Возвращает

self. The created requirements.

Использование

$result = ModelRequirements::fromPromptData( $capability, $messages, $modelConfig ): self;
$capability(CapabilityEnum) (обязательный)
The capability the model must support.
$messages(list) (обязательный)
The messages in the conversation.
$modelConfig(ModelConfig) (обязательный)
The model configuration.

Список изменений

С версии 0.2.0 Введена.

Код ModelRequirements::fromPromptData() WP 7.0

public static function fromPromptData(CapabilityEnum $capability, array $messages, \WordPress\AiClient\Providers\Models\DTO\ModelConfig $modelConfig): self
{
    // Start with base capability
    $capabilities = [$capability];
    $inputModalities = [];
    // Check if we have chat history (multiple messages)
    if (count($messages) > 1) {
        $capabilities[] = CapabilityEnum::chatHistory();
    }
    // Analyze all messages to determine required input modalities
    $hasFunctionMessageParts = \false;
    foreach ($messages as $message) {
        foreach ($message->getParts() as $part) {
            // Check for text input
            if ($part->getType()->isText()) {
                $inputModalities[] = ModalityEnum::text();
            }
            // Check for file inputs
            if ($part->getType()->isFile()) {
                $file = $part->getFile();
                if ($file !== null) {
                    if ($file->isImage()) {
                        $inputModalities[] = ModalityEnum::image();
                    } elseif ($file->isAudio()) {
                        $inputModalities[] = ModalityEnum::audio();
                    } elseif ($file->isVideo()) {
                        $inputModalities[] = ModalityEnum::video();
                    } elseif ($file->isDocument() || $file->isText()) {
                        $inputModalities[] = ModalityEnum::document();
                    }
                }
            }
            // Check for function calls/responses (these might require special capabilities)
            if ($part->getType()->isFunctionCall() || $part->getType()->isFunctionResponse()) {
                $hasFunctionMessageParts = \true;
            }
        }
    }
    // Convert ModelConfig to RequiredOptions
    $requiredOptions = self::toRequiredOptions($modelConfig);
    // Add additional options based on message analysis
    if ($hasFunctionMessageParts) {
        $requiredOptions = self::includeInRequiredOptions($requiredOptions, new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::functionDeclarations(), \true));
    }
    // Add input modalities if we have any inputs
    if (!empty($inputModalities)) {
        // Remove duplicates
        $inputModalities = array_unique($inputModalities, \SORT_REGULAR);
        $requiredOptions = self::includeInRequiredOptions($requiredOptions, new \WordPress\AiClient\Providers\Models\DTO\RequiredOption(OptionEnum::inputModalities(), array_values($inputModalities)));
    }
    // Step 6: Return new ModelRequirements
    return new self($capabilities, $requiredOptions);
}