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