NanoProgramerGamer commited on
Commit
82de68e
·
verified ·
1 Parent(s): 1372758

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -14
app.py CHANGED
@@ -1,29 +1,56 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
 
4
- # Usa un modelo avanzado compatible
5
- explain = pipeline("text2text-generation", model="describeai/gemini-small")
6
 
7
  def explicar_codigo(code):
8
-
9
- prompt = (
10
- "Eres un experto ingeniero de software que habla español. "
11
- "Tu tarea es analizar y explicar el siguiente código Python **solamente en español**. "
12
- "No uses inglés ni mezcles idiomas en ningún momento. "
13
- "Explica en un lenguaje natural, claro y profesional. "
14
- f"Aquí está el código:\n\n{code}"
15
- )
16
-
17
- output = explain(prompt, max_length=512, do_sample=False)
18
  return output[0]["generated_text"]
19
 
 
20
  interface = gr.Interface(
21
  fn=explicar_codigo,
22
  inputs=gr.Textbox(lines=15, placeholder="Pega el código Python que quieras entender..."),
23
  outputs="text",
24
  title="Asistente IA para explicar código Python",
25
- description="Este asistente explica cualquier código Python en lenguaje español claro y entendible.",
26
  theme="default"
27
  )
28
 
29
- interface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
  from transformers import pipeline
3
 
4
+ explain = pipeline("text2text-generation", model="Salesforce/codet5-base")
 
5
 
6
  def explicar_codigo(code):
7
+ prompt = f"Explica detalladamente qué hace este fragmento de código Python:\n\n{code}\n\nRESPONDE EN ESPAÑOL."
8
+ output = explain(prompt, max_length=256, do_sample=False)
 
 
 
 
 
 
 
 
9
  return output[0]["generated_text"]
10
 
11
+ # tu interfaz original (ejemplo)
12
  interface = gr.Interface(
13
  fn=explicar_codigo,
14
  inputs=gr.Textbox(lines=15, placeholder="Pega el código Python que quieras entender..."),
15
  outputs="text",
16
  title="Asistente IA para explicar código Python",
17
+ description="Pega código Python y este modelo avanzado lo explicará en lenguaje natural.",
18
  theme="default"
19
  )
20
 
21
+ # --- INYECTAR HTML/JS para postMessage ---
22
+ # Este HTML añade un listener dentro del espacio, que reenvía peticiones internas a /run/predict
23
+ message_listener = gr.HTML("""
24
+ <script>
25
+ window.addEventListener('message', async (e) => {
26
+ try {
27
+ // validación mínima: esperar mensaje con .type === 'explain' (puedes ajustarlo)
28
+ if (!e.data || e.data.type !== 'explain') return;
29
+ const code = e.data.code || '';
30
+ // mostrar loader si quieres (no obligatorio)
31
+ // Llamada interna al endpoint del propio Gradio (misma origen => sin CORS)
32
+ const resp = await fetch('/run/predict', {
33
+ method: 'POST',
34
+ headers: { 'Content-Type': 'application/json' },
35
+ body: JSON.stringify({ data: [code] })
36
+ });
37
+ const json = await resp.json();
38
+ const texto = json?.data?.[0] || '❌ El Space respondió sin contenido.';
39
+ // devolver al parent
40
+ window.parent.postMessage({ type: 'explain_result', text: texto }, '*');
41
+ } catch (err) {
42
+ window.parent.postMessage({ type: 'explain_result', text: '❌ Error interno en el Space.' }, '*');
43
+ }
44
+ });
45
+ </script>
46
+ """)
47
+
48
+ # Monta la UI: incorpora message_listener en el layout (por ejemplo al final)
49
+ # Si usas .launch(layout=...) u otro layout, simplemente incluye 'message_listener' en la lista
50
+ app = gr.Blocks()
51
+ with app:
52
+ interface.render() # si usas Interface
53
+ message_listener.render()
54
+
55
+ # Lanzar
56
+ app.launch()