Forráskód Böngészése

#5406 AI Agents revamp: max tool runs, error handling

Aleksandr Trofimov 5 hónapja
szülő
commit
290d6fdea9

+ 17 - 5
inc/classes/BxDolAI.php

@@ -94,6 +94,9 @@ class BxDolAI extends BxDolFactory implements iBxDolSingleton
 
         $o = BxDolAiAgent::make($a, $aParams);
 
+        if ((int)$a['tools_max_run'] > 0)
+            $o->toolMaxRuns($a['tools_max_run']);
+
         if ($a['vector_store_id']) {
             $aVectorStore = BxDolAIQuery::getVectorStoreObject($a['vector_store_id']);
             if ($aVectorStore && $aVectorStore['embedding_provider_id']) {
@@ -391,13 +394,22 @@ class BxDolAI extends BxDolFactory implements iBxDolSingleton
         }
 
         // call agent
-        $o = self::getAgentInstance($aAgent['id'], $aParams);
-        if (!$o)
-            return false;
+        $mixed = '';
+        try {                        
+            $o = self::getAgentInstance($aAgent['id'], $aParams);
+            if (!$o)
+                return false;
+
+            $oMessage = $o->chat(new NeuronAI\Chat\Messages\UserMessage($sParams))->getMessage();
 
-        $oMessage = $o->chat(new NeuronAI\Chat\Messages\UserMessage($sParams))->getMessage();
+            $mixed = $oMessage->getContent();
+
+        } catch (Exception $exception) {            
+            bx_log('sys_agents', "Exception in '{$aAgent['name']}' agent: " . $exception->getMessage() . " INPUT:" . $sParams, BX_LOG_ERR);
+            $mixed = _t('_sys_agents_exception');
+        }
 
-        return $oMessage->getContent();
+        return $mixed;
     }
 
     public function sendMessengerMessage ($iSender, $iRecipient, $sMsg) 

+ 1 - 0
install/sql/system.sql

@@ -7168,6 +7168,7 @@ CREATE TABLE `sys_agents_agents` (
   `prompt_output` text NOT NULL,
   `prompt_tools` text NOT NULL,
   `tools` varchar(255) NOT NULL DEFAULT '',
+  `tools_max_run` int(11) NOT NULL DEFAULT 10,
   `chat_history_context` int(11) NOT NULL DEFAULT 50000,
   `vector_store_id` int(11) NOT NULL,
   `trigger` enum('alert','scheduler','webhook','manual','agent','message') NOT NULL DEFAULT 'message',

+ 3 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -2314,6 +2314,8 @@
     <string name="_sys_agents_field_vector_store_id_info"><![CDATA[Vector store for knowledge retrieval.]]></string>
     <string name="_sys_agents_field_tools"><![CDATA[Tools]]></string>
     <string name="_sys_agents_field_tools_info"><![CDATA[Tools available for the agent to use.]]></string>
+    <string name="_sys_agents_field_tools_max_run"><![CDATA[Max tool calls]]></string>
+    <string name="_sys_agents_field_tools_max_run_info"><![CDATA[Limits how many times the AI can call external tools (such as search or actions) while completing a task. Higher values may increase execution time.]]></string>
     <string name="_sys_agents_field_prompt_system"><![CDATA[System Prompt]]></string>
     <string name="_sys_agents_field_prompt_system_info"><![CDATA[System prompt for the agent.]]></string>
     <string name="_sys_agents_field_prompt_steps"><![CDATA[Steps Prompt]]></string>
@@ -2502,6 +2504,7 @@
     <string name="_sys_agents_assistants_msg_knowledge_added"><![CDATA[Knowledge was added.]]></string>
     <string name="_sys_agents_logs_popup"><![CDATA["{0}" agent logs]]></string>
     <string name="_sys_agents_err_failed"><![CDATA[Error occurred. Try to check log file for more info.]]></string>
+    <string name="_sys_agents_exception"><![CDATA[The AI encountered an error while completing your request. Please try again or rephrase your input.]]></string>
 
   <string name="_sys_audit_content_info_popup_title"><![CDATA[Information]]></string>
   <string name="_sys_audit_action_edit_content"><![CDATA[Content edited]]></string>

+ 4 - 1
modules/boonex/russian/data/langs/system/ru.xml

@@ -2264,7 +2264,7 @@
         <string name="_sys_agents_field_name"><![CDATA[Название]]></string>
         <string name="_sys_agents_field_name_info"><![CDATA[Уникальное название агента.]]></string>
         <string name="_sys_agents_field_model_id"><![CDATA[Модель]]></string>
-        <string name="_sys_agents_field_model_id_info"><![CDATA[Модель тьи для использования этим агентом.]]></string>
+        <string name="_sys_agents_field_model_id_info"><![CDATA[Модель для использования этим агентом.]]></string>
         <string name="_sys_agents_automators_field_profile_id"><![CDATA[Профиль]]></string>
         <string name="_sys_agents_automators_field_profile_id_inf"><![CDATA[Оставьте пустым, чтобы использовать значение по умолчанию.]]></string>
         <string name="_sys_agents_field_profile_id"><![CDATA[Профиль]]></string>
@@ -2291,6 +2291,8 @@
         <string name="_sys_agents_field_vector_store_id_info"><![CDATA[Хранилище векторов для получения знаний.]]></string>
         <string name="_sys_agents_field_tools"><![CDATA[Инструменты]]></string>
         <string name="_sys_agents_field_tools_info"><![CDATA[Инструменты, доступные для использования агентом.]]></string>
+        <string name="_sys_agents_field_tools_max_run"><![CDATA[Макс. число вызовов инструментов]]></string>
+        <string name="_sys_agents_field_tools_max_run_info"><![CDATA[Ограничивает, сколько раз ИИ может вызывать внешние инструменты (например, поиск или действия) при выполнении задачи. Чем больше значение, тем дольше может выполняться запрос.]]></string>
         <string name="_sys_agents_field_prompt_system"><![CDATA[Системная инструкция]]></string>
         <string name="_sys_agents_field_prompt_system_info"><![CDATA[Системная инструкция для агента.]]></string>
         <string name="_sys_agents_field_prompt_steps"><![CDATA[Инструкция по шагам]]></string>
@@ -2479,6 +2481,7 @@
         <string name="_sys_agents_assistants_msg_knowledge_added"><![CDATA[Знания были добавлены.]]></string>
         <string name="_sys_agents_logs_popup"><![CDATA[Логи агента "{0}"]]></string>
         <string name="_sys_agents_err_failed"><![CDATA[Произошла ошибка. Попробуйте проверить файл журнала для получения дополнительной информации.]]></string>
+        <string name="_sys_agents_exception"><![CDATA[ИИ столкнулся с ошибкой при выполнении вашего запроса. Пожалуйста, повторите попытку или переформулируйте ваш ввод.]]></string>
 
   <string name="_sys_audit_content_info_popup_title"><![CDATA[Информация]]></string>
   <string name="_sys_audit_action_edit_content"><![CDATA[Контент изменен]]></string>

+ 11 - 0
studio/template/scripts/BxBaseStudioAgentsAgents.php

@@ -489,6 +489,17 @@ class BxBaseStudioAgentsAgents extends BxDolStudioAgentsAgents
                     'info' => _t('_sys_agents_field_tools_info'),
                     'value' => '',
                 ],
+                'tools_max_run' => [
+                    'type' => 'text',
+                    'name' => 'tools_max_run',
+                    'caption' => _t('_sys_agents_field_tools_max_run'),
+                    'info' => _t('_sys_agents_field_tools_max_run_info'),
+                    'value' => isset($aAgent['tools_max_run']) ? $aAgent['tools_max_run'] : '10',
+                    'required' => '1',
+                    'db' => [
+                        'pass' => 'Int',
+                    ],
+                ],
                 'prompt_system' => [
                     'type' => 'textarea',
                     'name' => 'prompt_system',

+ 2 - 4
studio/template/scripts/BxBaseStudioAgentsLogs.php

@@ -35,11 +35,9 @@ class BxBaseStudioAgentsLogs extends BxDolStudioAgentsGrid
     protected function _getCellMessage ($mixedValue, $sKey, $aField, $aRow) 
     {
         switch ($mixedValue) {
-            case 'workflow-end':
-                $mixedValue = '⏹️ ' . $mixedValue;
-                break;
             case 'workflow-start':
-                $mixedValue = '▶️ ' . $mixedValue;
+            case 'workflow-end':            
+                $mixedValue = '❇️ ' . $mixedValue . ' ❇️';
                 break;
             case 'error':
                 $mixedValue = '❗️ ' . $mixedValue;