PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.2.63
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.2.63
3.6.2 3.6.1 3.6.0 3.5.9 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 / queries / text.php
ai-engine / classes / queries Last commit date
assistant.php 2 years ago base.php 2 years ago embed.php 2 years ago function.php 2 years ago image.php 2 years ago parameter.php 2 years ago text.php 2 years ago transcribe.php 2 years ago
text.php
190 lines
1 <?php
2
3 class Meow_MWAI_Query_Text extends Meow_MWAI_Query_Base implements JsonSerializable {
4
5 // Core Content
6 public ?string $file = null;
7 public ?string $fileType = null; // refId, url, data
8 public ?string $mimeType = 'image/jpeg';
9 public ?string $filePurpose = null; // assistant, vision
10
11 // Parameters
12 public float $temperature = 0.8;
13 public int $maxTokens = 1024;
14 public ?string $stop = null;
15 public ?string $responseFormat = null;
16
17 #region Constructors, Serialization
18
19 public function __construct( ?string $message = '', ?int $maxTokens = null, string $model = null ) {
20 parent::__construct( $message );
21 if ( !empty( $model ) ) {
22 $this->set_model( $model );
23 }
24 if ( !empty( $maxTokens ) ) {
25 $this->set_max_tokens( $maxTokens );
26 }
27 }
28
29 #[\ReturnTypeWillChange]
30 public function jsonSerialize() {
31 $json = [
32 //'instructions' => $this->instructions,
33 'message' => $this->message,
34
35 // 'context' => [
36 // 'messages' => $this->messages
37 // ],
38
39 'ai' => [
40 'model' => $this->model,
41 'maxTokens' => $this->maxTokens,
42 'temperature' => $this->temperature,
43 ],
44
45 'system' => [
46 'class' => get_class( $this ),
47 'envId' => $this->envId,
48 'mode' => $this->mode,
49 'scope' => $this->scope,
50 'session' => $this->session,
51 'maxMessages' => $this->maxMessages,
52 ]
53 ];
54
55 if ( !empty( $this->context ) ) {
56 $json['context']['context'] = $this->context;
57 }
58
59 if ( !empty( $this->file ) ) {
60 $json['context']['hasFile'] = true;
61 if ( $this->fileType === 'url' ) {
62 $json['context']['fileUrl'] = $this->file;
63 }
64 }
65
66 return $json;
67 }
68
69 #endregion
70
71 #region File Handling
72
73 public function set_file( string $file, string $fileType = null,
74 string $filePurpose = null, string $mimeType = null ) : void {
75 if ( !empty( $fileType ) && $fileType !== 'refId' && $fileType !== 'url' && $fileType !== 'data' ) {
76 throw new Exception( "AI Engine: The file type can only be refId, url or data." );
77 }
78 if ( !empty( $filePurpose ) && $filePurpose !== 'assistant-in' && $filePurpose !== 'vision' ) {
79 throw new Exception( "AI Engine: The file purpose can only be assistant or vision." );
80 }
81 if ( !empty( $mimeType ) ) {
82 $this->mimeType = $mimeType;
83 }
84 $this->file = $file;
85 $this->fileType = $fileType;
86 $this->filePurpose = $filePurpose;
87 }
88
89 public function get_file_url() {
90 if ( $this->fileType === 'url' ) {
91 return $this->file;
92 }
93 else if ( $this->fileType === 'data' ) {
94 return "data:image/jpeg;base64,{$this->file}";
95 }
96 else if ( $this->fileType === 'refId' ) {
97 throw new Exception( "AI Engine: The file type refId is not supported yet." );
98 }
99 else {
100 return null;
101 }
102 }
103
104 // TODO: Those file-related methods should be checked and streaminled.
105 // It's used by OpenAI, OpenRouter and Anthropic.
106 public function get_file_data() {
107 if ( $this->fileType === 'url' ) {
108 $data = file_get_contents( $this->file );
109 return base64_encode( $data );
110 }
111 else if ( $this->fileType === 'data' ) {
112 return $this->file;
113 }
114 }
115
116 public function get_file_mime_type() {
117 return $this->mimeType;
118 }
119
120 #endregion
121
122 #region Parameters
123
124 /**
125 * The type of return expected from the API. It can be either null or "json".
126 * @param int $maxResults The maximum number of completions.
127 */
128 public function set_response_format( $responseFormat ) {
129 if ( !empty( $responseFormat ) && $responseFormat !== 'json' ) {
130 throw new Exception( "AI Engine: The response format can only be null or json." );
131 }
132 $this->responseFormat = $responseFormat;
133 }
134
135 /**
136 * The maximum number of tokens to generate in the completion.
137 * The token count of your prompt plus max_tokens cannot exceed the model's context length.
138 * Most models have a context length of 2048 tokens (except for the newest models, which support 4096).
139 * @param float $maxTokens The maximum number of tokens.
140 */
141 public function set_max_tokens( int $maxTokens ): void {
142 $this->maxTokens = $maxTokens;
143 }
144
145 /**
146 * Set the sampling temperature to use. Higher values means the model will take more risks.
147 * Try 0.9 for more creative applications, and 0 for ones with a well-defined reply.
148 * @param float $temperature The temperature.
149 */
150 public function set_temperature( float $temperature ): void {
151 $temperature = floatval( $temperature );
152 if ( $temperature > 1 ) {
153 $temperature = 1;
154 }
155 if ( $temperature < 0 ) {
156 $temperature = 0;
157 }
158 $this->temperature = round( $temperature, 2 );
159 }
160
161 public function set_stop( string $stop ): void {
162 $this->stop = $stop;
163 }
164
165 #endregion
166
167 #region Inject Params
168
169 // Based on the params of the query, update the attributes
170 public function inject_params( array $params ): void
171 {
172 parent::inject_params( $params );
173 $params = $this->convert_keys( $params );
174
175 if ( !empty( $params['maxTokens'] ) && intval( $params['maxTokens'] ) > 0 ) {
176 $this->set_max_tokens( intval( $params['maxTokens'] ) );
177 }
178 if ( isset( $params['temperature'] ) && $params['temperature'] !== '' ) {
179 $this->set_temperature( $params['temperature'] );
180 }
181 if ( !empty( $params['stop'] ) ) {
182 $this->set_stop( $params['stop'] );
183 }
184 if ( !empty( $params['responseFormat'] ) ) {
185 $this->set_response_format( $params['responseFormat'] );
186 }
187 }
188
189 #endregion
190 }