Spaces:
Sleeping
Sleeping
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) | |