PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.1.4
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.1.4
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 / reply.php
ai-engine / classes Last commit date
engines 2 years ago modules 2 years ago queries 2 years ago admin.php 2 years ago api.php 2 years ago core.php 2 years ago init.php 3 years ago reply.php 2 years ago rest.php 2 years ago
reply.php
164 lines
1 <?php
2
3 class Meow_MWAI_Reply implements JsonSerializable {
4 public $id = null;
5 public $result = '';
6 public $results = [];
7 public $usage = [ 'prompt_tokens' => 0, 'completion_tokens' => 0, 'total_tokens' => 0 ];
8 public $query = null;
9 public $type = 'text';
10
11 // Function Call
12 public $functionCall = null;
13
14 public function __construct( $query = null ) {
15 $this->query = $query;
16 }
17
18 #[\ReturnTypeWillChange]
19 public function jsonSerialize() {
20 return [
21 'result' => $this->result,
22 'results' => $this->results,
23 'usage' => $this->usage,
24 'system' => [
25 'class' => get_class( $this ),
26 ]
27 ];
28 }
29
30 public function set_usage( $usage ) {
31 $this->usage = $usage;
32 }
33
34 public function set_id( $id ) {
35 $this->id = $id;
36 }
37
38 public function set_type( $type ) {
39 $this->type = $type;
40 }
41
42 public function get_total_tokens() {
43 return $this->usage['total_tokens'];
44 }
45
46 public function get_in_tokens( $query = null ) {
47 $in_tokens = $this->usage['prompt_tokens'];
48 if ( empty( $in_tokens ) && $query ) {
49 $in_tokens = $query->get_in_tokens();
50 }
51 return $in_tokens;
52 }
53
54 public function get_out_tokens() {
55 $out_tokens = $this->usage['completion_tokens'];
56 if ( empty( $out_tokens ) ) {
57 $out_tokens = Meow_MWAI_Core::estimate_tokens( $this->result );
58 }
59 return $out_tokens;
60 }
61
62 public function get_units() {
63 if ( isset( $this->usage['total_tokens'] ) ) {
64 return $this->usage['total_tokens'];
65 }
66 else if ( isset( $this->usage['images'] ) ) {
67 return $this->usage['images'];
68 }
69 else if ( isset( $this->usage['seconds'] ) ) {
70 return $this->usage['seconds'];
71 }
72 return null;
73 }
74
75 public function get_type() {
76 return $this->type;
77 }
78
79 public function set_reply( $reply ) {
80 $this->result = $reply;
81 $this->results[] = [ $reply ];
82 }
83
84 public function replace( $search, $replace ) {
85 $this->result = str_replace( $search, $replace, $this->result );
86 $this->results = array_map( function( $result ) use ( $search, $replace ) {
87 return str_replace( $search, $replace, $result );
88 }, $this->results );
89 }
90
91 /**
92 * Set the choices from OpenAI as the results.
93 * The last (or only) result is set as the result.
94 * @param array $choices ID of the model to use.
95 */
96 public function set_choices( $choices ) {
97 $this->results = [];
98 if ( is_array( $choices ) ) {
99 foreach ( $choices as $choice ) {
100
101 // It's chat completion
102 if ( isset( $choice['message'] ) ) {
103
104 // It's text content
105 if ( isset( $choice['message']['content'] ) ) {
106 $content = trim( $choice['message']['content'] );
107 $this->results[] = $content;
108 $this->result = $content;
109 }
110
111 // It's a function call
112 if ( isset( $choice['message']['function_call'] ) ) {
113 $content = $choice['message']['function_call'];
114 $name = trim( $content['name'] );
115 $arguments = trim( str_replace( "\n", "", $content['arguments'] ) );
116 if ( substr( $arguments, 0, 1 ) == '{' ) {
117 $arguments = json_decode( $arguments, true );
118 }
119 $this->functionCall = [ 'name' => $name, 'arguments' => $arguments ];
120 }
121 }
122
123 // It's text completion
124 else if ( isset( $choice['text'] ) ) {
125
126 // TODO: Assistants return an array (so actually not really a text completion)
127 // We should probably make this clearer and analyze all the outputs from different endpoints.
128 if ( is_array( $choice['text'] ) ) {
129 $text = trim( $choice['text']['value'] );
130 $this->results[] = $text;
131 $this->result = $text;
132 }
133 else {
134 $text = trim( $choice['text'] );
135 $this->results[] = $text;
136 $this->result = $text;
137 }
138 }
139
140 // It's url/image
141 else if ( isset( $choice['url'] ) ) {
142 $url = trim( $choice['url'] );
143 $this->results[] = $url;
144 $this->result = $url;
145 }
146
147 // It's embedding
148 else if ( isset( $choice['embedding'] ) ) {
149 $content = $choice['embedding'];
150 $this->results[] = $content;
151 $this->result = $content;
152 }
153 }
154 }
155 else {
156 $this->result = $choices;
157 $this->results[] = $choices;
158 }
159 }
160
161 public function toJson() {
162 return json_encode( $this );
163 }
164 }