pbesa 4.0.36__tar.gz → 4.0.38__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pbesa-4.0.36 → pbesa-4.0.38}/PKG-INFO +1 -1
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/cognitive.py +61 -42
- pbesa-4.0.38/pbesa/social/sel_dispatcher_team.py +703 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa.egg-info/PKG-INFO +1 -1
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa.egg-info/SOURCES.txt +1 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/setup.py +1 -1
- {pbesa-4.0.36 → pbesa-4.0.38}/.gitignore +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/LICENSE +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/LICENSE.txt +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/MANIFEST +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/README.md +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/db.sqlite3 +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/pbesa.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/settings.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/urls.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/__pycache__/wsgi.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/asgi.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/pbesa.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/settings.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/urls.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/helloworld/wsgi.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/manage.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/admin.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/apps.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/models.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/urls.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/__pycache__/views.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/admin.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/apps.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/translatecontroller.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/translatedelegate.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/controller/translateresponse.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/translatetask.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/mas/worker/workeragent.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/migrations/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/migrations/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/models.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/tests.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/urls.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/django/helloworld/translate/views.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/countercontroller.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/counterdelegate.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/counterresponse.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/countercontroller.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/counterdelegate.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/controller/counterresponse.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/counteragent.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/countertask.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/worker/counteragent.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/mas/worker/countertask.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/remote_a.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/remote_b.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/examples/remote/remote_c.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_casos.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_consultas.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_conversador.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_cuestionador.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_datos_identificables.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_evaluador.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_expertos.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_extraccion.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_generar_caso.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_generar_documento.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_instruccion.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_parafraseo.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_pertinencia.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_preguntas.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_respuesta.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/celula_saludos.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/data_extraction_cel.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/celulas/web.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/adapter.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/agent.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/io/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/io/system_file.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/io/tcp_server.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/res/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-37.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-38.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/res/__pycache__/__init__.cpython-39.pyc +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/res/conf.json +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/util.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/kernel/world.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/mas.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/models.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/remote/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/remote/adm_listener.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/remote/adm_listener_handler.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/remote/exceptions.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/remote/remote_adm.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/remote/remote_adm_handler.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/simulator/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/simulator/dialog_simulator.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/__init__.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/collaborative_team.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/delegator.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/delegator_team.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/dialog.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/dispatcher_team.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/prompts.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/selected_dispatcher_team.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/templates.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa/social/worker.py +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa.egg-info/dependency_links.txt +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa.egg-info/requires.txt +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/pbesa.egg-info/top_level.txt +0 -0
- {pbesa-4.0.36 → pbesa-4.0.38}/setup.cfg +0 -0
@@ -834,23 +834,30 @@ class Dialog(ABC):
|
|
834
834
|
def stage_one_classification(self, session_id, messages, attemps, query):
|
835
835
|
""" Stage one classification """
|
836
836
|
res = ""
|
837
|
-
|
837
|
+
|
838
838
|
dicriminador = None
|
839
839
|
logging.info(f"------------Flujo de excepcion---------------")
|
840
840
|
self.notify(session_id, "identificando intención...")
|
841
841
|
logging.info(f"Intento: {attemps}")
|
842
|
-
|
843
842
|
|
844
843
|
self.__analaizer_work_memory:list = [{"role": "system", "content": ANALIZER_PROMPT}]
|
845
844
|
|
846
|
-
es_verificacion = False
|
847
|
-
if len(messages) >= 3:
|
848
|
-
|
849
|
-
|
845
|
+
#es_verificacion = False
|
846
|
+
#if len(messages) >= 3:
|
847
|
+
# last_message = messages[-2]['text']
|
848
|
+
# es_verificacion = '¿Desea que le ayude con una consulta o una demanda?' in last_message
|
850
849
|
|
851
|
-
if attemps
|
852
|
-
|
853
|
-
|
850
|
+
#if attemps == 2:
|
851
|
+
# saludo = "NO_SALUDO"
|
852
|
+
# consulta = celula_consultas.derive(self.__ai_service, query, max_tkns=10)
|
853
|
+
|
854
|
+
if attemps >= 2:# or es_verificacion:
|
855
|
+
rectificacion_consulta = 0
|
856
|
+
|
857
|
+
consulta = celula_consultas.derive(self.__ai_service, query, max_tkns=10)
|
858
|
+
es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and not ("NO_PREGUNTA" in consulta)
|
859
|
+
if es_consulta:
|
860
|
+
rectificacion_consulta += 1
|
854
861
|
|
855
862
|
saludo = "NO_SALUDO"
|
856
863
|
self.__sintetizer_work_memory:list = [{"role": "system", "content": SINTETIZER_PROMPT}]
|
@@ -875,20 +882,27 @@ class Dialog(ABC):
|
|
875
882
|
self.__analaizer_work_memory.append({"role": "assistant", "content": message['text']})
|
876
883
|
self.__sintetizer_work_memory.append({"role": "assistant", "content": message['text']})
|
877
884
|
|
878
|
-
#self.__analaizer_work_memory.append({"role": "user", "content": query})
|
879
|
-
#self.__sintetizer_work_memory.append({"role": "user", "content": query})
|
880
|
-
|
881
|
-
# Desde la seegunda iteeraccion de la
|
882
|
-
# conversacion, se utiliza el sintentizador
|
883
885
|
logging.info("\n\n\n--------------SINTETIZER------------------")
|
884
886
|
logging.info("\n%s", json.dumps(self.__sintetizer_work_memory, indent=4))
|
885
887
|
logging.info("\n\n\n")
|
886
|
-
|
887
|
-
res = self.get_text(
|
888
|
-
|
889
|
-
|
888
|
+
res = self.__ai_service.generate(self.__sintetizer_work_memory, max_tokens=50)
|
889
|
+
res = self.get_text(res)
|
890
|
+
logging.info(f"[Stage-1][Sintetizer][Thought]: {res}")
|
891
|
+
|
892
|
+
consulta = celula_consultas.derive(self.__ai_service, res, max_tkns=10)
|
893
|
+
es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and not ("NO_PREGUNTA" in consulta)
|
894
|
+
if es_consulta:
|
895
|
+
rectificacion_consulta += 1
|
896
|
+
|
897
|
+
if not rectificacion_consulta == 2:
|
898
|
+
query = res
|
899
|
+
logging.info("[Stage-1][Sintetizer][Thought]: Se sustituye el query por el pensamiento.")
|
900
|
+
else:
|
901
|
+
logging.info("[Stage-1][Sintetizer][Thought]: Se mantiene la consulta inicial.")
|
902
|
+
|
890
903
|
else:
|
891
904
|
saludo = celula_saludos.derive(self.__ai_service, query, max_tkns=10)
|
905
|
+
consulta = celula_consultas.derive(self.__ai_service, res, max_tkns=10)
|
892
906
|
|
893
907
|
user_prompt = f"""
|
894
908
|
user: {query}Texto:
|
@@ -902,13 +916,9 @@ class Dialog(ABC):
|
|
902
916
|
#----------------------------------
|
903
917
|
# Verifica si es una consulta o un caso
|
904
918
|
caso = celula_casos.derive(self.__ai_service, query, max_tkns=10)
|
905
|
-
consulta = celula_consultas.derive(self.__ai_service, query, max_tkns=10)
|
906
|
-
# Verifica si es un saludo, consulta o caso
|
907
|
-
|
908
|
-
#es_saludo = ("SALUDO" in saludo) and ("NO_PREGUNTA" in consulta) and ("NO_QUEJA_DEMANDA" in caso) and not ("NO_SALUDO" in saludo)
|
909
|
-
#es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and ("NO_QUEJA_DEMANDA" in caso) and ("NO_SALUDO" in saludo) and not ("NO_PREGUNTA" in consulta)
|
910
|
-
#es_caso = ("QUEJA_DEMANDA" in caso) and ("NO_PREGUNTA" in consulta) and ("NO_SALUDO" in saludo) and not ("NO_QUEJA_DEMANDA" in caso)
|
911
919
|
|
920
|
+
|
921
|
+
# Verifica si es un saludo, consulta o caso
|
912
922
|
es_saludo = ("SALUDO" in saludo) and not ("NO_SALUDO" in saludo)
|
913
923
|
es_consulta = ("PREGUNTA_O_SOLICITUD" in consulta) and not ("NO_PREGUNTA" in consulta)
|
914
924
|
es_caso = ("QUEJA_DEMANDA" in caso) and not ("NO_QUEJA_DEMANDA" in caso)
|
@@ -988,18 +998,27 @@ class Dialog(ABC):
|
|
988
998
|
res = msg
|
989
999
|
ambiguedad = False
|
990
1000
|
|
991
|
-
if ambiguedad:
|
1001
|
+
if ambiguedad:
|
992
1002
|
logging.info("[Stage-1]: Respuesta con ambiguedad")
|
993
1003
|
self.notify(session_id, "identificando ambiguedad...")
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1004
|
+
|
1005
|
+
aclaracion_fired = False
|
1006
|
+
for message in messages:
|
1007
|
+
if not message['user'] and '¿Desea que le ayude con una consulta o una demanda?' in message['text']:
|
1008
|
+
aclaracion_fired = True
|
1009
|
+
break
|
1010
|
+
|
1011
|
+
if aclaracion_fired:
|
1012
|
+
logging.info("\n\n\n--------------ANALIZER------------------")
|
1013
|
+
logging.info("\n%s", json.dumps(self.__analaizer_work_memory, indent=4))
|
1014
|
+
logging.info("------------------------------------------\n\n\n")
|
1015
|
+
res = self.__ai_service.generate(self.__analaizer_work_memory, max_tokens=50)
|
1016
|
+
logging.info(f"[Stage-1][Thought]: {res}")
|
1017
|
+
self.__analaizer_work_memory.append({"role": "assistant", "content": res})
|
1018
|
+
self.__sintetizer_work_memory.append({"role": "assistant", "content": res})
|
1019
|
+
else:
|
1020
|
+
res = "¿Desea que le ayude con una consulta o una demanda?"
|
1021
|
+
|
1003
1022
|
return dicriminador, res
|
1004
1023
|
|
1005
1024
|
def get_node(self, performative):
|
@@ -1413,14 +1432,14 @@ class Dialog(ABC):
|
|
1413
1432
|
if not node.is_terminal:
|
1414
1433
|
# Verifica recursion
|
1415
1434
|
if not self.chek_user_interaction(node.children):
|
1416
|
-
if self.__visited_nodes > 3:
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1435
|
+
#if self.__visited_nodes > 3:
|
1436
|
+
# self.__visited_nodes = 0
|
1437
|
+
# logging.info(f"[Inferencia]:[Recursion]: Deep limit")
|
1438
|
+
# logging.info(f"------------RESET---------------")
|
1439
|
+
# self.reset()
|
1440
|
+
# self.notify(session['session_id'], "STOP")
|
1441
|
+
# res = DialogState.ERROR
|
1442
|
+
# return "Web", DialogState.START, res, "Web"
|
1424
1443
|
logging.info(f"[Inferencia]:[Recursion]:[Performativa]: {node.performative}")
|
1425
1444
|
self.notify(session['session_id'], "efectuando inferencia en profundidad")
|
1426
1445
|
#return self.do_transition(session, owner, node, query)
|