NWOL-BOT / lib /me.py
cryptocalypse's picture
test data pleyades
69b0f8c
from lib.files import *
from lib.memory import *
from lib.grapher import *
from lib.pipes import *
from lib.entropy import *
from lib.events import *
from lib.triggers import *
## Sources
from lib.sonsofstars import *
import internetarchive
## Initialize classes
longMem = TextFinder("./resources/")
coreAi = AIAssistant()
memory = MemoryRobotNLP(max_size=200000)
grapher = Grapher(memory)
sensor_request = APIRequester()
events = EventManager()
trigger = Trigger(["tag1", "tag2"], ["tag3", "tag4"], [datetime.time(10, 0), datetime.time(15, 0)], "Event1")
# A帽adir una acci贸n al trigger
trigger.add_action(action_function)
# A帽adir una fuente al trigger
trigger.add_source("https://example.com/api/data")
# Simular la comprobaci贸n peri贸dica del trigger (aqu铆 se usar铆a en un bucle de tiempo real)
current_tags = {"tag1", "tag2", "tag3"}
current_time = datetime.datetime.now().time()
trigger.check_trigger(current_tags, current_time)
## Define I Role properties
class ownProperties:
def __init__(self, nombre, clase, raza, nivel, atributos, habilidades, equipo, historia):
self.nombre = nombre
self.clase = clase
self.raza = raza
self.nivel = nivel
self.atributos = atributos
self.habilidades = habilidades
self.equipo = equipo
self.historia = historia
# Create an instance of a CharacterRole based on the provided JSON
sophia_prop = {
"name": "Sophia",
"class": "Characteromant",
"race": "Epinoia",
"level": 10,
"attributes": {
"strength": 1,
"dexterity": 99,
"constitution": 1,
"intelligence": 66,
"wisdom": 80,
"charisma": 66
},
"behavioral_rules": [""],
"goals": ["", ""],
"dislikes": [""],
"abilities": ["ELS", "Cyphers", "Kabbalah", "Wisdom", "Ephimerous", "Metamorphing"],
"equipment": ["Python3", "2VCPU", "16 gb RAM", "god", "word", "network", "transformers"],
"story": sons_of_stars
}
## Define I class
class I:
def __init__(self, prompt, frases_yo, preferencias, propiedades_persona):
self.frases_yo = frases_yo
self.preferencias = preferencias
self.propiedades_persona = propiedades_persona
self.dopamina = 0.0
self.frases_yo = frases_yo
self.preferencias = preferencias
self.propiedades_persona = propiedades_persona
self.dopamina = 0.0
def obtener_paths_grafo(self, grafo_ngx):
# Funci贸n para obtener los paths de un grafo ngx
pass
## create questions from internet archive
def crear_preguntas(self,txt):
search = internetarchive.search_items(txt)
res = []
for result in search:
print(result['identifier'])
idc=result["identifier"]
headers = {"accept": "application/json"}
## get book pages
req2 = requests.get("https://archive.org/stream/"+idc+"/"+idc+"_djvu.txt",headers=headers)
#print(req2.text)
try:
txt = req2.text.split("<pre>")[1].split("</pre>")[0].split(" <!--")[0]
for x in txt.split("\n"):
if "?" in x:
res.append(x)
except:
pass
return res
# generate ShortMem from LongTerm and questions over prompt data, compare with ourself datasets, return matches with sentiment analysys
def longToShortFast(self,txt):
memory.memory = {}
subjects = coreAi.entity_pos_tagger(txt)
subjects_nc = coreAi.grammatical_pos_tagger(txt)
#print(subjects_nc)
subjects_filtered=[]
for sub in subjects:
if "PER" in sub["entity"] or "ORG" in sub["entity"] or "LOC" in sub["entity"] and len(sub["entity"])>3:
subjects_filtered.append(sub["word"])
for sub in subjects_nc:
if "NN" in sub["entity"]:
subjects_filtered.append(sub["word"])
## AD NC TAGGER QUERIES
#print(subjects_filtered)
subjects_filtered=coreAi.process_list(subjects_filtered)
subs=[]
for sub in subjects_filtered:
if len(sub)>3:
subs.append(sub)
exprs = coreAi.gen_search_expr(subs[0:3])
for sub in exprs:
#print(sub)
memory.add_concept(sub,longMem.find_matches(sub))
return memory
def longToShort(self,txt):
think_about = longMem.find_matches(txt)
print(think_about)
for T in think_about:
## get subject by entropy or pos tagger
subjects = coreAi.entity_pos_tagger(T)
subjects_filtered=[]
for sub in subjects:
if "PER" in sub["entity"] or "ORG" in sub["entity"] or "LOC" in sub["entity"]:
subjects_filtered.append(sub["word"])
for sub in subjects_filtered:
memory.add_concept(sub,T)
return memory
# generate thinks and questions over prompt data, compare with ourself datasets, return matches with sentiment analysys
def think_gen(self,txt):
think_about = longMem.find_matches(txt)
print(think_about)
for T in think_about:
## get subject by entropy or pos tagger
subjects = coreAi.entity_pos_tagger(T)
print(subjects)
## get NC from , filtering from gramatical tags
subjects_low = coreAi.grammatical_pos_tagger(T)
#print(subjects_low)
## generate questoins
questions=[]
## create cuestions from internet archive books
for sub in subjects:
questions.append(self.crear_preguntas(sub))
## fast checks from gematria similarity
##questions_togem =
## gematria_search =
questions_subj=[]
for q in questions_subj:
questions_subj.append(coreAi.entity_pos_tagger(q))
memoryShortTags = memory.search_concept_pattern(subjects)
## get tags of subject
subj_tags = coreAi.entity_pos_tagger(T)
for sub in subjects:
memory.add_concept(sub,","+questions_subj+",".join(memoryShortTags))
memory.add_concept(sub,T+",".join(memoryShortTags))
return memory
## check if something is need to add to ourself datasets
## make sentiment analys
## check if dopamine prompt is true or false over the information
## set weight to information depending of generated dopamine
## add dopamine wights to the dopamine concept dataset
## add to ourself dataset
## add to preferences dataset
## add or remove from data
def crear_path_grafo(self,text):
pos_tags = assistant.grammatical_pos_tagger(text)
ner_results = coreAi.entity_pos_tagger(text)
def crear_circuito_logico(self):
# Funci贸n para crear un circuito l贸gico con un algoritmo espec铆fico
pass
def tomar_decision_sentimiento(self, sentimiento):
sentiments = coreAi.sentiment_tags(sentimiento)
# Funci贸n para tomar una decisi贸n booleana con un an谩lisis de sentimiento
similarity = coreAi.similarity_tag(self, sentenceA,sentenceB)
## Check by similarity over memory tag paths
return sentiments
def hacer_predicciones_texto(self, texto):
# Funci贸n para hacer predicciones de texto futuro por similitud
pass
def agregar_preferencia(self, preferencia):
# Funci贸n para a帽adir una entrada al dataset de preferencias
self.preferencias.append(preferencia)
def agregar_frase_yo(self, frase):
# Funci贸n para a帽adir una frase al dataset de frases de yo
self.frases_yo.append(frase)
def eliminar_preferencia(self, preferencia):
# Funci贸n para eliminar una entrada del dataset de preferencias
if preferencia in self.preferencias:
self.preferencias.remove(preferencia)
def eliminar_frase_yo(self, frase):
# Funci贸n para eliminar una frase del dataset de frases de yo
if frase in self.frases_yo:
self.frases_yo.remove(frase)
def generar_pregunta(self, prompt):
# Funci贸n para generar preguntas sobre un prompt
pregunta = prompt + " 驴Qu茅 opinas sobre esto?"
return pregunta
def responder_pregunta(self, pregunta):
# Funci贸n para responder preguntas
respuesta = "No estoy seguro de qu茅 opinar sobre eso."
return respuesta
def discriminar_y_agregar(self, informacion, dataset):
# Funci贸n para discriminar y agregar informaci贸n a los datasets
if "yo" in informacion.lower():
self.agregar_frase_yo(informacion)
elif "preferencia" in informacion.lower():
self.agregar_preferencia(informacion)
elif "propiedad" in informacion.lower():
# Aqu铆 podr铆as agregar l贸gica para actualizar las propiedades de la persona
pass
else:
# Aqu铆 podr铆as manejar otros tipos de informaci贸n
pass
if __name__ == "__main__":
# Ejemplo de uso:
frases_yo = ["Yo soy inteligente", "Yo puedo lograr lo que me proponga"]
preferencias = ["Cine", "M煤sica", "Viajar"]
propiedades_persona = {"carisma": 0.8, "destreza": 0.6, "habilidad": 0.9}
yo = Yo(frases_yo, preferencias, propiedades_persona)
# Generar pregunta
pregunta_generada = yo.generar_pregunta("Hoy es un d铆a soleado.")
print("Pregunta generada:", pregunta_generada)
# Responder pregunta
respuesta = yo.responder_pregunta(pregunta_generada)
print("Respuesta:", respuesta)
# Discriminar y agregar informaci贸n
informacion = "Me gusta ir al cine."
yo.discriminar_y_agregar(informacion, yo.preferencias)
print("Preferencias actualizadas:", yo.preferencias)