Implementing the Base classes for Vegapunk Satelite
Browse files- req.txt +2 -0
- satellites/atlas/agent.py +0 -3
- satellites/{atlas → atlasSat}/__init__.py +0 -0
- satellites/{edison → atlasSat}/agent.py +0 -0
- satellites/atlasSat/atlas.py +17 -0
- satellites/base_satellite.py +20 -33
- satellites/{edison → edisonSat}/__init__.py +0 -0
- satellites/{lilith → edisonSat}/agent.py +0 -0
- satellites/edisonSat/edison.py +21 -0
- satellites/{lilith → lilithSat}/__init__.py +0 -0
- satellites/{pythagoras → lilithSat}/agent.py +0 -0
- satellites/lilithSat/lilith.py +20 -0
- satellites/{pythagoras → pythagorasSat}/__init__.py +0 -0
- satellites/{shaka → pythagorasSat}/agent.py +0 -0
- satellites/pythagorasSat/pythagoras.py +20 -0
- satellites/{shaka → shakaSat}/__init__.py +0 -0
- satellites/{york → shakaSat}/agent.py +0 -0
- satellites/shakaSat/shaka.py +113 -0
- satellites/{york → yorkSat}/__init__.py +0 -0
- satellites/yorkSat/agent.py +0 -0
- satellites/yorkSat/york.py +20 -0
req.txt
CHANGED
@@ -1,3 +1,5 @@
|
|
1 |
langchain>=0.0.100
|
2 |
openai>=0.27.0
|
3 |
python-dotenv>=0.19.0
|
|
|
|
|
|
1 |
langchain>=0.0.100
|
2 |
openai>=0.27.0
|
3 |
python-dotenv>=0.19.0
|
4 |
+
nltk>=3.9.1
|
5 |
+
huggingface-hub>=0.25.0
|
satellites/atlas/agent.py
DELETED
@@ -1,3 +0,0 @@
|
|
1 |
-
from satellites.base_satellite import BaseSatellite
|
2 |
-
|
3 |
-
class Atlas
|
|
|
|
|
|
|
|
satellites/{atlas → atlasSat}/__init__.py
RENAMED
File without changes
|
satellites/{edison → atlasSat}/agent.py
RENAMED
File without changes
|
satellites/atlasSat/atlas.py
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from typing import Dict, Any
|
2 |
+
|
3 |
+
from satellites.base_satellite import VegapunkSatellite
|
4 |
+
|
5 |
+
|
6 |
+
class Atlas(VegapunkSatellite):
|
7 |
+
def __init__(self):
|
8 |
+
super().__init__(name="Atlas", specialty="Execution des tâches")
|
9 |
+
|
10 |
+
def process_task(self, task):
|
11 |
+
pass
|
12 |
+
|
13 |
+
def communicate_with_stellar(self, message: Dict[str, Any]):
|
14 |
+
pass
|
15 |
+
|
16 |
+
def update_from_punkrecord(self):
|
17 |
+
pass
|
satellites/base_satellite.py
CHANGED
@@ -1,39 +1,38 @@
|
|
1 |
-
|
2 |
-
from langchain.prompts import PromptTemplate
|
3 |
-
from langchain.memory import ConversationBufferMemory
|
4 |
|
5 |
from abc import ABC, abstractmethod
|
6 |
-
from typing import
|
7 |
|
8 |
|
9 |
-
class
|
10 |
-
def __init__(self,name:str,specialty:str):
|
11 |
self.name = name
|
12 |
self.specialty = specialty
|
13 |
self.knowledge_base = {}
|
14 |
self.task_queue = []
|
15 |
|
16 |
-
|
17 |
@abstractmethod
|
18 |
-
def process_task(self,task:Dict[str,Any]) -> Dict[str,Any]:
|
19 |
"""
|
20 |
Traite une tache specifique au satellite
|
21 |
a implementer dans chaque classe de satellite specifique
|
22 |
"""
|
23 |
pass
|
24 |
-
|
|
|
25 |
# Ajoute une information a la base de connaissance du satellite
|
26 |
self.knowledge_base[key] = value
|
27 |
-
|
|
|
28 |
# Recupere une information de la base de connaissance du satellite
|
29 |
return self.knowledge_base.get(key)
|
30 |
|
31 |
-
def add_task(self,task:Dict[str,Any]):
|
32 |
# Ajoute une tache a la file d'attente du satellite
|
33 |
self.task_queue.append(task)
|
34 |
|
35 |
-
def get_next_task(self) -> Dict[str,Any]:
|
36 |
-
|
37 |
if self.task_queue:
|
38 |
return self.task_queue.pop(0)
|
39 |
return None
|
@@ -41,38 +40,26 @@ class BaseSatellite(ABC):
|
|
41 |
def report_status(self):
|
42 |
# Rapporte le status du satellite
|
43 |
return {
|
44 |
-
"name":self.name,
|
45 |
-
"specialty":self.specialty,
|
46 |
-
"knowledge_base":self.knowledge_base,
|
47 |
-
"task_queue":self.task_queue,
|
48 |
-
"task_pending":len(self.task_queue),
|
49 |
"Knowledge_base_size": len(self.knowledge_base),
|
50 |
}
|
51 |
|
52 |
@abstractmethod
|
53 |
-
def communicate_with_stellar(self,message:Dict[str,Any]) -> Dict[str,Any]:
|
54 |
"""
|
55 |
Méthode pour communiquer avec le satellite manager (Stellar).
|
56 |
À implémenter dans chaque classe de satellite spécifique.
|
57 |
"""
|
58 |
pass
|
59 |
|
60 |
-
def
|
61 |
# Methode pour mettre a jour de la base de connaissance local du satellite depuis punkrecord
|
62 |
pass
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
#
|
77 |
#
|
78 |
# class Satellite:
|
@@ -101,4 +88,4 @@ class BaseSatellite(ABC):
|
|
101 |
# # Exemple d'utilisation
|
102 |
# shaka = Satellite("Shaka", "an AI specializing in wisdom and general knowledge")
|
103 |
# response = shaka.process("Tell me about the importance of knowledge.")
|
104 |
-
# print(response)
|
|
|
1 |
+
|
|
|
|
|
2 |
|
3 |
from abc import ABC, abstractmethod
|
4 |
+
from typing import Dict, Any
|
5 |
|
6 |
|
7 |
+
class VegapunkSatellite(ABC):
|
8 |
+
def __init__(self, name: str, specialty: str):
|
9 |
self.name = name
|
10 |
self.specialty = specialty
|
11 |
self.knowledge_base = {}
|
12 |
self.task_queue = []
|
13 |
|
|
|
14 |
@abstractmethod
|
15 |
+
def process_task(self, task: Dict[str, Any]) -> Dict[str, Any]:
|
16 |
"""
|
17 |
Traite une tache specifique au satellite
|
18 |
a implementer dans chaque classe de satellite specifique
|
19 |
"""
|
20 |
pass
|
21 |
+
|
22 |
+
def add_to_knowledge_base(self, key: str, value: Any):
|
23 |
# Ajoute une information a la base de connaissance du satellite
|
24 |
self.knowledge_base[key] = value
|
25 |
+
|
26 |
+
def get_from_knowledge_base(self, key: str) -> Any:
|
27 |
# Recupere une information de la base de connaissance du satellite
|
28 |
return self.knowledge_base.get(key)
|
29 |
|
30 |
+
def add_task(self, task: Dict[str, Any]):
|
31 |
# Ajoute une tache a la file d'attente du satellite
|
32 |
self.task_queue.append(task)
|
33 |
|
34 |
+
def get_next_task(self) -> Dict[str, Any]:
|
35 |
+
"""Récupère et supprime la prochaine tâche de la file d'attente."""
|
36 |
if self.task_queue:
|
37 |
return self.task_queue.pop(0)
|
38 |
return None
|
|
|
40 |
def report_status(self):
|
41 |
# Rapporte le status du satellite
|
42 |
return {
|
43 |
+
"name": self.name,
|
44 |
+
"specialty": self.specialty,
|
45 |
+
"knowledge_base": self.knowledge_base,
|
46 |
+
"task_queue": self.task_queue,
|
47 |
+
"task_pending": len(self.task_queue),
|
48 |
"Knowledge_base_size": len(self.knowledge_base),
|
49 |
}
|
50 |
|
51 |
@abstractmethod
|
52 |
+
def communicate_with_stellar(self, message: Dict[str, Any]) -> Dict[str, Any]:
|
53 |
"""
|
54 |
Méthode pour communiquer avec le satellite manager (Stellar).
|
55 |
À implémenter dans chaque classe de satellite spécifique.
|
56 |
"""
|
57 |
pass
|
58 |
|
59 |
+
def update_from_punkrecord(self) -> None:
|
60 |
# Methode pour mettre a jour de la base de connaissance local du satellite depuis punkrecord
|
61 |
pass
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
#
|
64 |
#
|
65 |
# class Satellite:
|
|
|
88 |
# # Exemple d'utilisation
|
89 |
# shaka = Satellite("Shaka", "an AI specializing in wisdom and general knowledge")
|
90 |
# response = shaka.process("Tell me about the importance of knowledge.")
|
91 |
+
# print(response)
|
satellites/{edison → edisonSat}/__init__.py
RENAMED
File without changes
|
satellites/{lilith → edisonSat}/agent.py
RENAMED
File without changes
|
satellites/edisonSat/edison.py
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from satellites.base_satellite import VegapunkSatellite
|
2 |
+
from typing import Dict,Any,List
|
3 |
+
|
4 |
+
role = "Logique,calcule mathematique complexe, innovation"
|
5 |
+
|
6 |
+
# Le cerveau créatif, responsable de l'innovation et des idées novatrices
|
7 |
+
fonction = "genere des nous idee, et resoudre des proble logique ou interagir avec API pour calculer complexe"
|
8 |
+
|
9 |
+
|
10 |
+
class Edison(VegapunkSatellite):
|
11 |
+
def __init__(self):
|
12 |
+
super().__init__(name="Edison", specialty=role)
|
13 |
+
|
14 |
+
def process_task(self, task):
|
15 |
+
pass
|
16 |
+
|
17 |
+
def communicate_with_stellar(self, message: Dict[str, Any]):
|
18 |
+
pass
|
19 |
+
|
20 |
+
def update_from_punkrecord(self):
|
21 |
+
pass
|
satellites/{lilith → lilithSat}/__init__.py
RENAMED
File without changes
|
satellites/{pythagoras → lilithSat}/agent.py
RENAMED
File without changes
|
satellites/lilithSat/lilith.py
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from satellites.base_satellite import VegapunkSatellite
|
2 |
+
|
3 |
+
role = " Explorer des solution non conventionnel , creatove,voir risqué"
|
4 |
+
|
5 |
+
fonction = "Generer des idee novatrices o explorer des solution non conventionnel"
|
6 |
+
|
7 |
+
|
8 |
+
class Lilith(VegapunkSatellite):
|
9 |
+
def __init__(self):
|
10 |
+
super().__init__(name="Lilith", specialty=role)
|
11 |
+
self.resources = {}
|
12 |
+
|
13 |
+
def process_task(self, task):
|
14 |
+
pass
|
15 |
+
|
16 |
+
def communicate_with_stellar(self, message):
|
17 |
+
pass
|
18 |
+
|
19 |
+
def update_from_punkrecord(self):
|
20 |
+
pass
|
satellites/{pythagoras → pythagorasSat}/__init__.py
RENAMED
File without changes
|
satellites/{shaka → pythagorasSat}/agent.py
RENAMED
File without changes
|
satellites/pythagorasSat/pythagoras.py
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from satellites.base_satellite import VegapunkSatellite
|
2 |
+
|
3 |
+
role = "Analyse de données, formuler des recommandation et effectuer des recherche approfondie"
|
4 |
+
|
5 |
+
fonction = "Faire des recher sur des sujetc complexe,extraire ,analyse des information de base de donner ou web et formuler des recommandation"
|
6 |
+
|
7 |
+
|
8 |
+
class Pythagoras(VegapunkSatellite):
|
9 |
+
def __init__(self):
|
10 |
+
super().__init__(name="Pythagoras", specialty="Calculs mathématiques")
|
11 |
+
self.resources = {}
|
12 |
+
|
13 |
+
def process_task(self, task):
|
14 |
+
pass
|
15 |
+
|
16 |
+
def communicate_with_stellar(self, message):
|
17 |
+
pass
|
18 |
+
|
19 |
+
def update_from_punkrecord(self):
|
20 |
+
pass
|
satellites/{shaka → shakaSat}/__init__.py
RENAMED
File without changes
|
satellites/{york → shakaSat}/agent.py
RENAMED
File without changes
|
satellites/shakaSat/shaka.py
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from satellites.base_satellite import VegapunkSatellite
|
2 |
+
from typing import Dict, Any, List
|
3 |
+
import nltk
|
4 |
+
from nltk.tokenize import word_tokenize
|
5 |
+
from nltk.corpus import stopwords
|
6 |
+
import string
|
7 |
+
|
8 |
+
role = "logique, éthique et analyse"
|
9 |
+
fonction = "Vérifier la cohérence des informations et filtrer les informations non éthiques"
|
10 |
+
|
11 |
+
class Shaka(VegapunkSatellite):
|
12 |
+
def __init__(self):
|
13 |
+
super().__init__(name="Shaka", specialty=role)
|
14 |
+
self.nlp = self._initialize_nlp_tools()
|
15 |
+
|
16 |
+
def _initialize_nlp_tools(self):
|
17 |
+
resources = ["stopwords", "punctuation", "averaged_perceptron_tagger", "wordnet", "punkt_tab"]
|
18 |
+
for resource in resources:
|
19 |
+
try:
|
20 |
+
nltk.data.find(f'tokenizers/{resource}')
|
21 |
+
except LookupError:
|
22 |
+
print(f"Téléchargement de la ressource {resource} pour NLTK")
|
23 |
+
nltk.download(resource, quiet=True)
|
24 |
+
|
25 |
+
return {
|
26 |
+
"tokenizer": word_tokenize,
|
27 |
+
"stopwords": set(stopwords.words('french')),
|
28 |
+
"punctuation": set(string.punctuation)
|
29 |
+
}
|
30 |
+
|
31 |
+
def process_task(self, task: Dict[str, Any]) -> Dict[str, Any]:
|
32 |
+
task_type = task.get('type')
|
33 |
+
if task_type == "analyse_text":
|
34 |
+
return self._analyse_text(task['content'])
|
35 |
+
elif task_type == 'raisonnement_logique':
|
36 |
+
return self._logical_reasoning(task['hypothese'], task['question'])
|
37 |
+
else:
|
38 |
+
return {"error": "Tâche non reconnue"}
|
39 |
+
|
40 |
+
def _analyse_text(self, texte: str) -> Dict[str, Any]:
|
41 |
+
try:
|
42 |
+
tokens = self.nlp['tokenizer'](texte.lower())
|
43 |
+
words = [word for word in tokens if word not in self.nlp['stopwords'] and word not in self.nlp['punctuation']]
|
44 |
+
word_freq = nltk.FreqDist(words)
|
45 |
+
return {
|
46 |
+
"Nombre_de_mots": len(words),
|
47 |
+
"Mots_uniques": len(set(words)),
|
48 |
+
"Mots_les_plus_communs": word_freq.most_common(5)
|
49 |
+
}
|
50 |
+
except Exception as e:
|
51 |
+
print(f"Erreur lors de l'analyse du texte : {e}")
|
52 |
+
return {"error": str(e)}
|
53 |
+
|
54 |
+
def _logical_reasoning(self, hypothese: List[str], question: str) -> Dict[str, Any]:
|
55 |
+
combined_hypothesis = " ".join(hypothese).lower()
|
56 |
+
question = question.lower()
|
57 |
+
relevant_words = set(combined_hypothesis.split()) & set(question.split())
|
58 |
+
relevance_score = len(relevant_words) / len(set(question.split()))
|
59 |
+
|
60 |
+
return {
|
61 |
+
"Score_de_pertinence": relevance_score,
|
62 |
+
"Mots_pertinents": list(relevant_words),
|
63 |
+
"Conclusion": "Basé sur le score de pertinence, les hypothèses semblent " +
|
64 |
+
("pertinentes" if relevance_score > 0.5 else "peu pertinentes") + " à la question."
|
65 |
+
}
|
66 |
+
|
67 |
+
def communicate_with_stellar(self, message: Dict[str, Any]) -> Dict[str, Any]:
|
68 |
+
print(f"{self.name} envoie un message à Stellar: {message}")
|
69 |
+
return {"Statut": "Message reçu", "message": "Stellar a bien reçu le message"}
|
70 |
+
|
71 |
+
def update_from_punkrecord(self):
|
72 |
+
print(f"{self.name} met à jour sa base de connaissances depuis Punkrecord")
|
73 |
+
self.add_to_knowledge_base("Last_update", "Nouveaux patterns détectés dans les données")
|
74 |
+
|
75 |
+
def perform_advanced_analyse(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
76 |
+
text_analyse = self._analyse_text(data.get('text', ''))
|
77 |
+
logical_analyse = self._logical_reasoning(data.get('hypothese', []), data.get('question', ''))
|
78 |
+
print(f"{self.name} effectue une analyse avancée des données")
|
79 |
+
return {
|
80 |
+
"Analyse_de_texte": text_analyse,
|
81 |
+
"Analyse_logique": logical_analyse,
|
82 |
+
"Conclusions": "Analyse intégrale basée sur le texte et les raisonnements logiques"
|
83 |
+
}
|
84 |
+
|
85 |
+
# Test de la classe Shaka
|
86 |
+
if __name__ == "__main__":
|
87 |
+
shaka = Shaka()
|
88 |
+
|
89 |
+
test_task = {
|
90 |
+
"type": "analyse_text",
|
91 |
+
"content": "L'intelligence artificielle est en train de révolutionner la manière dont nous approchons et résolvons les problèmes"
|
92 |
+
}
|
93 |
+
|
94 |
+
test_result = shaka.process_task(test_task)
|
95 |
+
print("Résultat de la tâche de test:", test_result)
|
96 |
+
|
97 |
+
test_logic = {
|
98 |
+
"type": "raisonnement_logique",
|
99 |
+
"hypothese": ["Tous les hommes sont mortels", "Socrate est un homme"],
|
100 |
+
"question": "Socrate est-il mortel?"
|
101 |
+
}
|
102 |
+
|
103 |
+
logic_result = shaka.process_task(test_logic)
|
104 |
+
print("Résultat de la tâche de logique:", logic_result)
|
105 |
+
|
106 |
+
print("Connexion au Punkrecord")
|
107 |
+
shaka.update_from_punkrecord()
|
108 |
+
|
109 |
+
print("Communication avec Stellar")
|
110 |
+
stellar_response = shaka.communicate_with_stellar({"status_update": "Tâche terminée avec succès"})
|
111 |
+
print("Réponse de Stellar:", stellar_response)
|
112 |
+
|
113 |
+
print(shaka.report_status())
|
satellites/{york → yorkSat}/__init__.py
RENAMED
File without changes
|
satellites/yorkSat/agent.py
ADDED
File without changes
|
satellites/yorkSat/york.py
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from satellites.base_satellite import VegapunkSatellite
|
2 |
+
|
3 |
+
role = (" Gerer les tache repetitive, les tache de routine,et la maintenance des systeme")
|
4 |
+
|
5 |
+
fonction = "Gerer les tache repetitive, les resource et les maintenance des systeme"
|
6 |
+
|
7 |
+
|
8 |
+
class York(VegapunkSatellite):
|
9 |
+
def __init__(self):
|
10 |
+
super().__init__(name="York", specialty=role)
|
11 |
+
self.resources = {}
|
12 |
+
|
13 |
+
def process_task(self, task):
|
14 |
+
pass
|
15 |
+
|
16 |
+
def communicate_with_stellar(self, message):
|
17 |
+
pass
|
18 |
+
|
19 |
+
def update_from_punkrecord(self):
|
20 |
+
pass
|