Преглед изворни кода

#5406 AI Agents revamp: removing unused code

Aleksandr Trofimov пре 1 месец
родитељ
комит
eba8c03982

+ 3 - 113
inc/classes/BxDolAi.php

@@ -7,23 +7,10 @@
  * @{
  */
 
-define('BX_DOL_AI_ASSISTANT', 'assistant');
-define('BX_DOL_AI_AUTOMATOR_EVENT', 'event');
-define('BX_DOL_AI_AUTOMATOR_SCHEDULER', 'scheduler');
-define('BX_DOL_AI_AUTOMATOR_WEBHOOK', 'webhook');
-
-define('BX_DOL_AI_AUTOMATOR_STATUS_AUTO', 'auto');
-define('BX_DOL_AI_AUTOMATOR_STATUS_MANUAL', 'manual');
-define('BX_DOL_AI_AUTOMATOR_STATUS_READY', 'ready');
-
 class BxDolAi extends BxDolFactory implements iBxDolSingleton
 {
     protected $_oDb;
     protected $_iProfileId;
-    
-    protected $_aExcludeAlertUnits;
-
-    protected $_bWriteLog;
 
     protected $_aChatContext;
 
@@ -38,12 +25,6 @@ class BxDolAi extends BxDolFactory implements iBxDolSingleton
 
         $this->_iProfileId = (int)getParam('sys_profile_bot'); 
 
-        $this->_aExcludeAlertUnits = [
-            'system', 'module_template_method_call'
-        ];
-
-        $this->_bWriteLog = true;
-
         $this->_aChatContext = null;
     }
 
@@ -111,20 +92,13 @@ class BxDolAi extends BxDolFactory implements iBxDolSingleton
     public static function getAiProviderInstance(int $iId):NeuronAI\Providers\AIProviderInterface
     {
         return BxDolAIModelFactory::getModelInstance($iId);
-    }   
+    }
 
     public static function getAiEmbeddingsProviderInstance(int $iId):NeuronAI\RAG\Embeddings\EmbeddingsProviderInterface
     {
         return BxDolAIModelFactory::getModelInstance($iId);
     }
 
-    public static function pruning() {}
-
-    public static function getDefaultApiKey()
-    {
-        return getParam('sys_agents_api_key');
-    }
-
     public static function getDefaultModel()
     {
         return (int)getParam('sys_agents_model');
@@ -146,15 +120,6 @@ class BxDolAi extends BxDolFactory implements iBxDolSingleton
         return $this->_oDb->getModelsBy($aParamsDb);
     }
 
-    public function getModel($iId)
-    {
-        $aModel = $this->_oDb->getModelsBy(['sample' => 'id', 'id' => $iId]);
-        if(!empty($aModel['params']))
-            $aModel['params'] = json_decode($aModel['params'], true);
-
-        return $aModel;
-    }
-
     public function callAgent($sType, $aAgent, $mixedParams = [])
     {
         if ($mixedParams)
@@ -1250,7 +1215,7 @@ class BxDolAi extends BxDolFactory implements iBxDolSingleton
             return;
 
         $oHistory = $oAgent->getChatHistory();
-        if (!($oHistory instanceof BxDolAiChatHistory) || !method_exists($oHistory, 'persistMessages'))
+        if (!($oHistory instanceof BxDolAiChatHistory))
             return;
 
         $aMessages = $oHistory->getMessages();
@@ -1451,83 +1416,8 @@ class BxDolAi extends BxDolFactory implements iBxDolSingleton
         return $this->_oDb->getAgentsByTriggerType($sTrigger);
     }
 
-    public function getAgentById($iId)
-    {
-        return $this->_oDb->getAgentById($iId);
-    }
-
     public function getAgentByTriggerWebhookKey($sKey)
     {
         return $this->_oDb->getAgentByTriggerWebhookKey($sKey);
     }
-
-    public function evalCode($aAutomator, $aParams = [])
-    {
-        try {
-            $this->_evalCode($aAutomator, $aParams);
-        }
-        catch (Exception $oException) {
-            $this->log($oException->getFile() . ':' . $oException->getLine() . ' ' . $oException->getMessage());
-        }
-        catch (Error $oError) {
-            $this->log($oError->getFile() . ':' . $oError->getLine() . ' ' . $oError->getMessage());
-        }
-    }
-
-    public function emulCode($aAutomator, $aParams = [])
-    {
-        ob_start();
-
-        try {
-            $this->_evalCode($aAutomator, $aParams);
-        }
-        catch (Exception $oException) {
-            return $oException->getMessage();
-        }
-        catch (Error $oError) {
-            return $oError->getMessage();
-        }
-        finally {
-            $sOutput = ob_get_clean();
-
-            if(!empty($sOutput))
-                return $sOutput;
-        }
-    }
-
-    public function log($mixedContents, $sSection = '')
-    {
-        if(!$this->_bWriteLog)
-            return;
-
-        if(is_array($mixedContents))
-            $mixedContents = var_export($mixedContents, true);	
-        else if(is_object($mixedContents))
-            $mixedContents = json_encode($mixedContents);
-
-        if(empty($sSection))
-            $sSection = "Core";
-
-        bx_log('sys_agents', ":\n[" . $sSection . "] " . $mixedContents, BX_LOG_ERR);
-    }
-
-    protected function _evalCode($aAutomator, $aParams = [])
-    {
-        $sCode = '';
-        switch($aAutomator['type']) {
-            case BX_DOL_AI_AUTOMATOR_EVENT:
-                $sCode = $aAutomator['code']. '; onAlert($aParams["alert"]->iObject , $aParams["alert"]->iSender , $aParams["alert"]->aExtras);';
-                break;
-
-            case BX_DOL_AI_AUTOMATOR_SCHEDULER:
-                $sCode = $aAutomator['code'] . '; onCron();';
-                break;
-
-            case BX_DOL_AI_AUTOMATOR_WEBHOOK:
-                $sCode = $aAutomator['code'] . '; onHook();';
-                break;
-        }
-
-        eval($sCode);
-    }
-}
+}

+ 1 - 12
inc/classes/BxDolAiQuery.php

@@ -45,17 +45,6 @@ class BxDolAiQuery extends BxDolDb
         return self::_getObject($iId, 'sys_agents_tools');
     }
 
-    static public function getAssistantObject($iId)
-    {
-        $oDb = BxDolDb::getInstance();
-
-        $aAssistant = $oDb->getRow("SELECT * FROM `sys_agents_assistants` WHERE `id` = :id", ['id' => $iId]);
-        if(!$aAssistant || !is_array($aAssistant))
-            return false;
-
-        return $aAssistant;
-    }
-
     public function insertModel($aModel)
     {
         if(empty($aModel))
@@ -513,7 +502,7 @@ class BxDolAiQuery extends BxDolDb
             'action' => $sAction,
         ]);
         if (!$sDesc) {
-            $oDb->getOne("SELECT `description` FROM `sys_alerts_desc` WHERE `unit` LIKE '{%}' AND `action` = :action LIMIT 1", [
+            $sDesc = $oDb->getOne("SELECT `description` FROM `sys_alerts_desc` WHERE `unit` LIKE '{%}' AND `action` = :action LIMIT 1", [
                 'action' => $sAction,
             ]);
         }

+ 0 - 3
inc/classes/BxDolCronPruning.php

@@ -72,9 +72,6 @@ class BxDolCronPruning extends BxDolCron
         $oKey = BxDolKey::getInstance();
         $iDeletedKeys = $oKey ? $oKey->prune() : 0;
 
-        // clean ai related data
-        $iDeletedItems = BxDolAi::pruning();
-
         // clean background jobs
         $iDeletedJobs = BxDolBackgroundJobs::pruning();
 

+ 0 - 9
periodic/cron.php

@@ -166,13 +166,4 @@ foreach($aAgents as $aAgent) {
     if(checkCronJob($aAgent['scheduler_cron'], $aDate))
         $oAi->callAgent('scheduler', $aAgent);
 }
-
-// run automators (schedulers)
-$aAutomators = $oAi->getAutomatorsScheduler();
-foreach($aAutomators as $aAutomator) {
-    if(checkCronJob($aAutomator['params']['scheduler_time'], $aDate))
-        $oAi->callAutomator(BX_DOL_AI_AUTOMATOR_SCHEDULER, [
-            'automator' => $aAutomator
-        ]);
-}
 /** @} */

+ 0 - 101
studio/js/agents.js

@@ -13,7 +13,6 @@ function BxDolStudioPageAgents(oOptions)
     this.sActionUrl = oOptions.sActionUrl;
     this.sObjName = oOptions.sObjName == undefined ? 'oBxDolStudioPageAgents' : oOptions.sObjName;
 
-    this.sActionUrlCmts = oOptions.sActionUrlCmts == undefined ? this.sActionUrl : oOptions.sActionUrlCmts;
     this.sActionUrlGrid = oOptions.sActionUrlGrid == undefined ? this.sActionUrl : oOptions.sActionUrlGrid;
     this.sObjNameGrid = oOptions.sObjNameGrid == undefined ? '' : oOptions.sObjNameGrid;
 
@@ -426,101 +425,6 @@ BxDolStudioPageAgents.prototype.agentCheckName = function(oSource, sTitleId, sNa
     );
 };
 
-BxDolStudioPageAgents.prototype.onChangeAutomatorType = function(oSelect) {
-    var aHide = [];
-    var aShow = [];
-    switch($(oSelect).val()) {
-        case 'event':
-            aHide = []; //['scheduler_time'];
-            aShow = []; //['alert_unit', 'alert_action'];
-            break;
-
-        case 'scheduler':
-            aHide = []; //['alert_unit', 'alert_action'];
-            aShow = []; //['scheduler_time'];
-            break;
-            
-        default:
-            aHide = []; //['alert_unit', 'alert_action', 'scheduler_time'];
-            aShow = [];
-    }
-
-    var sHide = '';
-    aHide.forEach((sItem) => {
-        sHide += ".bx-form-advanced #bx-form-element-" + sItem + ",";
-    });
-
-    var sShow = '';
-    aShow.forEach((sItem) => {
-        sShow += ".bx-form-advanced #bx-form-element-" + sItem + ",";
-    });
-
-    $(sHide.substring(0, sHide.length - 1)).bx_anim('hide', this.sAnimationEffect, 0);
-    $(sShow.substring(0, sShow.length - 1)).bx_anim('show', this.sAnimationEffect, 0);
-};
-
-BxDolStudioPageAgents.prototype.approveCode = function(oSource, iCmtId) {
-    var $this = this;
-    var oData = this._getDefaultData();
-    oData = jQuery.extend({}, oData, {action: 'approveCode', Cmt: iCmtId});
-
-    oSource = $(oSource);
-    bx_std_loading_btn(oSource, true);
-
-    jQuery.post (
-        this.sActionUrlCmts,
-        oData,
-        function(oData) {
-            bx_std_loading_btn(oSource, false);
-
-            processJsonData(oData);
-        },
-        'json'
-    );
-};
-
-BxDolStudioPageAgents.prototype.providerAdd = function(oButton, sName) {
-    var oButton = $(oButton);
-
-    var oSubentry = oButton.parents('#bx-form-element-' + sName).find('.bx-form-input-provider:first').clone();
-    oSubentry.find("select").val('');
-    oSubentry.find("input[type = 'hidden']").remove();
-
-    oButton.parents('.bx-form-input-provider-add:first').before(oSubentry);
-};
-
-BxDolStudioPageAgents.prototype.providerDelete = function(oButton) {
-    $(oButton).parents('.bx-form-input-provider:first').remove();
-};
-
-BxDolStudioPageAgents.prototype.helperAdd = function(oButton, sName) {
-    var oButton = $(oButton);
-
-    var oSubentry = oButton.parents('#bx-form-element-' + sName).find('.bx-form-input-helper:first').clone();
-    oSubentry.find("select").val('');
-    oSubentry.find("input[type = 'hidden']").remove();
-
-    oButton.parents('.bx-form-input-helper-add:first').before(oSubentry);
-};
-
-BxDolStudioPageAgents.prototype.helperDelete = function(oButton) {
-    $(oButton).parents('.bx-form-input-helper:first').remove();
-};
-
-BxDolStudioPageAgents.prototype.assistantAdd = function(oButton, sName) {
-    var oButton = $(oButton);
-
-    var oSubentry = oButton.parents('#bx-form-element-' + sName).find('.bx-form-input-assistant:first').clone();
-    oSubentry.find("select").val('');
-    oSubentry.find("input[type = 'hidden']").remove();
-
-    oButton.parents('.bx-form-input-assistant-add:first').before(oSubentry);
-};
-
-BxDolStudioPageAgents.prototype.assistantDelete = function(oButton) {
-    $(oButton).parents('.bx-form-input-assistant:first').remove();
-};
-
 BxDolStudioPageAgents.prototype.toolAdd = function(oButton, sName) {
     var oButton = $(oButton);
 
@@ -535,9 +439,4 @@ BxDolStudioPageAgents.prototype.toolDelete = function(oButton) {
     $(oButton).parents('.bx-form-input-tools:first').remove();
 };
 
-BxDolStudioPageAgents.prototype._getDefaultData = function() {
-    var oDate = new Date();
-    return jQuery.extend({}, this._oRequestParams, {_t:oDate.getTime()});
-};
-
 /** @} */

+ 5 - 21
studio/template/scripts/BxBaseStudioAgentsAgents.php

@@ -273,7 +273,7 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
         $sName = !empty($aAgent['title']) ? $aAgent['title'] : $aAgent['name'];
         $aThreadsTpl = [];
         $oAi = BxDolAi::getInstance();
-        $aThreads = $oAi && method_exists($oAi, 'listAgentChatThreads') ? $oAi->listAgentChatThreads($aAgent) : [];
+        $aThreads = $oAi ? $oAi->listAgentChatThreads($aAgent) : [];
         foreach ($aThreads as $aThread) {
             $aThreadsTpl[] = [
                 'thread_id' => bx_html_attribute($aThread['thread_id']),
@@ -322,7 +322,7 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
 
         $aThreadsJs = [];
         $oAi = BxDolAi::getInstance();
-        $aThreads = $oAi && method_exists($oAi, 'listAgentChatThreads') ? $oAi->listAgentChatThreads($aAgent) : [];
+        $aThreads = $oAi ? $oAi->listAgentChatThreads($aAgent) : [];
         foreach ($aThreads as $aThread)
             $aThreadsJs[] = $this->_agentChatThreadJs($aThread);
 
@@ -340,7 +340,7 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
 
         $sThreadId = trim((string)bx_get('thread_id'));
         $oAi = BxDolAi::getInstance();
-        if (!$oAi || !method_exists($oAi, 'getChatHistoryUiMessagesByThread')) {
+        if (!$oAi) {
             echoJson(['code' => 503, 'msg' => _t('_sys_txt_error_occured'), 'messages' => []]);
             return;
         }
@@ -355,7 +355,7 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
             'code' => 200,
             'messages' => $aMessages,
             'writable' => $oAi->isOwnAgentChatThread($aAgent, $sThreadId) ? 1 : 0,
-            'artifacts' => method_exists($oAi, 'getChatHistoryArtifactsByThread') ? $oAi->getChatHistoryArtifactsByThread($aAgent, $sThreadId) : [],
+            'artifacts' => $oAi->getChatHistoryArtifactsByThread($aAgent, $sThreadId),
         ]);
     }
 
@@ -386,14 +386,6 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
         ];
     }
 
-    protected function _getCellSwitcher ($mixedValue, $sKey, $aField, $aRow)
-    {
-        // if(empty($aRow['code']) || $aRow['status'] != BX_DOL_AI_AUTOMATOR_STATUS_READY)
-        //    return parent::_getCellDefault('', $sKey, $aField, $aRow);
-
-        return parent::_getCellSwitcher ($mixedValue, $sKey, $aField, $aRow);
-    }
-
     protected function _getCellProfileId($mixedValue, $sKey, $aField, $aRow)
     {
         $mixedValue = BxDolProfile::getInstanceMagic($mixedValue)->getUnit(0, ['template' => 'unit_wo_info']);
@@ -454,14 +446,6 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
     {
         $mixedResult = parent::_delete($mixedId);
         $this->_oDb->cleanCache('sys_agents_with_alert');
-        if($mixedResult) {
-            // $this->_oDb->deleteAutomatorProviders(['automator_id' => (int)$mixedId]);
-            // $this->_oDb->deleteAutomatorHelpers(['automator_id' => (int)$mixedId]);
-            // $this->_oDb->deleteAutomatorAssistants(['automator_id' => (int)$mixedId]);
-
-            // if(($oCmts = BxDolAi::getInstance()->getAutomatorCmtsObject($mixedId)) !== false)
-            //    $oCmts->onObjectDelete();
-        }
 
         return $mixedResult;
     }
@@ -1156,7 +1140,7 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
 
     protected function _getUniqName($sName)
     {
-        return uriGenerate($sName, 'sys_agents_automators', 'name', ['lowercase' => false]);
+        return uriGenerate($sName, 'sys_agents_agents', 'name', ['lowercase' => false]);
     }
 
     protected function _getMultiField($sField, $aAgent, $sGetValuesMethod, $sJsAddMethod, $sTemplateName, &$aForm)

+ 3 - 5
template/scripts/BxBaseServices.php

@@ -1588,7 +1588,7 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
 
     public function serviceGetOptionsAgentsModel()
     {
-        return ['' => _t('_Select_one')] + BxDolAI::getInstance()->getModels(['active' => true, 'hidden' => false]);
+        return ['' => _t('_Select_one')] + BxDolAI::getInstance()->getModels(['active' => true]);
     }
 
     public function serviceGetOptionsAgentsProfile($bSelectOne = true, $sSelectOneLangKey = '_Select_one')
@@ -1849,7 +1849,7 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
 
         $sThreadId = !empty($aData['threadId']) ? $aData['threadId'] : null;
 
-        if(method_exists($oAi, 'streamAgentChat') && class_exists('NeuronAI\Chat\Messages\Stream\Adapters\AGUIAdapter')) {
+        if(class_exists('NeuronAI\Chat\Messages\Stream\Adapters\AGUIAdapter')) {
             $oAi->streamAgentChat($aAgent['id'], $sPrompt, $aParams, $sThreadId);
             return;
         }
@@ -1883,9 +1883,7 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             return echoJson(['code' => 403, 'msg' => _t('_sys_agents_unauthorized'), 'messages' => [], 'activeRun' => null, 'interrupts' => null]);
 
         try {
-            $aMessages = method_exists($oAi, 'getChatHistoryUiMessages')
-                ? $oAi->getChatHistoryUiMessages($aAgent['id'], $aParams)
-                : [];
+            $aMessages = $oAi->getChatHistoryUiMessages($aAgent['id'], $aParams);
         } catch (Throwable $o) {
             $aMessages = [];
         }