pbesa 4.0.3__tar.gz → 4.0.5__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.3 → pbesa-4.0.5}/PKG-INFO +2 -3
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/cognitive.py +30 -10
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/collaborative_team.py +32 -3
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/dialog.py +2 -1
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/dispatcher_team.py +15 -2
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/prompts.py +24 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/selected_dispatcher_team.py +1 -1
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa.egg-info/PKG-INFO +2 -3
- {pbesa-4.0.3 → pbesa-4.0.5}/setup.py +1 -1
- {pbesa-4.0.3 → pbesa-4.0.5}/.gitignore +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/LICENSE +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/LICENSE.txt +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/MANIFEST +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/README.md +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/db.sqlite3 +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/pbesa.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/settings.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/urls.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/wsgi.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/asgi.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/pbesa.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/settings.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/urls.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/wsgi.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/manage.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/admin.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/apps.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/models.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/urls.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/views.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/admin.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/apps.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/translatecontroller.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/translatedelegate.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/translateresponse.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/worker/translatetask.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/worker/workeragent.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/migrations/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/migrations/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/models.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/tests.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/urls.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/views.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/__pycache__/countercontroller.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/__pycache__/counterdelegate.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/__pycache__/counterresponse.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/__pycache__/translatecontroller.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/__pycache__/translatedelegate.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/__pycache__/translateresponse.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/countercontroller.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/counterdelegate.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/controller/counterresponse.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/counteragent.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/countertask.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/translatetask.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/workeragent.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/counteragent.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/countertask.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/remote_a.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/remote_b.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/remote_c.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/adapter.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/agent.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/io/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/io/system_file.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/io/tcp_server.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/res/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/res/__pycache__/__init__.cpython-36.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/res/__pycache__/__init__.cpython-37.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/res/__pycache__/__init__.cpython-38.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/res/__pycache__/__init__.cpython-39.pyc +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/res/conf.json +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/util.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/kernel/world.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/mas.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/models.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/remote/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/remote/adm_listener.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/remote/adm_listener_handler.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/remote/exceptions.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/remote/remote_adm.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/remote/remote_adm_handler.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/__init__.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/delegator.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/delegator_team.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/templates.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa/social/worker.py +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa.egg-info/SOURCES.txt +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa.egg-info/dependency_links.txt +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa.egg-info/requires.txt +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/pbesa.egg-info/top_level.txt +0 -0
- {pbesa-4.0.3 → pbesa-4.0.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: pbesa
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.5
|
4
4
|
License-File: LICENSE
|
5
5
|
License-File: LICENSE.txt
|
6
6
|
Requires-Dist: pymongo==4.6.3
|
@@ -8,4 +8,3 @@ Requires-Dist: requests==2.32.3
|
|
8
8
|
Requires-Dist: azure-ai-projects==1.0.0b6
|
9
9
|
Requires-Dist: azure-ai-inference==1.0.0b9
|
10
10
|
Requires-Dist: azure-identity==1.20.0
|
11
|
-
Dynamic: requires-dist
|
@@ -21,7 +21,7 @@ from typing import List, Optional
|
|
21
21
|
from abc import ABC, abstractmethod
|
22
22
|
from pbesa.models import AIFoundry, AzureInference, GPTService, ServiceProvider
|
23
23
|
from pbesa.social.dialog import DialogState, imprimir_grafo, recorrer_interacciones, extraer_diccionario_nodos, ActionNode, DeclarativeNode#, TerminalNode
|
24
|
-
from pbesa.social.prompts import CLASSIFICATION_PROMPT, DERIVE_PROMPT
|
24
|
+
from pbesa.social.prompts import CLASSIFICATION_PROMPT, DERIVE_PROMPT, RECOVERY_PROMPT
|
25
25
|
# --------------------------------------------------------
|
26
26
|
# Define DTOs
|
27
27
|
# --------------------------------------------------------
|
@@ -466,6 +466,8 @@ class Dialog(ABC):
|
|
466
466
|
# Define deep
|
467
467
|
self.__deep_count = 0
|
468
468
|
self.__deep_limit = 3
|
469
|
+
# Define knowledge
|
470
|
+
self.knowledge = None
|
469
471
|
|
470
472
|
def setup_world(self):
|
471
473
|
""" Set up model method """
|
@@ -473,10 +475,14 @@ class Dialog(ABC):
|
|
473
475
|
instrucciones = f"Instrucciones:\n{self.__role.description}\n Tu tarea: {self.__role.objective}\n"
|
474
476
|
requisitos = f"Requisitos:\n{self.__role.arquetype}\n"
|
475
477
|
ejemplo = f"Ejemplo:\n{self.__role.example}\n"
|
478
|
+
if self.knowledge:
|
479
|
+
conocimiento = f"Conocimiento:\n{self.knowledge}\n"
|
476
480
|
continuar = "Ahora, evalúa el siguiente caso:\n"
|
477
481
|
self.__work_memory.append({"role": "user", "content": instrucciones})
|
478
482
|
self.__work_memory.append({"role": "user", "content": requisitos})
|
479
483
|
self.__work_memory.append({"role": "user", "content": ejemplo})
|
484
|
+
if self.knowledge:
|
485
|
+
self.__work_memory.append({"role": "user", "content": conocimiento})
|
480
486
|
self.__work_memory.append({"role": "user", "content": continuar})
|
481
487
|
|
482
488
|
def get_model(self) -> any:
|
@@ -512,29 +518,29 @@ class Dialog(ABC):
|
|
512
518
|
self.setup_world()
|
513
519
|
interations = agent_metadata.role.interactions
|
514
520
|
grafo = recorrer_interacciones(interations)
|
515
|
-
logging.
|
521
|
+
logging.debug("")
|
516
522
|
# Si el grafo es una lista de nodos, lo imprimimos cada uno
|
517
523
|
if isinstance(grafo, list):
|
518
524
|
for nodo in grafo:
|
519
525
|
imprimir_grafo(nodo)
|
520
526
|
else:
|
521
527
|
imprimir_grafo(grafo)
|
522
|
-
logging.
|
528
|
+
logging.debug("")
|
523
529
|
# Ejemplo de uso:
|
524
530
|
self.__dfa = extraer_diccionario_nodos(grafo)
|
525
531
|
# Mostrar el diccionario
|
526
532
|
for clave, valor in self.__dfa.items():
|
527
|
-
logging.
|
528
|
-
logging.
|
533
|
+
logging.debug(f"{clave}: {valor.text}")
|
534
|
+
logging.debug("")
|
529
535
|
iniciadores = []
|
530
536
|
for item in interations:
|
531
537
|
for clave, valor in self.__dfa.items():
|
532
538
|
if valor.text == item['texto']:
|
533
539
|
iniciadores.append(valor)
|
534
|
-
logging.
|
540
|
+
logging.debug("Iniciadores:")
|
535
541
|
for iniciador in iniciadores:
|
536
|
-
logging.
|
537
|
-
logging.
|
542
|
+
logging.debug(iniciador.text)
|
543
|
+
logging.debug("")
|
538
544
|
# Set dialog state
|
539
545
|
self.__dfa['start'] = iniciadores
|
540
546
|
|
@@ -602,7 +608,11 @@ class Dialog(ABC):
|
|
602
608
|
if not dialog_state in self.__dfa:
|
603
609
|
logging.warning(f"------------Performativa no existe---------------")
|
604
610
|
self.reset()
|
605
|
-
|
611
|
+
prompt = RECOVERY_PROMPT % query
|
612
|
+
temp_work_memory = [{"role": "user", "content": query}]
|
613
|
+
res = self.__ai_service.generate(temp_work_memory)
|
614
|
+
res = self.get_text(res)
|
615
|
+
return "Web", DialogState.START, res, "Web"
|
606
616
|
|
607
617
|
node = self.__dfa[dialog_state]
|
608
618
|
if not isinstance(node, list):
|
@@ -721,7 +731,10 @@ class Dialog(ABC):
|
|
721
731
|
self.__work_memory.append({"role": "user", "content": node.text})
|
722
732
|
logging.info(f"-> node team -> envia: {query}")
|
723
733
|
text = self.team_inquiry(node.team, query, node.tool, False)
|
724
|
-
|
734
|
+
logging.info(f"-> node team -> text: {text}")
|
735
|
+
if text:
|
736
|
+
logging.info(f"-> Adicion WM node team -> text: {text}")
|
737
|
+
self.__work_memory.append({"role": "system", "content": text})
|
725
738
|
self.__deep_count += 1
|
726
739
|
if self.__deep_count < self.__deep_limit:
|
727
740
|
return self.transition(owner, node.performative, text, True)
|
@@ -765,3 +778,10 @@ class Dialog(ABC):
|
|
765
778
|
|
766
779
|
logging.info(f"$$$> new_owner: {owner} new_dialog_state: {new_dialog_state}")
|
767
780
|
return owner, new_dialog_state, res, owner
|
781
|
+
|
782
|
+
def set_knowledge(self, knowledge) -> str:
|
783
|
+
""" Set knowledge method
|
784
|
+
:param query: query
|
785
|
+
:return: str
|
786
|
+
"""
|
787
|
+
self.knowledge = knowledge
|
@@ -33,6 +33,7 @@ clear and unified results.
|
|
33
33
|
# Define resources
|
34
34
|
# --------------------------------------------------------
|
35
35
|
|
36
|
+
import logging
|
36
37
|
from threading import Timer
|
37
38
|
from abc import abstractmethod
|
38
39
|
from ..kernel.agent import Agent
|
@@ -94,7 +95,7 @@ class DelegateAction(Action):
|
|
94
95
|
self.agent.reset()
|
95
96
|
self.delegate(data['dto'])
|
96
97
|
|
97
|
-
def
|
98
|
+
def active_timeout(self, time:int) -> None:
|
98
99
|
""" Active timeout
|
99
100
|
@param time: Time
|
100
101
|
"""
|
@@ -109,6 +110,27 @@ class DelegateAction(Action):
|
|
109
110
|
self.adm.send_event(ag, 'task', data)
|
110
111
|
else:
|
111
112
|
raise CollaborativeException('[Warn, toAssign]: The number of data packets exceeds the number of agents')
|
113
|
+
|
114
|
+
def get_list_agents(self) -> list:
|
115
|
+
""" Get list of agents
|
116
|
+
@return: List of agents
|
117
|
+
"""
|
118
|
+
return self.agent.get_free_list()
|
119
|
+
|
120
|
+
def to_individual_assign(self, ag_id, data:any) -> bool:
|
121
|
+
""" Assign data to an agent
|
122
|
+
@param data: Data
|
123
|
+
"""
|
124
|
+
if len(self.agent.get_free_list()) > 0:
|
125
|
+
index = self.agent.get_free_list().index(ag_id)
|
126
|
+
if index >= 0:
|
127
|
+
self.agent.get_free_list().pop(index)
|
128
|
+
self.adm.send_event(ag_id, 'task', data)
|
129
|
+
else:
|
130
|
+
return False
|
131
|
+
else:
|
132
|
+
raise CollaborativeException('[Warn, toAssign]: The number of data packets exceeds the number of agents')
|
133
|
+
return True
|
112
134
|
|
113
135
|
@abstractmethod
|
114
136
|
def delegate(self, data:any) -> None:
|
@@ -129,17 +151,24 @@ class ResponseAction(Action):
|
|
129
151
|
@param data: Event data
|
130
152
|
"""
|
131
153
|
if 'timeout' == data:
|
154
|
+
logging.info('Stopping timeout')
|
132
155
|
results = {}
|
133
156
|
for key, res in self.agent.get_check_dict().items():
|
134
157
|
results[key] = res
|
135
158
|
self.end_of_process(results, True)
|
136
159
|
else:
|
160
|
+
logging.info("Response received")
|
161
|
+
logging.info(data)
|
137
162
|
result = 'None'
|
138
163
|
agentID = data['source']
|
139
|
-
if data['result']:
|
164
|
+
if 'result' in data and data['result']:
|
140
165
|
result = data['result']
|
141
|
-
|
166
|
+
self.agent.get_check_dict()[agentID] = result
|
167
|
+
else:
|
168
|
+
logging.warning(f"No result received for agent {agentID}")
|
169
|
+
self.agent.get_check_dict()[agentID] = "None"
|
142
170
|
if self.check():
|
171
|
+
logging.info("All agents have responded")
|
143
172
|
results = {}
|
144
173
|
for key, res in self.agent.get_check_dict().items():
|
145
174
|
results[key] = res
|
@@ -13,6 +13,7 @@
|
|
13
13
|
# Define resources
|
14
14
|
# --------------------------------------------------------
|
15
15
|
|
16
|
+
import logging
|
16
17
|
import datetime
|
17
18
|
import traceback
|
18
19
|
from .templates import AFIRMATIVE_RESPONSE, GET_DATE
|
@@ -199,6 +200,6 @@ def imprimir_grafo(nodo, nivel=0):
|
|
199
200
|
indent = " " * nivel
|
200
201
|
# Se muestra la clase del nodo y algunos atributos
|
201
202
|
clase = nodo.__class__.__name__
|
202
|
-
|
203
|
+
logging.debug(f"{indent}{clase} (performative: {nodo.performative}, text/action: {nodo.text if hasattr(nodo, 'text') and nodo.text is not None else getattr(nodo, 'action', None)}, terminal: {nodo.is_terminal})")
|
203
204
|
for child in nodo.children:
|
204
205
|
imprimir_grafo(child, nivel + 1)
|
@@ -130,7 +130,7 @@ class ResponseAction(Action):
|
|
130
130
|
class DispatcherController(Agent):
|
131
131
|
""" Represents the agent that delegates the execution of actions to other agents """
|
132
132
|
|
133
|
-
def __init__(self, agent_id:str, buffer_size:int, pool_size:int) -> None:
|
133
|
+
def __init__(self, agent_id:str, buffer_size:int, pool_size:int, delegate=None) -> None:
|
134
134
|
""" Constructor
|
135
135
|
@param agent_id: Agent ID
|
136
136
|
@param type: Pool type
|
@@ -139,15 +139,20 @@ class DispatcherController(Agent):
|
|
139
139
|
"""
|
140
140
|
self.__buffer_size = buffer_size
|
141
141
|
self.__request_dict = {}
|
142
|
+
self.__pool_size = pool_size
|
142
143
|
self.__free_queue = Queue(pool_size)
|
143
144
|
self.__agent_list = []
|
145
|
+
self.__delegate = delegate
|
144
146
|
super().__init__(agent_id)
|
145
147
|
|
146
148
|
def setup(self) -> None:
|
147
149
|
""" Set up method """
|
148
150
|
self._social = True
|
149
151
|
self.add_behavior('Delegate')
|
150
|
-
self.
|
152
|
+
if self.__delegate:
|
153
|
+
self.bind_action('Delegate', 'delegate', self.__delegate())
|
154
|
+
else:
|
155
|
+
self.bind_action('Delegate', 'delegate', Delegate())
|
151
156
|
self.add_behavior('Notify')
|
152
157
|
self.bind_action('Notify', 'notify', NotifyFreeAction())
|
153
158
|
self.add_behavior('Response')
|
@@ -161,6 +166,8 @@ class DispatcherController(Agent):
|
|
161
166
|
self.__agent_list.append(agent.id)
|
162
167
|
agent.set_controller(self.id)
|
163
168
|
agent.set_controller_type('POOL')
|
169
|
+
if len(self.__agent_list) > self.__pool_size:
|
170
|
+
raise DispatcherException('[Warn, suscribeAgent]: The pool is full')
|
164
171
|
self.__free_queue.put(agent.id)
|
165
172
|
actions = agent.get_actions()
|
166
173
|
for action in actions:
|
@@ -190,6 +197,12 @@ class DispatcherController(Agent):
|
|
190
197
|
""" Builds the agent """
|
191
198
|
pass
|
192
199
|
|
200
|
+
def get_agent_list(self) -> list:
|
201
|
+
""" Gets the agent list
|
202
|
+
@return: Agent list
|
203
|
+
"""
|
204
|
+
return self.__agent_list
|
205
|
+
|
193
206
|
def get_free_queue(self) -> Queue:
|
194
207
|
""" Gets the free queue
|
195
208
|
@return: Free queue
|
@@ -36,5 +36,29 @@ Ahora, evalúa el siguiente caso:
|
|
36
36
|
|
37
37
|
Texto: "%s"
|
38
38
|
|
39
|
+
Respuesta:
|
40
|
+
"""
|
41
|
+
|
42
|
+
RECOVERY_PROMPT = """
|
43
|
+
Instrucciones:
|
44
|
+
|
45
|
+
Eres un agente especializado en parafrasear. Tu tarea es analizar un texto principal y parafrasearlo generando opciones al usuario.
|
46
|
+
|
47
|
+
Requisitos:
|
48
|
+
|
49
|
+
- No incluyas explicaciones, razonamientos ni texto adicional.
|
50
|
+
- Genera opciones en lenguaje natural sin involucrar números o listas.
|
51
|
+
- Si no logras parafrasear el texto principal, responde solicitando más información.
|
52
|
+
|
53
|
+
Ejemplo:
|
54
|
+
|
55
|
+
Texto: "Hola mi caso esta relacionado con la Superfinanciera"
|
56
|
+
|
57
|
+
Respuesta: Perdona, tu solicitud ¿Es sobre la Superintendencia Financiera de Colombia o sobre la Superintendencia de Sociedades?
|
58
|
+
|
59
|
+
Ahora, evalúa el siguiente caso:
|
60
|
+
|
61
|
+
Texto: "%s"
|
62
|
+
|
39
63
|
Respuesta:
|
40
64
|
"""
|
@@ -104,7 +104,7 @@ class DelegateAction(Action):
|
|
104
104
|
self.__rewier[ag] = 0
|
105
105
|
exit = True
|
106
106
|
else:
|
107
|
-
logging.info('The agent is not
|
107
|
+
logging.info('The agent is not operational')
|
108
108
|
self.adm.send_event(agent_obj.get_controller(), 'notify', ag)
|
109
109
|
if ag in self.__rewier:
|
110
110
|
self.__rewier[ag] = self.__rewier[ag] + 1
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: pbesa
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.5
|
4
4
|
License-File: LICENSE
|
5
5
|
License-File: LICENSE.txt
|
6
6
|
Requires-Dist: pymongo==4.6.3
|
@@ -8,4 +8,3 @@ Requires-Dist: requests==2.32.3
|
|
8
8
|
Requires-Dist: azure-ai-projects==1.0.0b6
|
9
9
|
Requires-Dist: azure-ai-inference==1.0.0b9
|
10
10
|
Requires-Dist: azure-identity==1.20.0
|
11
|
-
Dynamic: requires-dist
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/pbesa.cpython-36.pyc
RENAMED
File without changes
|
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/urls.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/helloworld/__pycache__/wsgi.cpython-36.pyc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/__init__.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/admin.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/apps.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/models.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/urls.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/__pycache__/views.cpython-36.pyc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/translatedelegate.py
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/controller/translateresponse.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/django/helloworld/translate/mas/worker/translatetask.py
RENAMED
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
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/counteragent.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/countertask.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/translatetask.cpython-36.pyc
RENAMED
File without changes
|
{pbesa-4.0.3 → pbesa-4.0.5}/examples/remote/mas/worker/__pycache__/workeragent.cpython-36.pyc
RENAMED
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
|
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
|