88ggg commited on
Commit
d5381da
verified
1 Parent(s): 70cc3e2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -36
app.py CHANGED
@@ -3,48 +3,60 @@ from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStream
3
  from threading import Thread
4
  import gradio as gr
5
 
6
- # Configuraci贸n segura (modelo ligero)
7
- MODEL_NAME = "microsoft/phi-2"
8
 
9
- # Cargar modelo y tokenizer
10
- tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True)
11
- model = AutoModelForCausalLM.from_pretrained(
12
- MODEL_NAME,
13
- torch_dtype=torch.float16,
14
- device_map="auto"
15
- )
 
 
 
16
 
17
- def respond(message, history, system_prompt="Eres Gerardo, un asistente 煤til."):
18
- # Construir prompt manualmente
19
- prompt = f"{system_prompt}\n\n"
20
- for user_msg, bot_msg in history:
21
- prompt += f"Usuario: {user_msg}\nAsistente: {bot_msg}\n"
22
- prompt += f"Usuario: {message}\nAsistente:"
23
-
24
- inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
25
- streamer = TextIteratorStreamer(tokenizer)
26
-
27
- Thread(
28
- target=model.generate,
29
- kwargs=dict(
30
- inputs,
 
31
  streamer=streamer,
32
  max_new_tokens=512,
33
  temperature=0.7
34
  )
35
- ).start()
36
-
37
- response = ""
38
- for token in streamer:
39
- response += token
40
- yield response
 
 
 
 
 
41
 
42
- # Interfaz simplificada
43
- demo = gr.ChatInterface(
44
- respond,
45
- examples=["Hola", "驴Qu茅 sabes de IA?"],
46
- title="馃 Chatbot de Gerardo"
47
- )
 
 
48
 
 
49
  if __name__ == "__main__":
50
- demo.launch()
 
3
  from threading import Thread
4
  import gradio as gr
5
 
6
+ # 1. Configuraci贸n del Modelo (usando un modelo m谩s ligero y compatible)
7
+ MODEL_NAME = "mistralai/Mistral-7B-v0.1" # Modelo bien soportado en Spaces
8
 
9
+ # 2. Carga del Modelo con manejo de errores
10
+ try:
11
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
12
+ model = AutoModelForCausalLM.from_pretrained(
13
+ MODEL_NAME,
14
+ torch_dtype=torch.float16,
15
+ device_map="auto"
16
+ )
17
+ except Exception as e:
18
+ raise gr.Error(f"Error al cargar el modelo: {str(e)}")
19
 
20
+ # 3. Funci贸n de Generaci贸n con Validaci贸n
21
+ def generate_response(message, history):
22
+ try:
23
+ # Construir el prompt
24
+ messages = [{"role": "user", "content": message}]
25
+
26
+ inputs = tokenizer.apply_chat_template(
27
+ messages,
28
+ return_tensors="pt"
29
+ ).to(model.device)
30
+
31
+ streamer = TextIteratorStreamer(tokenizer)
32
+
33
+ generation_kwargs = dict(
34
+ inputs=inputs,
35
  streamer=streamer,
36
  max_new_tokens=512,
37
  temperature=0.7
38
  )
39
+
40
+ thread = Thread(target=model.generate, kwargs=generation_kwargs)
41
+ thread.start()
42
+
43
+ partial_message = ""
44
+ for new_token in streamer:
45
+ partial_message += new_token
46
+ yield partial_message
47
+
48
+ except Exception as e:
49
+ raise gr.Error(f"Error en generaci贸n: {str(e)}")
50
 
51
+ # 4. Configuraci贸n Robustecida de la Interfaz
52
+ with gr.Blocks(title="Chatbot Gerardo") as demo:
53
+ chatbot = gr.ChatInterface(
54
+ fn=generate_response,
55
+ examples=["Hola", "驴C贸mo funciona esto?"],
56
+ title="馃 Chatbot de Gerardo",
57
+ description="Un asistente IA creado por Gerardo"
58
+ )
59
 
60
+ # 5. Lanzamiento Espec铆fico para Spaces
61
  if __name__ == "__main__":
62
+ demo.launch(server_name="0.0.0.0", server_port=7860)