File size: 2,871 Bytes
6454404
 
 
ceae063
d24778d
6454404
 
 
ceae063
6454404
 
ceae063
6454404
 
 
1c19372
 
 
 
 
 
6454404
1c19372
 
 
6454404
1c19372
 
6454404
1c19372
 
56541eb
1c19372
 
6454404
1c19372
 
 
 
 
 
 
 
 
 
6454404
ceae063
6454404
 
 
ceae063
6454404
ceae063
6454404
 
 
ceae063
6454404
 
 
 
 
 
 
 
ceae063
6454404
 
d858cca
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
67
68
69
70
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM

# Cargar el modelo de lenguaje preentrenado
model_name = "EleutherAI/gpt-neo-2.7B"
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 = []

    try:
        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>"

    except Exception as e:
        print(f"Error durante el experimento: {e}")

    # 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)