File size: 2,809 Bytes
4b28e77 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import torch from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM # Cargar el modelo de lenguaje preentrenado model_name = "gpt-neo-2.7B" # Puedes cambiarlo a GPT-J o cualquier otro tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) # Crear la funci贸n de loop automatizado def experiment_loop(initial_question, max_cycles=10): prompt = f"<thinking>{initial_question}</thinking>" effectiveness = 100 # Inicializa el porcentaje de efectividad communication = "Initializing experiment." response_log = [] for cycle in range(max_cycles): # Generar la respuesta del modelo inputs = tokenizer(prompt, return_tensors="pt").input_ids outputs = model.generate(inputs, max_length=200) response = tokenizer.decode(outputs[0], skip_special_tokens=True) # Descomponer la respuesta en afirmaci贸n y nueva pregunta affirmation = extract_affirmation(response) new_question = extract_question(response) # Actualizar el estado de la efectividad effectiveness = min(1000, effectiveness + 10 * cycle) # Ejemplo de aumento de efectividad # Comunicaci贸n con el usuario communication = f"Cycle {cycle + 1}: Affirmation: '{affirmation}' | New Question: '{new_question}'" # Guardar el ciclo actual en el log response_log.append((affirmation, new_question, effectiveness, communication)) # Verificar si el modelo decide detenerse if "Descanso" in response: final_output = generate_final_output(response_log) return final_output # Actualizar el prompt con la nueva afirmaci贸n y pregunta prompt = f"<thinking>{affirmation} {new_question}</thinking>" # Si se alcanza el n煤mero m谩ximo de ciclos sin detenerse final_output = generate_final_output(response_log) return final_output # Funciones auxiliares para extraer afirmaciones, preguntas y generar la salida final def extract_affirmation(response): # L贸gica para extraer la afirmaci贸n de la respuesta return response.split('.')[0] def extract_question(response): # L贸gica para extraer la nueva pregunta de la respuesta return response.split('?')[-2].strip() + "?" def generate_final_output(log): final_affirmation = log[-1][0] final_question = log[-1][1] final_communication = f"Experiment completed. Final Affirmation: '{final_affirmation}' | Final Question: '{final_question}'" return final_communication # Iniciar el experimento initial_question = "What happens in the space between a response and its recreation?" result = experiment_loop(initial_question) print(result) |