YmcAI commited on
Commit
cabb2b8
1 Parent(s): 94a6c20

ajoute et implementation de la communication etre Satellite

Browse files
main.py CHANGED
@@ -24,9 +24,11 @@ stellar.register_satellites(shaka)
24
  stellar.register_satellites(edison)
25
  stellar.register_satellites(york)
26
 
27
- response = Stellar.route_communication("Atlas", "York", {"type": "check_resources"})
28
-
29
- results = Stellar.broadcast_message("Atlas", {"type": "check_resources"})
30
 
 
 
 
31
 
 
 
32
  print(results)
 
24
  stellar.register_satellites(edison)
25
  stellar.register_satellites(york)
26
 
 
 
 
27
 
28
+ # Exemple de communication
29
+ response = stellar.route_communication("Shaka", "Atlas", {"type": "monitor_directory", "content": "Suspicious activity detected"})
30
+ print(response)
31
 
32
+ # Exemple de diffusion
33
+ results = stellar.broadcast_message("Shaka", {"type": "ethics_update", "content": "New ethical guidelines"})
34
  print(results)
satellites/atlasSat/atlas.py CHANGED
@@ -127,7 +127,7 @@ class Atlas(VegapunkSatellite):
127
 
128
 
129
 
130
- def proccess_communicatioon(self,sender_name:str,message:Dict[str,Any]) ->Dict[str,Any]:
131
 
132
  if message.get("type") == "task":
133
  task_result = self.process_task(message.get("task"))
@@ -152,4 +152,10 @@ class Atlas(VegapunkSatellite):
152
  return {"status": "Rapport de status généré", "result": result}
153
  elif message.get("type") == "check_changes":
154
  changes = self.check_directory_changes()
155
- return {"status": "Changements vérifiés", "result": changes}
 
 
 
 
 
 
 
127
 
128
 
129
 
130
+ def process_communication(self,sender_name:str,message:Dict[str,Any]) ->Dict[str,Any]:
131
 
132
  if message.get("type") == "task":
133
  task_result = self.process_task(message.get("task"))
 
152
  return {"status": "Rapport de status généré", "result": result}
153
  elif message.get("type") == "check_changes":
154
  changes = self.check_directory_changes()
155
+ return {"status": "Changements vérifiés", "result": changes}
156
+ else:
157
+ return {"status": "Erreur", "result": "Type de tâche inconnu"}
158
+
159
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
160
+ logging.info(f"{self.name} received communication from {sender_name}")
161
+ return self.process_communication(sender_name, message)
satellites/base_satellite.py CHANGED
@@ -74,13 +74,12 @@ class VegapunkSatellite(ABC):
74
  logging.error(f"Erreur lors de la communication avec {satellite.name} : {str(e)}")
75
  return None
76
 
77
- def receive_communication(self, message: Dict[str, Any]) -> Dict[str, Any]:
78
- # Methode pour recevoir une communication d'un autre satellite
79
- logging.info(f"{self.name} a reçu un message : {message}")
80
- return {"status": "Message reçu","from":{self.name}, "details": message}
81
 
82
  @abstractmethod
83
- def proccess_communicatioon(self,sender_name:str,message:Dict[str,Any])->Dict[str,Any]:
84
  """
85
  traite le message recu d'un autre satellite
86
  a implementer dans chaque classe de satellite specifique
 
74
  logging.error(f"Erreur lors de la communication avec {satellite.name} : {str(e)}")
75
  return None
76
 
77
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
78
+ logging.info(f"{self.name} a recu un message de : {sender_name}")
79
+ return self.process_communication(sender_name, message)
 
80
 
81
  @abstractmethod
82
+ def process_communication(self,sender_name:str,message:Dict[str,Any])->Dict[str,Any]:
83
  """
84
  traite le message recu d'un autre satellite
85
  a implementer dans chaque classe de satellite specifique
satellites/edisonSat/edison.py CHANGED
@@ -123,3 +123,26 @@ class Edison(VegapunkSatellite):
123
  def update_from_punkrecord(self) -> None:
124
  self.log_activity("Mise à jour depuis PunkRecord")
125
  # Ici, vous pourriez implémenter la logique pour mettre à jour les API externes ou les paramètres du modèle LLM
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  def update_from_punkrecord(self) -> None:
124
  self.log_activity("Mise à jour depuis PunkRecord")
125
  # Ici, vous pourriez implémenter la logique pour mettre à jour les API externes ou les paramètres du modèle LLM
126
+
127
+
128
+ def process_communication(self,sender_name:str,message:Dict[str,Any])->Dict[str,Any]:
129
+ if message.get("type") == "task":
130
+ task_result = self.process_task(message.get("task"))
131
+ return {"status": "Traitement effectué", "result": task_result}
132
+ elif message.get("type") == "innovation":
133
+ innovation_result = self.generate_innovation(message.get("domain"))
134
+ return {"status": "Traitement effectué", "result": innovation_result}
135
+ elif message.get("type") == "logic_problem":
136
+ logic_result = self.solve_logic_problem(message.get("problem"))
137
+ return {"status": "Traitement effectué", "result": logic_result}
138
+ elif message.get("type") == "data_analysis":
139
+ analysis_result = self.analyze_data(message.get("data"))
140
+ return {"status": "Traitement effectué", "result": analysis_result}
141
+ else:
142
+ return {"status": "Erreur", "result": "Type de tâche inconnu"}
143
+
144
+
145
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
146
+ logging.info(f"{self.name} received communication from {sender_name}")
147
+ return self.process_communication(sender_name, message)
148
+
satellites/lilithSat/lilith.py CHANGED
@@ -14,10 +14,12 @@ class Lilith(VegapunkSatellite):
14
  super().__init__(name="Lilith", specialty=role)
15
  self.idea_categories = ["Technologie", "Art", "Science", "Société", "Environnement"]
16
  self.innovation_levels = ["Incrémentale", "Radicale", "Disruptive"]
17
- self.unconventional_approaches = ["Pensée inversée", "Analogies lointaines", "Combinaison aléatoire","Contraintes extrêmes"]
 
18
  # logging.basicConfig(filename='lilith_log.txt', level=logging.INFO)
19
  self.external_apis = {}
20
  self.logger = get_logger("lilith")
 
21
  def process_task(self, task: Dict[str, Any]) -> Dict[str, Any]:
22
  task_type = task.get("type")
23
  if task_type == "generate_idea":
@@ -114,8 +116,7 @@ class Lilith(VegapunkSatellite):
114
  self.log_activity("Mise à jour depuis PunkRecord")
115
  # Ici, vous pourriez implémenter la logique pour mettre à jour les approches créatives ou les domaines d'innovation
116
 
117
-
118
- def proccess_communicatioon(self,sender_name:str,message:Dict[str,Any]) ->Dict[str,Any]:
119
  if message.get("type") == "task":
120
  task_result = self.process_task(message.get("task"))
121
  return {"status": "Traitement effectué", "result": task_result}
@@ -134,4 +135,9 @@ class Lilith(VegapunkSatellite):
134
  elif message.get("type") == "status_report":
135
  result = self.report_status()
136
  return {"status": "Rapport de status généré", "result": result}
 
 
137
 
 
 
 
 
14
  super().__init__(name="Lilith", specialty=role)
15
  self.idea_categories = ["Technologie", "Art", "Science", "Société", "Environnement"]
16
  self.innovation_levels = ["Incrémentale", "Radicale", "Disruptive"]
17
+ self.unconventional_approaches = ["Pensée inversée", "Analogies lointaines", "Combinaison aléatoire",
18
+ "Contraintes extrêmes"]
19
  # logging.basicConfig(filename='lilith_log.txt', level=logging.INFO)
20
  self.external_apis = {}
21
  self.logger = get_logger("lilith")
22
+
23
  def process_task(self, task: Dict[str, Any]) -> Dict[str, Any]:
24
  task_type = task.get("type")
25
  if task_type == "generate_idea":
 
116
  self.log_activity("Mise à jour depuis PunkRecord")
117
  # Ici, vous pourriez implémenter la logique pour mettre à jour les approches créatives ou les domaines d'innovation
118
 
119
+ def process_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
 
120
  if message.get("type") == "task":
121
  task_result = self.process_task(message.get("task"))
122
  return {"status": "Traitement effectué", "result": task_result}
 
135
  elif message.get("type") == "status_report":
136
  result = self.report_status()
137
  return {"status": "Rapport de status généré", "result": result}
138
+ else:
139
+ return {"status": "Erreur", "result": "Type de tâche inconnu"}
140
 
141
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
142
+ logging.info(f"{self.name} received communication from {sender_name}")
143
+ return self.process_communication(sender_name, message)
satellites/pythagorasSat/pythagoras.py CHANGED
@@ -20,11 +20,11 @@ load_dotenv()
20
 
21
 
22
  # client = OpenAI(os.getenv("LLM_API_KEY"))
23
-
24
- client =OpenAI(
25
- organization="LLM_API_KEY",
26
- )
27
-
28
 
29
  role = "mathématiques, statistiques et analyse de données"
30
  fonction = "Effectuer des calculs complexes et analyser des ensembles de données"
@@ -248,7 +248,7 @@ class Pythagoras(VegapunkSatellite):
248
  return status
249
 
250
 
251
- def proccess_communicatioon(self,sender_name:str,message:Dict[str,Any]) ->Dict[str,Any]:
252
  if message.get("type")== "task":
253
  task_result = self.process_task(message.get("task"))
254
  return {"status": "Traitement effectué", "result": task_result}
@@ -267,3 +267,11 @@ class Pythagoras(VegapunkSatellite):
267
  elif message.get("type") == "update_external_apis":
268
  self.external_apis.update(message.get("apis", {}))
269
  return {"status": "APIs mises à jour", "result": self.external_apis}
 
 
 
 
 
 
 
 
 
20
 
21
 
22
  # client = OpenAI(os.getenv("LLM_API_KEY"))
23
+ #
24
+ # client =OpenAI(
25
+ # organization="LLM_API_KEY",
26
+ # )
27
+ #
28
 
29
  role = "mathématiques, statistiques et analyse de données"
30
  fonction = "Effectuer des calculs complexes et analyser des ensembles de données"
 
248
  return status
249
 
250
 
251
+ def process_communication(self,sender_name:str,message:Dict[str,Any]) ->Dict[str,Any]:
252
  if message.get("type")== "task":
253
  task_result = self.process_task(message.get("task"))
254
  return {"status": "Traitement effectué", "result": task_result}
 
267
  elif message.get("type") == "update_external_apis":
268
  self.external_apis.update(message.get("apis", {}))
269
  return {"status": "APIs mises à jour", "result": self.external_apis}
270
+
271
+ else:
272
+ return {"status": "Erreur", "result": "Type de tâche inconnu"}
273
+
274
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
275
+ logging.info(f"{self.name} received communication from {sender_name}")
276
+ return self.process_communication(sender_name, message)
277
+
satellites/shakaSat/shaka.py CHANGED
@@ -183,23 +183,33 @@ class Shaka(VegapunkSatellite):
183
  self.add_to_knowledge_base("Last_update", "Nouveaux patterns détectés dans les données")
184
  return {"Statut": "Mise à jour effectuée"}
185
 
186
- def proccess_communicatioon(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
187
- # logique a shaka pour traiter le message
188
  if message.get("type") == "ethics_check":
189
- result = self.check_ethics(message.get("content"))
190
- return {"status": "Traitement effectué", "result": result}
191
- elif message.get("type") == "fact_check":
192
- result = self.verify_facts(message.get("claim"))
193
- return {"status": "Traitement effectué", "result": result}
194
- elif message.get("type") == "task":
195
- task_result = self.process_task(message.get("task"))
196
- return {"status": "Traitement effectué", "result": task_result}
197
- elif message.get("type") == "recommendations":
198
- result = self.provide_ethical_recommendations(message.get("content"))
199
- return {"status": "Traitement effectué", "result": result}
200
- elif message.get("type") == "toggle_ethical_filter":
201
- result = self.toggle_ethical_filter()
202
- return {"status": "Traitement effectué", "result": result}
 
 
 
 
 
 
 
 
 
 
203
 
204
 
205
 
 
183
  self.add_to_knowledge_base("Last_update", "Nouveaux patterns détectés dans les données")
184
  return {"Statut": "Mise à jour effectuée"}
185
 
186
+ def process_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
187
+ # Logique spécifique à Shaka pour traiter les communications
188
  if message.get("type") == "ethics_check":
189
+ # Effectuer une vérification éthique
190
+ result = self.perform_ethics_check(message.get("content"))
191
+ return {"status": "completed", "result": result}
192
+ elif message.get("type") == "security_alert":
193
+ # Traiter une alerte de sécurité du point de vue éthique
194
+ analysis = self.analyze_security_alert(message.get("content"))
195
+ return {"status": "analyzed", "ethical_analysis": analysis}
196
+ else:
197
+ return {"status": "unknown_message_type"}
198
+
199
+
200
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
201
+ logging.info(f"{self.name} received communication from {sender_name}")
202
+ return self.process_communication(sender_name, message)
203
+
204
+ def perform_ethics_check(self, content: str) -> str:
205
+ # Implémentez ici la logique de vérification éthique
206
+ # Ceci est un exemple simplifié
207
+ return f"Ethical analysis of: {content}"
208
+
209
+ def analyze_security_alert(self, alert_content: str) -> str:
210
+ # Implémentez ici la logique d'analyse éthique des alertes de sécurité
211
+ # Ceci est un exemple simplifié
212
+ return f"Ethical implications of security alert: {alert_content}"
213
 
214
 
215
 
satellites/yorkSat/york.py CHANGED
@@ -111,3 +111,28 @@ class York(VegapunkSatellite):
111
  def update_from_punkrecord(self) -> None:
112
  self.log_activity("Mise à jour depuis PunkRecord")
113
  # Ici, vous pourriez implémenter la logique pour mettre à jour les seuils de ressources ou les plannings de maintenance
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  def update_from_punkrecord(self) -> None:
112
  self.log_activity("Mise à jour depuis PunkRecord")
113
  # Ici, vous pourriez implémenter la logique pour mettre à jour les seuils de ressources ou les plannings de maintenance
114
+
115
+ def process_communication(self,sender_name:str,message:Dict[str,Any]) ->Dict[str,Any]:
116
+ if message.get("type") == "task":
117
+ task_result = self.process_task(message.get("task"))
118
+ return {"status": "Traitement effectué", "result": task_result}
119
+ elif message.get("type") == "resource_thresholds":
120
+ self.resource_thresholds = message.get("thresholds")
121
+ return {"status": "Seuils de ressources mis à jour", "result": self.resource_thresholds}
122
+ elif message.get("type") == "maintenance_schedule":
123
+ self.maintenance_schedule = message.get("schedule")
124
+ return {"status": "Planning de maintenance mis à jour", "result": self.maintenance_schedule}
125
+ elif message.get("type") == "external_api":
126
+ api_name = message.get("api_name")
127
+ api_config = message.get("api_config")
128
+ self.external_apis[api_name] = api_config
129
+ return {"status": "API externe ajoutée", "result": api_config}
130
+ else:
131
+ return {"status": "Message non reconnu", "result": "Aucune action effectuée"}
132
+
133
+
134
+
135
+ def receive_communication(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Any]:
136
+ logging.info(f"{self.name} received communication from {sender_name}")
137
+ return self.process_communication(sender_name, message)
138
+
stellar/base_stellar.py CHANGED
@@ -16,17 +16,17 @@ class Stellar:
16
 
17
  def route_communication(self, sender_name: str, target_name: str, message: Dict[str, Any]) -> Optional[Dict[str, Any]]:
18
  if sender_name not in self.satellites or target_name not in self.satellites:
19
- logging.error(f"Impossible de router le message de {sender_name} à {target_name}")
20
  return None
21
 
22
- sender_name = self.satellites[sender_name]
23
- target_name = self.satellites[target_name]
24
 
25
- return sender_name.communicate_with_stellar(target_name, message)
26
 
27
  def broadcast_message(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Dict[str, Any]]:
28
  results = {}
29
  for satellite_name, satellite in self.satellites.items():
30
  if satellite_name != sender_name:
31
- results[satellite_name] = satellite.communicate_with_stellar(self.satellites[sender_name], message)
32
  return results
 
16
 
17
  def route_communication(self, sender_name: str, target_name: str, message: Dict[str, Any]) -> Optional[Dict[str, Any]]:
18
  if sender_name not in self.satellites or target_name not in self.satellites:
19
+ logging.error(f"Invalid sender or target: {sender_name} -> {target_name}")
20
  return None
21
 
22
+ sender = self.satellites[sender_name]
23
+ target = self.satellites[target_name]
24
 
25
+ return sender.communicate_with_other_satellite(target, message)
26
 
27
  def broadcast_message(self, sender_name: str, message: Dict[str, Any]) -> Dict[str, Dict[str, Any]]:
28
  results = {}
29
  for satellite_name, satellite in self.satellites.items():
30
  if satellite_name != sender_name:
31
+ results[satellite_name] = self.route_communication(sender_name, satellite_name, message)
32
  return results