PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.0.8
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.0.8
3.7.4 3.7.3 3.7.2 3.7.1 3.7.0 3.6.9 3.6.8 3.6.7 3.6.6 3.6.4 3.6.5 3.6.3 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 / base.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
base.php
236 lines
1 <?php
2
3 class Meow_MWAI_Query_Base implements JsonSerializable {
4 public ?string $session = null;
5 public string $env = ''; // I don't like this env, as it can be confused with envId. Could be renamed 'domain' or 'source'.
6 public string $prompt = '';
7 public string $model = '';
8 public string $mode = '';
9 public int $maxResults = 1;
10
11 // Functions
12 public array $functions = [];
13 public ?string $functionCall = null;
14
15 // Overrides for env
16 public string $envId = '';
17 public ?string $apiKey = null;
18 public ?string $service = null; // TODO: This should be removed at some point. Should use envId instead.
19
20 // Seem to be only used by the Assistants, to get the current thread/discussion.
21 // Maybe we should try to move this to the assistant class, or use it as ExtraParams.
22 public ?string $botId = null;
23
24 // Extra Parameters (used by specific services, or for statistics, etc)
25 public array $extraParams = [];
26
27 public function __construct( $prompt = '' ) {
28 global $mwai_core;
29 if ( is_string( $prompt ) ) {
30 $this->set_prompt( $prompt );
31 }
32 $this->session = $mwai_core->get_session_id();
33 }
34
35 #[\ReturnTypeWillChange]
36 public function jsonSerialize() {
37 return [
38 'class' => get_class( $this ),
39 'env' => $this->env,
40 'envId' => $this->envId,
41 'prompt' => $this->prompt,
42 'model' => $this->model,
43 'mode' => $this->mode,
44 'session' => $this->session,
45 'maxResults' => $this->maxResults
46 ];
47 }
48
49 public function add_function( Meow_MWAI_Query_Function $function ): void {
50 $this->functions[] = $function;
51 $this->functionCall = "auto";
52 }
53
54 public function set_functions( array $functions ): void {
55 $this->functions = $functions;
56 $this->functionCall = "auto";
57 }
58
59 public function replace( $search, $replace ) {
60 $this->prompt = str_replace( $search, $replace, $this->prompt );
61 }
62
63 public function get_last_prompt(): string {
64 return $this->prompt;
65 }
66
67 /**
68 * The environment, like "chatbot", "imagesbot", "chatbot-007", "textwriter", etc...
69 * Used for statistics, mainly.
70 * @param string $env The environment.
71 */
72 public function set_env( string $env ): void {
73 $this->env = $env;
74 }
75
76 /**
77 * The environment ID for AI services.
78 * Used for statistics, mainly.
79 * @param string $envId The environment ID.
80 */
81 public function set_env_id( string $envId ): void {
82 $this->envId = $envId;
83 }
84
85 /**
86 * ID of the model to use.
87 * @param string $model ID of the model to use.
88 */
89 public function set_model( string $model ) {
90 $this->model = $model;
91 }
92
93 public function get_model() {
94 return $this->model;
95 }
96
97 /**
98 * Given a prompt, the model will return one or more predicted completions.
99 * It can also return the probabilities of alternative tokens at each position.
100 * @param string $prompt The prompt to generate completions.
101 */
102 public function set_prompt( string $prompt ) {
103 $this->prompt = $prompt;
104 }
105
106 public function get_prompt() {
107 return $this->prompt;
108 }
109
110 /**
111 * Similar to the prompt, but focus on the new/last message.
112 * Only used when the model has a chat mode (and only used in messages).
113 * With Meow_MWAI_Query_Base, this is the same as set_prompt.
114 * @param string $prompt The messages to generate completions.
115 */
116 public function set_new_message( string $newMessage ): void {
117 $this->set_prompt( $newMessage );
118 }
119
120 public function get_last_message() {
121 return $this->get_prompt();
122 }
123
124 /**
125 * The API key to use.
126 * @param string $apiKey The API key.
127 */
128 public function set_api_key( string $apiKey ) {
129 $this->apiKey = $apiKey;
130 }
131
132 /**
133 * The service to use.
134 * @param string $service The service.
135 */
136 public function set_service( string $service ) {
137 $this->service = $service;
138 }
139
140 /**
141 * The session ID to use.
142 * @param string $session The session ID.
143 */
144 public function set_session( string $session ) {
145 $this->session = $session;
146 }
147
148 /**
149 * The bot ID to use.
150 * @param string $botId The bot ID.
151 */
152 public function set_bot_id( string $botId ) {
153 $this->botId = $botId;
154 }
155
156 /**
157 * How many completions to generate for each prompt.
158 * Because this parameter generates many completions, it can quickly consume your token quota.
159 * Use carefully and ensure that you have reasonable settings for max_tokens and stop.
160 * @param float $maxResults Number of completions.
161 */
162 public function set_max_results( int $maxResults ) {
163 $this->maxResults = $maxResults;
164 }
165
166 // **
167 // * Check if everything is correct, otherwise fix it (like the max number of tokens).
168 // */
169 public function final_checks() {
170 }
171
172 protected function convert_keys( $params )
173 {
174 $newParams = [];
175 foreach ( $params as $key => $value ) {
176 $newKey = '';
177 $capitalizeNextChar = false;
178 for ( $i = 0; $i < strlen( $key ); $i++ ) {
179 if ( $key[$i] == '_' ) {
180 $capitalizeNextChar = true;
181 }
182 else {
183 $newKey .= $capitalizeNextChar ? strtoupper($key[$i]) : $key[$i];
184 $capitalizeNextChar = false;
185 }
186 }
187 $newParams[$newKey] = $value;
188 }
189 return $newParams;
190 }
191
192 // Quick and dirty token estimation
193 // Let's keep this synchronized with Helpers in JS
194 protected function estimate_tokens( $promptOrMessages ): int
195 {
196 $text = "";
197 // https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
198 if ( is_array( $promptOrMessages ) ) {
199 foreach ( $promptOrMessages as $message ) {
200 $role = $message['role'];
201 $content = $message['content'];
202 if ( is_array( $content ) ) {
203 foreach ( $content as $subMessage ) {
204 if ( $subMessage['type'] === 'text' ) {
205 $text .= $subMessage['text'];
206 }
207 }
208 }
209 else {
210 $text .= "=#=$role\n$content=#=\n";
211 }
212 }
213 }
214 else {
215 $text = $promptOrMessages;
216 }
217 $tokens = 0;
218 return apply_filters( 'mwai_estimate_tokens', (int)$tokens, $text, $this->model );
219 }
220
221 public function toJson() {
222 return json_encode( $this );
223 }
224
225 #region Extra Params
226 public function setExtraParam( string $key, $value ): void {
227 $this->extraParams[$key] = $value;
228 }
229
230 public function getExtraParam( string $key ) {
231 $value = $this->extraParams[$key];
232 return $value;
233 }
234
235 #endregion Extra Params
236 }