set_service_metadata( $metadata ); } /** * Lists the available generative model slugs and their metadata. * * @since 0.7.0 * * @param array $request_options Optional. The request options. Default empty array. * @return array Metadata for each model, mapped by model slug. * * @throws Generative_AI_Exception Thrown if the request fails or the response is invalid. */ public function list_models( array $request_options = array() ): array { $model_capability_groups = array( array( 'model_prefix' => 'text-gen-', 'num_models' => 5, 'capabilities' => array( AI_Capability::CHAT_HISTORY, AI_Capability::MULTIMODAL_INPUT, AI_Capability::TEXT_GENERATION, ), ), array( 'model_prefix' => 'image-gen-', 'num_models' => 2, 'capabilities' => array( AI_Capability::IMAGE_GENERATION, ), ), array( 'model_prefix' => 'other-', 'num_models' => 3, 'capabilities' => array(), ), ); $models_data = array(); foreach ( $model_capability_groups as $group ) { for ( $i = 1; $i <= $group['num_models']; $i++ ) { $model_slug = $group['model_prefix'] . $i; $model_caps = $group['capabilities']; $models_data[ $model_slug ] = Model_Metadata::from_array( array( 'slug' => $model_slug, 'capabilities' => $model_caps, ) ); } } return $models_data; } /** * Creates a new model instance for the provided model metadata and parameters. * * @since 0.7.0 * * @param Model_Metadata $model_metadata The model metadata. * @param array $model_params Model parameters. See {@see Generative_AI_Service::get_model()} for * a list of available parameters. * @param array $request_options The request options. * @return Generative_AI_Model The new model instance. */ protected function create_model_instance( Model_Metadata $model_metadata, array $model_params, array $request_options ): Generative_AI_Model { $model_class = AI_Capabilities::get_model_class_for_capabilities( array( Mock_AI_Text_Generation_Model::class, Mock_AI_Image_Generation_Model::class, ), $model_metadata->get_capabilities() ); return new $model_class( $model_metadata, $model_params, $request_options ); } }