Current Path : /storage/v11800/affypharma/public_html/wp-content/plugins/ai-engine/classes/engines/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/affypharma/public_html/wp-content/plugins/ai-engine/classes/engines/factory.php |
<?php
class Meow_MWAI_Engines_Factory {
private static function get_default_env_id( $core ) : ?string {
return $core->get_option( 'ai_default_env' );
}
private static function get_default_model( $core ) : ?string {
return $core->get_option( 'ai_default_model' );
}
private static function get_env_from_id( $core, $envId ) : ?array {
$envs = $core->get_option( 'ai_envs' );
foreach ( $envs as $env ) {
if ( $env['id'] === $envId ) {
return $env;
}
}
throw new Exception( "AI Engine: No environment found for ID ($envId)." );
}
private static function get_env_from_type( $core, $type, $envId ) : ?array {
$type = is_array( $type ) ? $type : [ $type ];
// Try first to find the env with the ID provided.
if ( !empty( $envId ) ) {
$env = self::get_env_from_id( $core, $envId );
if ( in_array( $env['type'], $type ) ) {
return $env;
}
else {
throw new Exception( "AI Engine: Environment ID ($envId) is not of type ($type)." );
}
}
// If not, we will try to find the default one.
$envId = self::get_default_env_id( $core );
$env = self::get_env_from_id( $core, $envId );
if ( in_array( $env['type'], $type ) ) {
return $env;
}
// If not, we will try to find the first one.
$envs = $core->get_option( 'ai_envs' );
foreach ( $envs as $env ) {
if ( in_array( $env['type'], $type ) ) {
return $env;
}
}
throw new Exception( "AI Engine: No environment found for type ($type)." );
}
public static function get( $core, $envId = null ) : ?Meow_MWAI_Engines_Core {
// If no envId is provided, we will use the default one as well as the default model.
$model = null;
if ( empty( $envId ) ) {
$envId = self::get_default_env_id( $core );
//$model = self::get_default_model( $core );
}
$env = self::get_env_from_id( $core, $envId );
if ( $env['type'] === 'openai' || $env['type'] === 'azure' ) {
$engine = Meow_MWAI_Engines_OpenAI::create( $core, $env );
return $engine;
}
else if ( $env['type'] === 'google' ) {
$engine = new Meow_MWAI_Engines_Google( $core, $env );
return $engine;
}
else if ( $env['type'] === 'anthropic' ) {
$engine = new Meow_MWAI_Engines_Anthropic( $core, $env );
return $engine;
}
else if ( $env['type'] === 'openrouter' ) {
$engine = new Meow_MWAI_Engines_OpenRouter( $core, $env );
return $engine;
}
else if ( $env['type'] === 'huggingface' ) {
$engine = new Meow_MWAI_Engines_HuggingFace( $core, $env );
return $engine;
}
// Last chance via a filter.
$engine = apply_filters( 'mwai_init_engine', null, $core, $env );
if ( !is_null( $engine ) ) {
return $engine;
}
throw new Exception( "AI Engine: Unknown engine type ({$env['type']})." );
}
public static function get_openai( $core, $envId = null ) : Meow_MWAI_Engines_OpenAI {
$env = self::get_env_from_type( $core, [ 'openai', 'azure '], $envId );
$engine = Meow_MWAI_Engines_OpenAI::create( $core, $env );
return $engine;
}
}