fabrioop commited on
Commit
8dd56db
·
verified ·
1 Parent(s): 18ea130

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -21
app.py CHANGED
@@ -1,30 +1,91 @@
1
  import gradio as gr
2
- from transformers import pipeline
3
 
4
- # Modelos de texto e imagen
5
- chatbot = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct", device_map="auto")
6
- image_gen = pipeline("text-to-image", model="stabilityai/stable-diffusion-2")
7
 
8
- def responder(mensaje, historial):
9
- respuesta = chatbot(mensaje, max_new_tokens=200, temperature=0.7)[0]["generated_text"]
10
- historial.append((mensaje, respuesta))
11
- return historial, historial
 
 
 
 
 
 
 
 
 
12
 
13
- def generar_imagen(prompt):
14
- imagen = image_gen(prompt)[0]["image"]
15
- return imagen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
  with gr.Blocks() as demo:
18
- gr.Markdown("# 🤖 Mi IA Chat + Imagen")
 
 
 
19
 
20
- with gr.Tab("💬 Chat"):
21
- chat = gr.Chatbot()
22
- entrada = gr.Textbox()
23
- entrada.submit(responder, [entrada, chat], [chat, chat])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
- with gr.Tab("🎨 Imagen"):
26
- prompt = gr.Textbox(label="Escribe lo que quieres ver")
27
- salida = gr.Image()
28
- prompt.submit(generar_imagen, inputs=prompt, outputs=salida)
29
 
30
- demo.launch()
 
1
  import gradio as gr
2
+ from huggingface_hub import InferenceClient
3
 
 
 
 
4
 
5
+ def respond(
6
+ message,
7
+ history: list[dict[str, str]],
8
+ system_message,
9
+ max_tokens,
10
+ temperature,
11
+ top_p,
12
+ hf_token: gr.OAuthToken,
13
+ ):
14
+ """
15
+ 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
16
+ """
17
+ client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
18
 
19
+ messages = [{"role": "system", "content": system_message}]
20
+
21
+ messages.extend(history)
22
+
23
+ messages.append({"role": "user", "content": message})
24
+
25
+ response = ""
26
+
27
+ for message in client.chat_completion(
28
+ messages,
29
+ max_tokens=max_tokens,
30
+ stream=True,
31
+ temperature=temperature,
32
+ top_p=top_p,
33
+ ):
34
+ choices = message.choices
35
+ token = ""
36
+ if len(choices) and choices[0].delta.content:
37
+ token = choices[0].delta.content
38
+
39
+ response += token
40
+ yield response
41
+
42
+
43
+ """
44
+ For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
45
+ """
46
+ chatbot = gr.ChatInterface(
47
+ respond,
48
+ type="messages",
49
+ additional_inputs=[
50
+ gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
51
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
52
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
53
+ gr.Slider(
54
+ minimum=0.1,
55
+ maximum=1.0,
56
+ value=0.95,
57
+ step=0.05,
58
+ label="Top-p (nucleus sampling)",
59
+ ),
60
+ ],
61
+ )
62
 
63
  with gr.Blocks() as demo:
64
+ with gr.Sidebar():
65
+ gr.LoginButton()
66
+ chatbot.render()
67
+
68
 
69
+ if __name__ == "__main__":
70
+ demo.launch()
71
+ def chat(prompt, max_length=200):
72
+ # Convertimos el prompt en tensores para el modelo
73
+ inputs = tokenizer.encode(prompt, return_tensors="pt").to(device)
74
+
75
+ # Generamos la respuesta del modelo
76
+ outputs = model.generate(
77
+ inputs,
78
+ max_length=max_length,
79
+ pad_token_id=tokenizer.eos_token_id,
80
+ do_sample=True,
81
+ top_p=0.9,
82
+ temperature=0.7
83
+ )
84
+
85
+ # ⚡ Aquí ponemos el código para quitar la columna de tokens
86
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
87
+
88
+ # Devolvemos solo la respuesta en texto plano
89
+ return response[len(prompt):].strip()
90
 
 
 
 
 
91