PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / trunk
AI Engine – The Chatbot, AI Framework & MCP for WordPress vtrunk
3.5.8 3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / classes / engines / factory.php
ai-engine / classes / engines Last commit date
anthropic.php 8 hours ago chatml.php 1 week ago core.php 2 days ago custom.php 1 month ago factory.php 1 week ago google-interactions.php 2 days ago google.php 1 week ago mistral.php 1 week ago open-router.php 3 weeks ago openai.php 3 weeks ago ovh.php 1 week ago perplexity.php 6 months ago replicate.php 5 months ago xai.php 1 month ago
factory.php
123 lines
1 <?php
2
3 class Meow_MWAI_Engines_Factory {
4 private static function get_default_env_id( $core ): ?string {
5 return $core->get_option( 'ai_default_env' );
6 }
7
8 private static function get_default_model( $core ): ?string {
9 return $core->get_option( 'ai_default_model' );
10 }
11
12 private static function get_env_from_id( $core, $envId ): ?array {
13 $envs = $core->get_option( 'ai_envs' );
14 foreach ( $envs as $env ) {
15 if ( $env['id'] === $envId ) {
16 return $env;
17 }
18 }
19 throw new Exception( "AI Engine: No environment found for ID ($envId)." );
20 }
21
22 private static function get_env_from_type( $core, $type, $envId ): ?array {
23 $types = is_array( $type ) ? $type : [ $type ];
24
25 // Try first to find the env with the ID provided.
26 if ( !empty( $envId ) ) {
27 $env = self::get_env_from_id( $core, $envId );
28 if ( in_array( $env['type'], $types ) ) {
29 return $env;
30 }
31 else {
32 $toTypes = implode( ', ', $types );
33 $toTypes = trim( $toTypes );
34 throw new Exception( "AI Engine: Environment ID ($envId) is not of type $toTypes." );
35 }
36 }
37 // If not, we will try to find the default one.
38 $envId = self::get_default_env_id( $core );
39 $env = self::get_env_from_id( $core, $envId );
40 if ( in_array( $env['type'], $type ) ) {
41 return $env;
42 }
43 // If not, we will try to find the first one.
44 $envs = $core->get_option( 'ai_envs' );
45 foreach ( $envs as $env ) {
46 if ( in_array( $env['type'], $type ) ) {
47 return $env;
48 }
49 }
50 throw new Exception( "AI Engine: No environment found for type ($type)." );
51 }
52
53 public static function get( $core, $envId = null ): ?Meow_MWAI_Engines_Core {
54 // If no envId is provided, we will use the default one as well as the default model.
55 $model = null;
56 if ( empty( $envId ) ) {
57 $envId = self::get_default_env_id( $core );
58 //$model = self::get_default_model( $core );
59 }
60 $env = self::get_env_from_id( $core, $envId );
61 if ( $env['type'] === 'openai' || $env['type'] === 'azure' ) {
62 $engine = Meow_MWAI_Engines_OpenAI::create( $core, $env );
63 return $engine;
64 }
65 else if ( $env['type'] === 'google' ) {
66 // The Interactions API is the default for Gemini. The classic
67 // generateContent engine stays as the fallback, selected when the
68 // "Use Standard API" option is enabled (Settings > AI > General).
69 if ( $core->get_option( 'google_use_standard_api' ) ) {
70 return Meow_MWAI_Engines_Google::create( $core, $env );
71 }
72 return new Meow_MWAI_Engines_GoogleInteractions( $core, $env );
73 }
74 else if ( $env['type'] === 'anthropic' ) {
75 $engine = new Meow_MWAI_Engines_Anthropic( $core, $env );
76 return $engine;
77 }
78 else if ( $env['type'] === 'openrouter' ) {
79 $engine = new Meow_MWAI_Engines_OpenRouter( $core, $env );
80 return $engine;
81 }
82 else if ( $env['type'] === 'replicate' ) {
83 $engine = new Meow_MWAI_Engines_Replicate( $core, $env );
84 return $engine;
85 }
86 else if ( $env['type'] === 'perplexity' ) {
87 $engine = new Meow_MWAI_Engines_Perplexity( $core, $env );
88 return $engine;
89 }
90 else if ( $env['type'] === 'mistral' ) {
91 $engine = new Meow_MWAI_Engines_Mistral( $core, $env );
92 return $engine;
93 }
94 else if ( $env['type'] === 'xai' ) {
95 $engine = new Meow_MWAI_Engines_XAI( $core, $env );
96 return $engine;
97 }
98 else if ( $env['type'] === 'custom' ) {
99 $engine = new Meow_MWAI_Engines_Custom( $core, $env );
100 return $engine;
101 }
102 else if ( $env['type'] === 'ovh' ) {
103 $engine = new Meow_MWAI_Engines_OVH( $core, $env );
104 return $engine;
105 }
106
107 // Last chance via a filter.
108 $engine = apply_filters( 'mwai_init_engine', null, $core, $env );
109 if ( !is_null( $engine ) ) {
110 return $engine;
111 }
112
113 throw new Exception( "AI Engine: Unknown engine type ({$env['type']})." );
114 }
115
116 public static function get_openai( $core, $envId = null ): Meow_MWAI_Engines_OpenAI {
117 $env = self::get_env_from_type( $core, [ 'openai', 'azure' ], $envId );
118 $engine = Meow_MWAI_Engines_OpenAI::create( $core, $env );
119 return $engine;
120 }
121
122 }
123