File size: 7,064 Bytes
ae453e4
 
e246597
 
ae453e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
804b154
56541eb
2f6133e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ceae063
 
56541eb
 
6454404
 
 
ceae063
 
6454404
 
 
ceae063
6454404
 
ceae063
6454404
 
 
 
ceae063
 
 
 
6454404
ceae063
6454404
ceae063
6454404
ceae063
 
6454404
ceae063
 
56541eb
ceae063
6454404
 
ceae063
 
6454404
 
 
ceae063
6454404
 
ceae063
6454404
 
 
ceae063
6454404
ceae063
6454404
 
 
ceae063
6454404
 
 
 
 
 
 
 
ceae063
6454404
 
2f6133e
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import gradio as gr
from huggingface_hub import InferenceClient
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM

"""
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
"""
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")

def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    messages = [{"role": "system", "content": system_message}]

    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})

    messages.append({"role": "user", "content": message})

    response = ""

    for message in client.chat_completion(
        messages,
        max_tokens=max_tokens,
        stream=True,
        temperature=temperature,
        top_p=top_p,
    ):
        token = message.choices[0].delta.content

        response += token
        yield response

demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="Top-p (nucleus sampling)",
        ),
    ],
)

if __name__ == "__main__":
    demo.launch()

    import gradio as gr
from huggingface_hub import InferenceClient
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
# 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):
    return response.split('.')[0]

def extract_question(response):
    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 despu茅s de que la funci贸n ha sido definida
initial_question = "What happens in the space between a response and its recreation?"
result = experiment_loop(initial_question)
print(result)


# Define the experiment loop
initial_question = "What happens in the space between a response and its recreation?"
result = experiment_loop(initial_question)
print(result)
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)