PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.0.4
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.0.4
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 / engines / hugging-face.php
ai-engine / classes / engines Last commit date
traits 1 year ago anthropic.php 10 months ago chatml.php 10 months ago core.php 11 months ago factory.php 1 year ago google.php 10 months ago hugging-face.php 1 year ago open-router.php 1 year ago openai.php 10 months ago perplexity.php 10 months ago replicate.php 1 year ago
hugging-face.php
111 lines
1 <?php
2
3 class Meow_MWAI_Engines_HuggingFace extends Meow_MWAI_Engines_ChatML {
4 public function __construct( $core, $env ) {
5 parent::__construct( $core, $env );
6 }
7
8 protected function set_environment() {
9 $env = $this->env;
10 $this->apiKey = $env['apikey'];
11 if ( !$this->envType === 'huggingface' ) {
12 throw new Exception( 'Unknown environment type: ' . $this->envType );
13 }
14 }
15
16 protected function build_messages( $query ) {
17 $messages = parent::build_messages( $query );
18
19 // If the role is not either "user" or "assistant", we need to set it to "assistant".
20 foreach ( $messages as &$message ) {
21 if ( !in_array( $message['role'], [ 'user', 'assistant' ] ) ) {
22 $message['role'] = 'assistant';
23 }
24 }
25
26 $messages = $this->streamline_messages( $messages );
27 return $messages;
28 }
29
30 protected function build_body( $query, $streamCallback = null, $extra = null ) {
31 $body = parent::build_body( $query, $streamCallback );
32 // To use "Text Generation Inference" (OpenAI's API) with HuggingFace, we need to specify TGI as the model.
33 $body['model'] = 'tgi';
34 // Certain OpenAI features, like function calling, are not compatible with TGI. Currently, the Messages API supports the following chat completion parameters: stream, max_tokens, frequency_penalty, logprobs, seed, temperature, and top_p. Let's remove everything else.
35 $body = array_intersect_key( $body, array_flip( [ 'model', 'stream', 'max_tokens', 'frequency_penalty', 'logprobs', 'seed', 'temperature', 'top_p', 'messages' ] ) );
36 return $body;
37 }
38
39 protected function build_url( $query, $endpoint = null ) {
40 $model = $query->model;
41 if ( isset( $this->env['customModels'] ) ) {
42 foreach ( $this->env['customModels'] as $customModel ) {
43 if ( $customModel['name'] === $model ) {
44 $endpoint = $customModel['apiUrl'] . '/v1/';
45 break;
46 }
47 }
48 }
49 if ( $endpoint === null ) {
50 throw new Exception( 'Model not found for HuggingFace: ' . $model );
51 }
52 $url = parent::build_url( $query, $endpoint );
53 return $url;
54 }
55
56 protected function build_headers( $query ) {
57 parent::build_headers( $query );
58 $headers = [
59 'Content-Type' => 'application/json',
60 'Authorization' => 'Bearer ' . $this->apiKey,
61 'User-Agent' => 'AI Engine',
62 ];
63 return $headers;
64 }
65
66 protected function get_service_name() {
67 return 'HuggingFace';
68 }
69
70 public function get_models() {
71 $models = [];
72 if ( isset( $this->env['customModels'] ) ) {
73 foreach ( $this->env['customModels'] as $model ) {
74 $tags = isset( $model['tags'] ) ? $model['tags'] : [];
75 if ( !in_array( 'core', $tags ) ) {
76 $tags[] = 'core';
77 }
78 if ( !in_array( 'chat', $tags ) ) {
79 $tags[] = 'chat';
80 }
81 $features = in_array( 'image', $tags ) ? ['text-to-image'] : ['completion'];
82 $models[] = [
83 'model' => $model['name'],
84 'name' => $model['name'],
85 'features' => $features,
86 'tags' => $tags,
87 ];
88 }
89 }
90 return $models;
91 }
92
93 public function get_price( Meow_MWAI_Query_Base $query, Meow_MWAI_Reply $reply ) {
94 return null;
95 }
96
97 // Check if there are errors in the response from OpenAI, and throw an exception if so.
98 protected function handle_response_errors( $data ) {
99 if ( isset( $data['error'] ) ) {
100 $message = $data['error'];
101 if ( is_array( $message ) ) {
102 $message = $message['message'];
103 }
104 if ( preg_match( '/API key provided(: .*)\./', $message, $matches ) ) {
105 $message = str_replace( $matches[1], '', $message );
106 }
107 throw new Exception( $message );
108 }
109 }
110 }
111