_APIKey = $apiKey; } public function GetAPIKey() { if ($this->_APIKey == '') { $this->_APIKey = (new SettingsRepository(AllInOneForms()->GetLoader()))->GetApiKeyByName($this->GetModelName()); if ($this->_APIKey == '') throw new FriendlyException("The API Key for " . $this->GetModelName() . " is not set, please set it in the settings page"); } return $this->_APIKey; } public function SetAPIKey($key) { $this->_APIKey = $key; } /** * @param $message * @return mixed */ public abstract function Chat($message); public abstract function GetModelName(); public static function GetCallerByName($name) { // return new LocalDeepSeekCaller(); switch ($name) { case 'deepseek': return new DeepSeekCaller(); case 'openai': return new OpenAICaller(); case 'gemini3': return new Gemini3Caller(); case 'gemini3pro': return new Gemini3ProCaller(); case 'gemini25pro': return new Gemini25ProCaller(); default: if (empty($name)) { $model = (new SettingsRepository(AllInOneForms()->GetLoader()))->GetDefaultModel(); if ($model == null) return null; return self::GetCallerByName($model->Name); } return null; } } public function MaybeLogMessage($message) { $text = ""; foreach ($message as $item) { $text .= $item->role . "=====>: " . $item->content . "\r\n\r\n==================================================================\r\n\r\n\r\n"; } LogManager::LogDebug($text); } }