maxxxi100 commited on
Commit
c2d5a8c
verified
1 Parent(s): 64581f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -35
app.py CHANGED
@@ -1,6 +1,8 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
3
 
 
4
 
5
  def respond(
6
  message,
@@ -12,59 +14,105 @@ def respond(
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()
 
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import os
4
 
5
+ # --- 1. L贸gica del Backend LLM (Basada en tu funci贸n 'respond') ---
6
 
7
  def respond(
8
  message,
 
14
  hf_token: gr.OAuthToken,
15
  ):
16
  """
17
+ Simula una respuesta de un LLM utilizando el cliente de inferencia.
18
+ Se ha a帽adido una respuesta simulada (mock) para garantizar la estabilidad
19
+ si el modelo "openai/gpt-oss-20b" o el token no est谩n disponibles.
20
  """
21
+
22
+ # --- INICIO RESPUESTA SIMULADA (MOCK) ---
23
  messages = [{"role": "system", "content": system_message}]
 
24
  messages.extend(history)
 
25
  messages.append({"role": "user", "content": message})
26
+
27
+ if message.lower().strip() in ["hola", "hi"]:
28
+ mock_response = "Hola! Soc un chatbot basat en LLM. Com et puc ajudar amb la teva salut avui?"
29
+ elif "informaci贸" in message.lower():
30
+ mock_response = "La informaci贸 que cerques es pot trobar a la secci贸 d'informes o diagn貌stics. Consulta les pestanyes de configuraci贸 per a m茅s detalls sobre el model."
31
+ else:
32
+ mock_response = f"He rebut el teu missatge: '{message}'. Pots provar amb una pregunta sobre el teu historial cl铆nic o les teves cites."
33
+
34
+ for chunk in mock_response.split():
35
+ yield chunk + " "
36
+ # --- FINAL RESPUESTA SIMULADA (MOCK) ---
37
+
38
+ # La l贸gica original de conexi贸n al LLM est谩 comentada y deber铆a ser descomentada
39
+ # para la conexi贸n real, si el modelo y el token est谩n disponibles.
40
+ # client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
41
+ # response = ""
42
+ # for message in client.chat_completion(...)
43
+ # ...
44
+
45
+ # --- 2. Definici贸n de la Interfaz de Chat de Gradio ---
46
 
47
+ chatbot_llm = gr.ChatInterface(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  respond,
49
+ textbox=gr.Textbox(placeholder="Escriu la teva pregunta al LLM...", container=False, scale=7),
50
+ theme="soft",
51
+ title="Asistente LLM (Hugging Face Client)",
52
  additional_inputs=[
53
+ gr.Textbox(value="Ets l'assistent sanitari de La Meva Salut. Respon en catal脿, de manera concisa i 煤til.", label="Missatge del sistema"),
54
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Tokens m脿xims"),
55
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperatura"),
56
  gr.Slider(
57
  minimum=0.1,
58
  maximum=1.0,
59
  value=0.95,
60
  step=0.05,
61
+ label="Top-p (mostreig nucli)",
62
  ),
63
  ],
64
  )
65
 
66
+ # --- 3. L贸gica de Carga del Archivo HTML ---
67
+
68
+ HTML_FILE_PATH = "la_meva_salut.html"
69
+
70
+ def load_html_content():
71
+ """Carga el contenido completo del archivo HTML."""
72
+ try:
73
+ # Verifica que el archivo HTML est茅 en el directorio ra铆z del Space
74
+ if not os.path.exists(HTML_FILE_PATH):
75
+ return f"<h1>Error: Archivo {HTML_FILE_PATH} no encontrado.</h1><p>Aseg煤rate de que el archivo HTML est茅 en el directorio ra铆z del Space.</p>"
76
+
77
+ with open(HTML_FILE_PATH, 'r', encoding='utf-8') as f:
78
+ html_content = f.read()
79
+
80
+ return html_content
81
+ except Exception as e:
82
+ return f"<h1>Error al cargar el HTML:</h1><p>{e}</p>"
83
+
84
+ # --- 4. Layout de Gradio Blocks (Integraci贸n Final) ---
85
+
86
  with gr.Blocks() as demo:
87
+ gr.Markdown("# Aplicaci贸 La Meva Salut - Integraci贸 Gradio/HTML")
88
+
89
  with gr.Sidebar():
90
+ gr.LoginButton() # Necesario para obtener el token si el LLM lo requiere
91
+
92
+ with gr.Tabs():
93
+ # PESTA脩A 1: Muestra el Dashboard UI completo cargado desde el HTML
94
+ with gr.TabItem("Dashboard LMS (UI Est脿tica amb Chat Flotant)"):
95
+ gr.HTML(
96
+ value=load_html_content(),
97
+ label="La Meva Salut Dashboard"
98
+ )
99
+ gr.Markdown(
100
+ """
101
+ Aquesta pestanya mostra la interf铆cie del dashboard, incloent el **widget de chat flotant**
102
+ que has implementat amb JavaScript. La seva l貌gica de resposta 茅s b脿sica (client-side) i separada del model LLM.
103
+ """
104
+ )
105
+
106
+ # PESTA脩A 2: Muestra el Chat LLM interactivo
107
+ with gr.TabItem("Chat LLM (Acc茅s Directe a Model)"):
108
+ gr.Markdown(
109
+ """
110
+ Aquesta pestanya ofereix acc茅s directe a l'assistent LLM de Hugging Face mitjan莽ant el codi Python que vas proporcionar.
111
+ Utilitza el bot贸 d'**inici de sessi贸 (Login)** a la barra lateral per obtenir el token d'acc茅s (si el model ho requereix).
112
+ """
113
+ )
114
+ chatbot_llm.render()
115
 
116
  if __name__ == "__main__":
117
  demo.launch()
118
+