brunorsanz commited on
Commit
215bb13
verified
1 Parent(s): ca53ffd

Upload 5 files

Browse files
Files changed (5) hide show
  1. config.ini +2 -0
  2. config.py +8 -0
  3. doc.md +61 -0
  4. main.py +45 -0
  5. requirements.txt +53 -0
config.ini ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [Openai]
2
+ openai_key=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
config.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import configparser
2
+
3
+ config = configparser.ConfigParser()
4
+
5
+ config.read('config.ini')
6
+
7
+ #openai apikey
8
+ OPENAI_API_KEY = config['Openai']['openai_key']
doc.md ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Documentaci贸n del Proyecto: Explicador de C贸digo
2
+
3
+ ## 1. Descripci贸n del Proyecto
4
+ Este proyecto consiste en un aplicativo web desarrollado con **Streamlit** y **Python** que permite recibir un fragmento de c贸digo en cualquier lenguaje de programaci贸n y generar una explicaci贸n detallada sobre su funcionamiento. Utiliza **OpenAI GPT-4** para analizar y describir el c贸digo ingresado.
5
+
6
+ ## 2. Requisitos
7
+ Para ejecutar este proyecto, es necesario instalar las siguientes dependencias:
8
+
9
+ ### **2.1 Instalaci贸n de dependencias**
10
+ Crea un archivo `requirements.txt` con el siguiente contenido:
11
+
12
+ ```
13
+ streamlit
14
+ openai
15
+ langdetect
16
+ ```
17
+
18
+ Luego, instala las dependencias ejecutando:
19
+
20
+ ```sh
21
+ pip install -r requirements.txt
22
+ ```
23
+
24
+ ## 3. Uso del Aplicativo
25
+ 1. Ejecuta el siguiente comando en la terminal para iniciar la aplicaci贸n:
26
+
27
+ ```sh
28
+ streamlit run app.py
29
+ ```
30
+
31
+ 2. Se abrir谩 una interfaz en el navegador donde podr谩s pegar un fragmento de c贸digo en el campo de texto.
32
+ 3. Haz clic en **"Explicar c贸digo"** y el sistema generar谩 una descripci贸n detallada del c贸digo ingresado.
33
+
34
+ ## 4. Configuraci贸n de la API de OpenAI
35
+ Para que el modelo de lenguaje funcione correctamente, necesitas una clave de API de OpenAI.
36
+
37
+ 1. Reg铆strate en [OpenAI](https://openai.com/).
38
+ 2. Obt茅n una clave de API desde la secci贸n de configuraciones de tu cuenta.
39
+ 3. En el archivo `app.py`, reemplaza `tu_clave_aqui` por tu clave de API.
40
+
41
+ ## 5. Publicaci贸n en Hugging Face Spaces
42
+ Para subir este proyecto a **Hugging Face Spaces**, sigue estos pasos:
43
+
44
+ 1. Crea una cuenta en [Hugging Face](https://huggingface.co/).
45
+ 2. Dir铆gete a la secci贸n **Spaces** y crea un nuevo espacio.
46
+ 3. Selecciona **Streamlit** como framework.
47
+ 4. Sube los archivos del proyecto (`app.py`, `requirements.txt`).
48
+ 5. Espera a que se despliegue autom谩ticamente.
49
+ 6. Comparte el enlace generado para que otros puedan acceder al aplicativo.
50
+
51
+ ## 6. Entrega Final
52
+ El proyecto deber谩 incluir:
53
+ - C贸digo fuente en Python (`app.py`).
54
+ - Archivo `requirements.txt` con las dependencias.
55
+ - Documentaci贸n detallada (este archivo).
56
+ - Presentaci贸n de la aplicaci贸n.
57
+ - Enlace a la aplicaci贸n desplegada en **Hugging Face Spaces**.
58
+
59
+ ## 7. Contacto y Soporte
60
+ Para cualquier duda o mejora del proyecto, puedes abrir un **issue** en el repositorio de GitHub o contactar a trav茅s de Hugging Face Spaces.
61
+
main.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from openai import OpenAI
3
+ from config import OPENAI_API_KEY
4
+
5
+ client = OpenAI(api_key=OPENAI_API_KEY)
6
+ import langdetect
7
+
8
+ # Configurar la clave de API de OpenAI
9
+ OPENAI_API_KEY = "tu_clave_aqui"
10
+
11
+ def detectar_lenguaje(codigo):
12
+ """Detecta el lenguaje de programaci贸n usando langdetect."""
13
+ try:
14
+ lenguaje = langdetect.detect(codigo)
15
+ return lenguaje
16
+ except:
17
+ return "Desconocido"
18
+
19
+ def explicar_codigo(codigo):
20
+ """Genera una explicaci贸n del c贸digo utilizando OpenAI GPT."""
21
+ prompt = f"Explica detalladamente qu茅 hace el siguiente c贸digo:\n\n{codigo}\n\nExplicaci贸n:"
22
+
23
+ respuesta = client.chat.completions.create(model="gpt-4o-mini",
24
+ messages=[{"role": "system", "content": "Eres un asistente que explica c贸digo de programaci贸n."},
25
+ {"role": "user", "content": prompt}])
26
+ return respuesta.choices[0].message.content.strip()
27
+
28
+ # Configuraci贸n de la app Streamlit
29
+ st.title("Explicador de C贸digo")
30
+ st.write("Introduce un fragmento de c贸digo en cualquier lenguaje de programaci贸n para recibir una explicaci贸n detallada.")
31
+
32
+ codigo_usuario = st.text_area("Introduce tu c贸digo aqu铆:")
33
+
34
+ if st.button("Explicar c贸digo"):
35
+ if codigo_usuario.strip():
36
+ lenguaje = detectar_lenguaje(codigo_usuario)
37
+ explicacion = explicar_codigo(codigo_usuario)
38
+
39
+ st.subheader("Lenguaje detectado:")
40
+ st.write(lenguaje.capitalize())
41
+
42
+ st.subheader("Explicaci贸n del c贸digo:")
43
+ st.write(explicacion)
44
+ else:
45
+ st.warning("Por favor, introduce un c贸digo v谩lido.")
requirements.txt ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ altair==5.5.0
2
+ annotated-types==0.7.0
3
+ anyio==4.8.0
4
+ attrs==25.1.0
5
+ blinker==1.9.0
6
+ cachetools==5.5.1
7
+ certifi==2025.1.31
8
+ charset-normalizer==3.4.1
9
+ click==8.1.8
10
+ distro==1.9.0
11
+ gitdb==4.0.12
12
+ GitPython==3.1.44
13
+ h11==0.14.0
14
+ httpcore==1.0.7
15
+ httpx==0.28.1
16
+ idna==3.10
17
+ Jinja2==3.1.5
18
+ jiter==0.8.2
19
+ jsonschema==4.23.0
20
+ jsonschema-specifications==2024.10.1
21
+ langdetect==1.0.9
22
+ markdown-it-py==3.0.0
23
+ MarkupSafe==3.0.2
24
+ mdurl==0.1.2
25
+ narwhals==1.26.0
26
+ numpy==2.2.3
27
+ openai==1.63.0
28
+ packaging==24.2
29
+ pandas==2.2.3
30
+ pillow==11.1.0
31
+ protobuf==5.29.3
32
+ pyarrow==19.0.0
33
+ pydantic==2.10.6
34
+ pydantic_core==2.27.2
35
+ pydeck==0.9.1
36
+ Pygments==2.19.1
37
+ python-dateutil==2.9.0.post0
38
+ pytz==2025.1
39
+ referencing==0.36.2
40
+ requests==2.32.3
41
+ rich==13.9.4
42
+ rpds-py==0.22.3
43
+ six==1.17.0
44
+ smmap==5.0.2
45
+ sniffio==1.3.1
46
+ streamlit==1.42.0
47
+ tenacity==9.0.0
48
+ toml==0.10.2
49
+ tornado==6.4.2
50
+ tqdm==4.67.1
51
+ typing_extensions==4.12.2
52
+ tzdata==2025.1
53
+ urllib3==2.3.0