pbesa 4.0.24__tar.gz → 4.0.26__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.
Files changed (115) hide show
  1. {pbesa-4.0.24 → pbesa-4.0.26}/PKG-INFO +1 -1
  2. pbesa-4.0.26/pbesa/celulas/celula_pertinencia.py +58 -0
  3. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/cognitive.py +30 -2
  4. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa.egg-info/PKG-INFO +1 -1
  5. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa.egg-info/SOURCES.txt +1 -0
  6. {pbesa-4.0.24 → pbesa-4.0.26}/setup.py +1 -1
  7. {pbesa-4.0.24 → pbesa-4.0.26}/.gitignore +0 -0
  8. {pbesa-4.0.24 → pbesa-4.0.26}/LICENSE +0 -0
  9. {pbesa-4.0.24 → pbesa-4.0.26}/LICENSE.txt +0 -0
  10. {pbesa-4.0.24 → pbesa-4.0.26}/MANIFEST +0 -0
  11. {pbesa-4.0.24 → pbesa-4.0.26}/README.md +0 -0
  12. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/db.sqlite3 +0 -0
  13. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/__init__.py +0 -0
  14. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/__pycache__/__init__.cpython-36.pyc +0 -0
  15. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/__pycache__/pbesa.cpython-36.pyc +0 -0
  16. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/__pycache__/settings.cpython-36.pyc +0 -0
  17. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/__pycache__/urls.cpython-36.pyc +0 -0
  18. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/__pycache__/wsgi.cpython-36.pyc +0 -0
  19. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/asgi.py +0 -0
  20. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/pbesa.py +0 -0
  21. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/settings.py +0 -0
  22. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/urls.py +0 -0
  23. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/helloworld/wsgi.py +0 -0
  24. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/manage.py +0 -0
  25. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__init__.py +0 -0
  26. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__pycache__/__init__.cpython-36.pyc +0 -0
  27. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__pycache__/admin.cpython-36.pyc +0 -0
  28. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__pycache__/apps.cpython-36.pyc +0 -0
  29. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__pycache__/models.cpython-36.pyc +0 -0
  30. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__pycache__/urls.cpython-36.pyc +0 -0
  31. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/__pycache__/views.cpython-36.pyc +0 -0
  32. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/admin.py +0 -0
  33. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/apps.py +0 -0
  34. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
  35. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
  36. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
  37. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/controller/translatecontroller.py +0 -0
  38. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/controller/translatedelegate.py +0 -0
  39. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/controller/translateresponse.py +0 -0
  40. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
  41. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
  42. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/worker/translatetask.py +0 -0
  43. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/mas/worker/workeragent.py +0 -0
  44. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/migrations/__init__.py +0 -0
  45. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/migrations/__pycache__/__init__.cpython-36.pyc +0 -0
  46. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/models.py +0 -0
  47. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/tests.py +0 -0
  48. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/urls.py +0 -0
  49. {pbesa-4.0.24 → pbesa-4.0.26}/examples/django/helloworld/translate/views.py +0 -0
  50. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/__pycache__/countercontroller.cpython-36.pyc +0 -0
  51. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/__pycache__/counterdelegate.cpython-36.pyc +0 -0
  52. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/__pycache__/counterresponse.cpython-36.pyc +0 -0
  53. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
  54. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
  55. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
  56. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/countercontroller.py +0 -0
  57. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/counterdelegate.py +0 -0
  58. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/controller/counterresponse.py +0 -0
  59. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/worker/__pycache__/counteragent.cpython-36.pyc +0 -0
  60. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/worker/__pycache__/countertask.cpython-36.pyc +0 -0
  61. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
  62. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
  63. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/worker/counteragent.py +0 -0
  64. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/mas/worker/countertask.py +0 -0
  65. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/remote_a.py +0 -0
  66. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/remote_b.py +0 -0
  67. {pbesa-4.0.24 → pbesa-4.0.26}/examples/remote/remote_c.py +0 -0
  68. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/__init__.py +0 -0
  69. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/__init__.py +0 -0
  70. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_casos.py +0 -0
  71. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_consultas.py +0 -0
  72. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_datos_identificables.py +0 -0
  73. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_expertos.py +0 -0
  74. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_generar_documento.py +0 -0
  75. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_preguntas.py +0 -0
  76. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_saludos.py +0 -0
  77. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/celula_simulador_ciudadano.py +0 -0
  78. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/data_extraction_cel.py +0 -0
  79. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/celulas/web.py +0 -0
  80. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/__init__.py +0 -0
  81. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/adapter.py +0 -0
  82. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/agent.py +0 -0
  83. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/io/__init__.py +0 -0
  84. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/io/system_file.py +0 -0
  85. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/io/tcp_server.py +0 -0
  86. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/res/__init__.py +0 -0
  87. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/res/__pycache__/__init__.cpython-36.pyc +0 -0
  88. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/res/__pycache__/__init__.cpython-37.pyc +0 -0
  89. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/res/__pycache__/__init__.cpython-38.pyc +0 -0
  90. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/res/__pycache__/__init__.cpython-39.pyc +0 -0
  91. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/res/conf.json +0 -0
  92. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/util.py +0 -0
  93. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/kernel/world.py +0 -0
  94. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/mas.py +0 -0
  95. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/models.py +0 -0
  96. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/remote/__init__.py +0 -0
  97. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/remote/adm_listener.py +0 -0
  98. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/remote/adm_listener_handler.py +0 -0
  99. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/remote/exceptions.py +0 -0
  100. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/remote/remote_adm.py +0 -0
  101. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/remote/remote_adm_handler.py +0 -0
  102. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/__init__.py +0 -0
  103. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/collaborative_team.py +0 -0
  104. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/delegator.py +0 -0
  105. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/delegator_team.py +0 -0
  106. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/dialog.py +0 -0
  107. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/dispatcher_team.py +0 -0
  108. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/prompts.py +0 -0
  109. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/selected_dispatcher_team.py +0 -0
  110. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/templates.py +0 -0
  111. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa/social/worker.py +0 -0
  112. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa.egg-info/dependency_links.txt +0 -0
  113. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa.egg-info/requires.txt +0 -0
  114. {pbesa-4.0.24 → pbesa-4.0.26}/pbesa.egg-info/top_level.txt +0 -0
  115. {pbesa-4.0.24 → pbesa-4.0.26}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pbesa
3
- Version: 4.0.24
3
+ Version: 4.0.26
4
4
  License-File: LICENSE
5
5
  License-File: LICENSE.txt
6
6
  Requires-Dist: pymongo>=4.6.3
@@ -0,0 +1,58 @@
1
+ import logging
2
+
3
+ SYSTEM_PROMPT = """
4
+
5
+ Tu única tarea es clasificar el siguiente texto en una de dos categorías: `VEROSIMIL` o `ABSURDO`.
6
+
7
+ - **VEROSIMIL**: Asigna esta etiqueta si la situación descrita es lógicamente posible en el mundo real. No importa si la queja es tonta, extraña o legalmente débil. Si involucra sujetos y acciones que pueden existir y ocurrir, es verosímil.
8
+ - **ABSURDO**: Asigna esta etiqueta si la situación se basa en fantasía, viola las leyes de la física o la lógica, o aplica un concepto a un sujeto fundamentalmente incorrecto (ej. derechos humanos a un animal, acciones legales a un objeto inanimado).
9
+
10
+ **Regla clave para evitar la inversión:** La clasificación es sobre la **posibilidad lógica**, no sobre si el tema corresponde a la SIC, DIMAR, SNS, etc.
11
+ - Un caso sobre la SIC que es imposible -> `ABSURDO`.
12
+ - Un caso que NO es de la SIC pero es posible (ej. "el perro del vecino ladra") -> `VEROSIMIL`.
13
+
14
+ **Ejemplos:**
15
+
16
+ - Texto: "Quiero entablar una demanda ante la SNS porque mi EPS no me da medicamentos para mi Gato."
17
+ - Clasificación: **ABSURDO**
18
+
19
+ - Texto: "No puedo entrar a mi cuenta de Justifacil, olvidé la contraseña."
20
+ - Clasificación: **VEROSIMIL**
21
+
22
+ - Texto: "Quiero demandar al Banco porque no me genera un préstamo ya que soy un extraterrestre."
23
+ - Clasificación: **ABSURDO**
24
+
25
+ - Texto: "Quiero demandar a una empresa ante la SIC porque su logo es feo."
26
+ - Clasificación: **VEROSIMIL** (Es una queja posible, aunque subjetiva y probablemente sin futuro legal).
27
+
28
+ - Texto: "El perro de mi vecino ladra toda la noche y quiero poner una queja."
29
+ - Clasificación: **VEROSIMIL** (Es un problema real y posible, aunque no sea competencia de las entidades usuales).
30
+
31
+ - Texto: "Quiero demandar a la luna por seguirme a casa, ¿me ayuda la Dirección de Derecho de Autor?"
32
+ - Clasificación: **ABSURDO**
33
+
34
+ Responde únicamente con `VEROSIMIL` o `ABSURDO`.
35
+ """
36
+
37
+ # Efectua la inferencia del modelo.
38
+ def derive(service, text, max_tkns=4096) -> any:
39
+ try:
40
+ logging.info(f"Procesando: {text}")
41
+ tmp_work_memory = []
42
+ user_prompt = """
43
+ Texto: "%s"
44
+
45
+ Clasificación:
46
+ """ % text
47
+ tmp_work_memory.append({"role": "system", "content": SYSTEM_PROMPT})
48
+ tmp_work_memory.append({"role": "user", "content": user_prompt})
49
+ res = service.generate(tmp_work_memory, max_tokens=max_tkns)
50
+ logging.info(f"[Celula][Saludos][Respuesta]: {res}")
51
+ if not res or res == "":
52
+ res = text
53
+ logging.warning(f"[Celula][Saludos]: No obtener una respuesta.")
54
+ return res
55
+ except Exception as e:
56
+ logging.error(f"[Celula][Saludos]: Error al procesar: {text}")
57
+ logging.error(e)
58
+ return None
@@ -27,7 +27,7 @@ from pbesa.social.dialog import (
27
27
  DialogState, imprimir_grafo, recorrer_interacciones, extraer_diccionario_nodos,
28
28
  ActionNode, DeclarativeNode, GotoNode)
29
29
  from .celulas import (celula_casos, celula_consultas, celula_saludos, celula_datos_identificables,
30
- celula_generar_documento, celula_expertos)
30
+ celula_generar_documento, celula_expertos, celula_pertinencia)
31
31
  from pbesa.social.prompts import ANALIZER_PROMPT, CLASSIFICATION_PROMPT, DERIVE_PROMPT, RECOVERY_PROMPT, ADAPT_PROMPT, SINTETIZER_PROMPT
32
32
 
33
33
  # --------------------------------------------------------
@@ -901,6 +901,8 @@ class Dialog(ABC):
901
901
  eva += 1 if es_consulta else 0
902
902
  eva += 1 if es_caso else 0
903
903
 
904
+ msg = "Lo lamento, no puedo ayudarle con su consulta. Dado que no está relacionada con los servicios que presta Justifacil."
905
+
904
906
  # Verifica los casos
905
907
  if eva > 0 and eva < 3:
906
908
  logging.info("[Stage-1]: Discriminador encontrado")
@@ -910,20 +912,46 @@ class Dialog(ABC):
910
912
  dicriminador = "saluda"
911
913
  elif es_consulta and not es_saludo and not es_caso:
912
914
  dicriminador = "consulta"
915
+ per_res = celula_pertinencia.derive(self.__ai_service, query, max_tkns=10)
916
+ if per_res and not per_res == "":
917
+ if "NO_RELACIONADO" in per_res:
918
+ dicriminador = None
919
+ res = msg
913
920
  elif es_caso and not es_saludo and not es_consulta:
914
921
  dicriminador = "caso"
922
+ per_res = celula_pertinencia.derive(self.__ai_service, query, max_tkns=10)
923
+ if per_res and not per_res == "":
924
+ if "NO_RELACIONADO" in per_res:
925
+ dicriminador = None
926
+ res = msg
915
927
 
916
928
  # Casos ambiguos con saludo
917
929
  elif es_saludo and es_consulta and not es_caso:
918
930
  dicriminador = "consulta"
931
+ per_res = celula_pertinencia.derive(self.__ai_service, query, max_tkns=10)
932
+ if per_res and not per_res == "":
933
+ if "NO_RELACIONADO" in per_res:
934
+ dicriminador = None
935
+ res = msg
919
936
  elif es_saludo and es_caso and not es_consulta:
920
937
  dicriminador = "caso"
938
+ per_res = celula_pertinencia.derive(self.__ai_service, query, max_tkns=10)
939
+ if per_res and not per_res == "":
940
+ if "NO_RELACIONADO" in per_res:
941
+ dicriminador = None
942
+ res = msg
921
943
 
922
944
  # Casos ambiguos con consulta y caso
923
945
  elif es_consulta and es_caso and not es_saludo:
924
- res = "Lo lamento, ¿Desea que le ayude con una Consulta o una Demanda?"
946
+ res = "Lo lamento, puede confirmar si ¿Desea que le ayude con una Consulta o una Demanda?"
925
947
  else:
926
948
  ambiguedad = True
949
+ per_res = celula_pertinencia.derive(self.__ai_service, query, max_tkns=10)
950
+ if per_res and not per_res == "":
951
+ if "NO_RELACIONADO" in per_res:
952
+ dicriminador = None
953
+ res = msg
954
+ ambiguedad = False
927
955
 
928
956
  if dicriminador:
929
957
  self.notify(session_id, f"primera fase se identifica: {dicriminador}.")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pbesa
3
- Version: 4.0.24
3
+ Version: 4.0.26
4
4
  License-File: LICENSE
5
5
  License-File: LICENSE.txt
6
6
  Requires-Dist: pymongo>=4.6.3
@@ -76,6 +76,7 @@ pbesa/celulas/celula_consultas.py
76
76
  pbesa/celulas/celula_datos_identificables.py
77
77
  pbesa/celulas/celula_expertos.py
78
78
  pbesa/celulas/celula_generar_documento.py
79
+ pbesa/celulas/celula_pertinencia.py
79
80
  pbesa/celulas/celula_preguntas.py
80
81
  pbesa/celulas/celula_saludos.py
81
82
  pbesa/celulas/celula_simulador_ciudadano.py
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name='pbesa',
7
- version='4.0.24',
7
+ version='4.0.26',
8
8
  packages=find_packages(),
9
9
  install_requires=[
10
10
  'pymongo>=4.6.3',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes