Garabatos commited on
Commit
5b9030b
·
1 Parent(s): 6ffa848

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -19
app.py CHANGED
@@ -3,6 +3,7 @@ import streamlit as st
3
  from fastapi import FastAPI
4
  from pydantic import BaseModel
5
  import uvicorn
 
6
  from transformers import AutoModelForCausalLM, AutoTokenizer
7
  import torch
8
 
@@ -21,34 +22,27 @@ class Message(BaseModel):
21
  def chat(msg: Message):
22
  """Genera respuesta basada en el input del usuario."""
23
  input_text = msg.text
24
- print(f"Input: {input_text}")
25
-
26
- # Codificar entrada
27
  inputs = tokenizer.encode(input_text + tokenizer.eos_token, return_tensors="pt")
28
-
29
- # Generar la respuesta
30
  response_ids = model.generate(inputs, max_length=100, pad_token_id=tokenizer.eos_token_id)
 
31
 
32
- # Decodificar la respuesta
33
- response_text = tokenizer.decode(response_ids[0], skip_special_tokens=True)
34
-
35
- print(f"Response: {response_text}")
36
  return {"response": response_text}
37
 
 
 
 
 
 
 
 
38
  # ======== Interfaz con Streamlit =========
39
  st.title("Mi Amigo Virtual 🤖")
40
  st.write("Escríbeme algo y te responderé!")
41
 
42
  user_input = st.text_input("Tú:")
43
  if user_input:
44
- # Realiza la solicitud a FastAPI
45
  response = chat(Message(text=user_input))
46
- st.write("🤖:", response["response"])
47
-
48
- # ======== Ejecutar FastAPI en un servidor de uvicorn =========
49
- def run_api():
50
- port = int(os.getenv("PORT", 7860))
51
- uvicorn.run(app, host="0.0.0.0", port=port)
52
-
53
- if __name__ == "__main__":
54
- run_api()
 
3
  from fastapi import FastAPI
4
  from pydantic import BaseModel
5
  import uvicorn
6
+ import threading
7
  from transformers import AutoModelForCausalLM, AutoTokenizer
8
  import torch
9
 
 
22
  def chat(msg: Message):
23
  """Genera respuesta basada en el input del usuario."""
24
  input_text = msg.text
25
+ print(msg.text)
 
 
26
  inputs = tokenizer.encode(input_text + tokenizer.eos_token, return_tensors="pt")
 
 
27
  response_ids = model.generate(inputs, max_length=100, pad_token_id=tokenizer.eos_token_id)
28
+ response_text = tokenizer.decode(response_ids[:, inputs.shape[-1]:][0], skip_special_tokens=True)
29
 
30
+ print(response_text)
31
+
 
 
32
  return {"response": response_text}
33
 
34
+ # ======== Función para ejecutar FastAPI en segundo plano =========
35
+ def run_api():
36
+ port = int(os.getenv("PORT", 7860))
37
+ uvicorn.run(app, host="0.0.0.0", port=port)
38
+
39
+ threading.Thread(target=run_api, daemon=True).start()
40
+
41
  # ======== Interfaz con Streamlit =========
42
  st.title("Mi Amigo Virtual 🤖")
43
  st.write("Escríbeme algo y te responderé!")
44
 
45
  user_input = st.text_input("Tú:")
46
  if user_input:
 
47
  response = chat(Message(text=user_input))
48
+ st.write("🤖:", response["response"])