Spaces:
Sleeping
Sleeping
File size: 4,568 Bytes
ae453e4 e246597 ae453e4 804b154 56541eb 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 |
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 |
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()
# 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)
|