PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 2.7.2
AI Engine – The Chatbot, AI Framework & MCP for WordPress v2.7.2
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 / function.php
ai-engine / classes / queries Last commit date
assistant.php 1 year ago assistfeedback.php 1 year ago base.php 1 year ago droppedfile.php 1 year ago embed.php 1 year ago feedback.php 1 year ago function.php 1 year ago image.php 1 year ago parameter.php 2 years ago text.php 1 year ago transcribe.php 1 year ago
function.php
149 lines
1 <?php
2
3 class Meow_MWAI_Query_Function {
4 public string $name;
5 public string $description;
6 public array $parameters;
7 public string $type; // 'code-engine', etc...
8 public string $target; // 'server' or 'client'
9 public ?string $id;
10
11 public function __construct( string $name, string $description,
12 array $parameters = [], string $type = null, string $id = null, string $target = null ) {
13 // $name: The name of the function to be called.
14 // Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.
15 if ( !preg_match( '/^[a-zA-Z0-9_-]{1,64}$/', $name ) ) {
16 throw new InvalidArgumentException( "AI Engine: Invalid function name ($name) for Meow_MWAI_Query_Function." );
17 }
18
19 foreach ( $parameters as $parameter ) {
20 if ( !( $parameter instanceof Meow_MWAI_Query_Parameter ) ) {
21 throw new InvalidArgumentException( "AI Engine: Invalid parameter for Meow_MWAI_Query_Function." );
22 }
23 }
24
25 $this->name = $name;
26 $this->description = $description;
27 $this->parameters = $parameters;
28 $this->type = $type ?? 'manual';
29 $this->id = $id;
30 $this->target = $target ?? 'server';
31 }
32
33 public function serializeForOpenAI() {
34 // Initialize the base structure with name and description
35 $json = [ 'name' => $this->name, 'description' => $this->description ];
36
37 // Check if parameters are set and not empty
38 if ( !empty( $this->parameters ) ) {
39 $properties = [];
40 $required = [];
41
42 // Loop through each parameter to construct the properties object
43 foreach ( $this->parameters as $parameter ) {
44 $properties[$parameter->name] = [
45 'type' => $parameter->type, // Assuming each parameter has a 'type' attribute
46 'description' => $parameter->description, // Assuming each parameter has a 'description' attribute
47 ];
48
49 // If an enum is set for the parameter, include it
50 if ( isset($parameter->enum) ) {
51 $properties[$parameter->name]['enum'] = $parameter->enum;
52 }
53
54 // If the parameter is required, add its name to the required array
55 if ( $parameter->required ) {
56 $required[] = $parameter->name;
57 }
58 }
59
60 // Assemble the parameters part of the JSON
61 $json['parameters'] = [
62 'type' => 'object',
63 'properties' => $properties,
64 'required' => $required,
65 ];
66 }
67
68 return $json;
69 }
70
71 public function serializeForAnthropic() {
72 $json = [
73 'name' => $this->name,
74 'description' => $this->description,
75 'input_schema' => [
76 'type' => 'object',
77 'properties' => new stdClass()
78 ],
79 ];
80
81 if ( !empty( $this->parameters ) ) {
82 $properties = [];
83 $required = [];
84 foreach ( $this->parameters as $parameter )
85 {
86 $properties[$parameter->name] = [
87 'type' => $parameter->type,
88 'description' => $parameter->description,
89 ];
90 if ( isset( $parameter->enum ) ) {
91 $properties[$parameter->name]['enum'] = $parameter->enum;
92 }
93 if ( $parameter->required ) {
94 $required[] = $parameter->name;
95 }
96 }
97 $json['input_schema']['properties'] = empty( $properties ) ? new stdClass() : $properties;
98 if ( !empty( $required ) ) {
99 $json['input_schema']['required'] = $required;
100 }
101 }
102
103 return $json;
104 }
105
106 public static function fromJson( array $json ): Meow_MWAI_Query_Function {
107 $funcName = $json['name'];
108 $funcDesc = $json['desc'];
109 $funcType = $json['type'] ?? null;
110 $funcId = $json['id'] ?? null;
111 $funcTarget = $json['target'] ?? null;
112 if ( $funcId === null && !empty( $json['snippetId'] ) ) {
113 $funcId = $json['snippetId'];
114 }
115 $args = [];
116 if ( !empty( $json['args'] ) ) {
117 foreach ( $json['args'] as $arg ) {
118 $name = ltrim( $arg['name'], '$' );
119 $desc = $arg['desc'] ?? null;
120 $type = $arg['type'] ?? 'string';
121 $required = $arg['required'] ?? false;
122 $args[] = new Meow_MWAI_Query_Parameter( $name, $desc, $type, $required );
123 }
124 }
125 return new self( $funcName, $funcDesc, $args, $funcType, $funcId, $funcTarget );
126 }
127
128 public static function toJson( Meow_MWAI_Query_Function $function ): array {
129 $json = [
130 'name' => $function->name,
131 'desc' => $function->description,
132 'type' => $function->type,
133 'id' => $function->id,
134 'target' => $function->target,
135 'args' => [],
136 ];
137
138 foreach ( $function->parameters as $param ) {
139 $json['args'][] = [
140 'name' => $param->name,
141 'desc' => $param->description,
142 'type' => $param->type,
143 'required' => $param->required,
144 ];
145 }
146
147 return $json;
148 }
149 }