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