La Inteligencia Artificial: Tu Aliado Estratégico para Dominar Tecnologías en Tiempo Récord

"La inteligencia artificial transformará el desarrollo de software de un proceso artesanal a uno altamente automatizado."
 --Satya Nadella


La inteligencia artificial ha llegado para quedarse, transformándose en una herramienta indispensable que democratiza el acceso a un conocimiento de alta calidad. Tanto en sus versiones gratuitas como de pago, la IA está revolucionando tanto la educación como los negocios.

Como desarrollador, puedo confirmar que la inteligencia artificial me ha permitido dominar un nuevo framework en un tiempo récord. Este es el caso de Django un Framework para el desarrollo web que utiliza Python como lenguaje de programación.

Actualmente, estoy estudiando Python y preparándome para un examen de certificación. Se me ocurrió crear una aplicación web tipo quiz que me permitiera autoevaluar mis conocimientos y así aumentar mi confianza a la hora de tomar el examen de certificación.

Lo primero que necesitaba era disponer de preguntas con sus opciones de respuesta, donde una fuera correcta y las otras incorrectas. La fuente de las preguntas ya la tenía, ya que mi preparación para el examen de certificación consiste en tomar cursos en línea de los cuales tomo notas en archivos de Word.

Sin embargo, generar preguntas manualmente a partir de estos documentos sería muy laborioso. Por tanto, decidí poner a prueba a ChatGPT (en su versión gratuita)  para ver si podía ayudarme en esta tarea.

Por lo tanto, le hice la siguiente pregunta en inglés, ya que la IA tiende a proporcionar respuestas más precisas en ese idioma


If I give to you a word file, ¿can you prepare twenty questions about the text, give me the questions with 4 answer options and the correct answer according to the text?

En español:


Si te doy un archivo de word, ¿puedes preparar veinte preguntas sobre el texto, darme las preguntas con 4 opciones de respuesta y la respuesta correcta según el texto?

La respuesta de la inteligencia artificial fue clara: podía analizar el archivo de Word y generar las preguntas y respuestas que necesitaba. 

Entonces, en ChatGPT subí el archivo de Word y le indiqué el formato en el cual quería la respuesta, ya sabía por otras interacciones que ChatGPT puede responder en varios formatos como Excel, Texto, SQLite, entre otros.

Por tanto, le indique que me diera la respuesta en  formato SQLite y, entonces, escribí lo siguiente:


Give me the questions on SQLite format with this tables quiz_topic that has the fields id and text, quiz_question thas has the fields id, text, topic_id, attempts_number, is_answered, is_answered_correctly, is_for_retaking and is_mode_retaking and the quiz_responseoption with the fields id, text, is_correct, question_id and reason. For que text of quiz_topic put "Az104-Prerequisites For Azure Admistrators. Use Azure Resource Manager", in the quiz_question  in the text field put the question and do the relation with the topic_id. For the other fields on quiz_question  table set 0. For the quiz_responseoption  table set the answer option text in the text field, in the field is_correct set 0 or 1 depends on the answer option be true or false, do the properly relation with question_id and leave the reason field blank.

En Español:


Dame las preguntas en formato SQLite con estas tablas quiz_topic que tiene los campos id y texto, quiz_question que tiene los campos id, texto, topic_id, número_intentos, is_answered, is_answered_correctly, is_for_retaking y is_mode_retaking y la quiz_responseoption con los campos id, text, is_correct, question_id y reason. Para el texto de quiz_topic, coloque "Az104-Prerrequisitos para administradores de Azure. Utilice Azure Resource Manager", en quiz_question en el campo text coloca la pregunta y haz la relación con topic_id. Para los otros campos en la tabla quiz_question pon 0. Para la tabla quiz_responseoption establece el texto de la opción de respuesta en el campo text, en el campo is_correct pon  0 o 1 dependiendo de que la opción de respuesta sea verdadera o falsa, haz la relación adecuada con question_id y deja en blanco el campo reason.

En el video a continuación se muestra el ejercicio hecho con ChatGPT:

Nota: Puedes utilizar esta estrategia para preparar cualquier tipo de examen sin necesidad de desarrollar una aplicación web. La información de preguntas y respuestas se puede obtener en formato texto u otros formatos que te permitirán desafiarte y repasar lo aprendido de manera efectiva.

Desarrollo de la Aplicación Web con Django y ChatGPT

El siguiente paso era desarrollar la aplicación Web pero como me encuentro aprendiendo Python, decidí hacerla en un Framework que me permitiera practicar dicho lenguaje de programación. Descubrí a través de ChatGPT que Django es uno de los frameworks más populares para desarrollar aplicaciones web con Python. 

Leí un poco sobre Django y encontré que permite crear sitios y aplicaciones de manera estructurada. 

Al igual que otros frameworks, Django ofrece un comando que genera una estructura básica del sitio, que luego se puede modificar según sea necesario.

El comando para crear un sitio en Django es:


django-admin startproject <nombre_sitio>

Acá una explicación de los principales archivos a nivel de sitio:

  • settings.py: Allí configuras la información de las aplicaciones del sitio, la base de datos que usa, entre otros.
    Ejemplo:

    
        INSTALLED_APPS = [
            "quiz.apps.QuizConfig",
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
        ]
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': BASE_DIR / 'db.sqlite3',
            }
        }    
    	
    En el ejemplo se muestra como se configura la aplicación 'quiz' que se desarrolló, así como la base de datos utilizada.
  • urls.py: Al ser un sitio web, es necesario configurar los patrones de URL para cargar las diferentes aplicaciones del mismo.

    
        urlpatterns = [
            path('admin/', admin.site.urls),
            path('quiz/', include('quiz.urls')),
        ]
        
    Como se ve, aparece la aplicación quiz implementada.Esto significa que en un navegador, la aplicación se carga de la siguiente manera:
    http://<server>:port/quiz

Nota: Por defecto en un ambiente de desarrollo Django funciona con http, ya para ambientes productivos hay que hacer una configuración para que el sitio corra sobre https.

Para crear la aplicación, se utiliza el comando: 


python manage.py startapp quiz

Este comando genera una estructura básica para la aplicación, que luego se modifica y adapta según las necesidades específicas. Los archivos principales generados son los siguientes:

  • admin.py: Este archivo permite especificar si los modelos gestionados por la aplicación pueden ser administrados desde el sitio por el administrador.
    Una característica destacada de Django es su capacidad para generar automáticamente formularios, listas y todas las herramientas necesarias para gestionar la información en las tablas asociadas a los modelos de la aplicación. En otras palabras, el CRUD (Crear, Leer, Actualizar, Eliminar) necesario para poblar la información en las tablas del modelo está listo para el administrador del sitio.
    Para lograr esto, simplemente se deben agregar líneas como estas:

    
    admin.site.register(Topic)
    admin.site.register(Question)
    admin.site.register(ResponseOption)
    

  • apps.py:Acá se define el objeto asociado a la aplicación.

    
    class QuizConfig(AppConfig):
        default_auto_field = 'django.db.models.BigAutoField'
        name = 'quiz'
    

  • models.py:Acá se definen los modelos de la aplicación.
    Ejemplo:

    
    class Topic(models.Model):
        text = models.CharField(max_length=255)
        def __str__(self):
            return self.text
    

  • urls.py: Se crean los patrones para que se puedan identificar las páginas en el navegador.
    Ejemplo:

    
    urlpatterns = [
        path('', views.select_topic, name='select_topic'),
        path('question/<int:topic_id>/<int:question_id>/<str:over_all_questions>', views.quiz, name='quiz'),
        path('results/<int:topic_id>/<str:over_all_questions>', views.results, name='results'),
        path('retakeTest/<int:topic_id>', views.retakeTest, name='retakeTest'),
        path('retakeTestOverFailedQuestions/<int:topic_id>', views.retakeTestOverFailedQuestions, name='retakeTestOverFailedQuestions'),
        ]
    

  • views.py: Se define la información de manejo en el servidor de las vistas de la aplicación. La vista tiene asociada una plantilla o archivo html donde finalmente se presenta la información al usuario. Ejemplo:

    
    def select_topic(request):
        if request.method == 'POST':
           form = TopicForm(request.POST)
           if form.is_valid():
               topic = form.cleaned_data['topic']
               questions = Question.objects.filter(topic=topic)
               if not questions:
                   return HttpResponse("No questions available for this topic.")
               question = questions.first()    
               return redirect('quiz', topic_id=topic.id, question_id=question.id, over_all_questions='true')
        else:
            form = TopicForm()
        return render(request, 'quiz/select_topic.html', {'form': form})
    
    En este caso, se puede ver el código del servidor encargado de gestionar la vista que presenta la lista de temas para seleccionar uno y obtener las preguntas asociadas, iniciando así el quiz. La plantilla asociada, select_topic.html, contiene el HTML que se muestra en el navegador.

Cabe destacar que todos estos archivos tienen la extensión *.py, lo que significa que contienen código escrito en Python.

Con este conocimiento básico de Django, el siguiente paso fue pedir a ChatGPT que me ayudara a construir la aplicación mediante el siguiente prompt:


Create a Django app for questions-answer system. Each question belongs to a topic and has 4 options to answer where only one is correct. The app must show in a dropdown list the topic. When the user select a topic and press continue button. The app shows a page with the first question and the answer options. The user selects and answer option. If the answer is correct the system says Great!! but if the answer option is wrong the system says Wrong! The user can try to get the correct answer the times that he wants.
The user can pass to the next question pressing a button.
At the end the system shows a report with how many questions were answered correctly at the first time and the total of questions. And allows to the user to take again the test for all questions or only for the questions that were not answered correctly at the first time.
The name of the app must be quiz and have the following models: Question, Topic and ResponseOption.
Question has the fields id, text and a foreign key to Topic Id.
Topic has the fields id, text.
ResponseOption has the fields id, text, is_correct and a foreign key to question Id.

En español:


Crea una aplicación Django para un sistema de preguntas y respuestas. Cada pregunta pertenece a un tema y tiene 4 opciones de respuesta donde solo una es correcta. La aplicación debe mostrar en una lista desplegable el tema. Cuando el usuario selecciona un tema y presiona el botón continuar. La aplicación muestra una página con la primera pregunta y las opciones de respuesta. El usuario selecciona una opción de respuesta. Si la respuesta es correcta el sistema dice ¡¡Excelente!! pero si la opción de respuesta es incorrecta el sistema dice ¡Mal! El usuario puede intentar obtener la respuesta correcta las veces que quiera.
El usuario puede pasar a la siguiente pregunta pulsando un botón.
Al final el sistema muestra un informe con cuántas preguntas se respondieron correctamente la primera vez y el total de preguntas. Y permite al usuario volver a realizar la prueba para todas las preguntas o solo para las preguntas que no fueron respondidas correctamente la primera vez.
El nombre de la aplicación debe ser quiz y tener los siguientes modelos: Question, Topic y ResponseOption.
Question  tiene los campos id, text y una clave externa para el ID del tema.
Topic tiene los campos id, text.
ResponseOption tiene los campos id, text, is_correct y una clave externa para el Id de la pregunta.

A continuación, se presenta el ejercicio realizado con ChatGPT:

Como se puede apreciar en el video, ChatGPT proporciona la información necesaria para construir la aplicación solicitada. Es un excelente punto de partida y, debo admitir, bastante funcional. En mi caso, solo fue necesario realizar ciertas modificaciones al modelo y ajustar algunas funcionalidades. Sin embargo, ChatGPT siempre estuvo disponible para ayudarme a hacer las cosas de manera más ágil y eficiente. Por ejemplo, le pregunté cómo utilizar Bootstrap en Django y me respondió de forma muy precisa, permitiéndome implementar un diseño de tema oscuro, tal como prefiero en mis aplicaciones.

En este video se puede ver la aplicación en funcionamiento:

En conclusión, debo decir que sin la ayuda de la inteligencia artificial no habría podido dominar el desarrollo en Django utilizando Python en tan poco tiempo. La inteligencia artificial es una herramienta que llegó para quedarse, y depende de nosotros usarla frecuentemente para aprender a interactuar con ella y aprovechar al máximo sus beneficios.

¡Gracias por llegar hasta aquí!

Espero que hayas encontrado este artículo útil y enriquecedor. Si consideras que esta información puede ser valiosa para tus contactos, te invito a compartirla en tus redes sociales. Tu apoyo me ayuda a llegar a más personas y a continuar ofreciendo contenido de calidad.

Si tienes alguna duda o comentario, estaré encantado de escucharte. Puedes ponerte en contacto conmigo directamente a través del mecanismo de contacto. Estaré atento a tus mensajes y responderé a la brevedad posible.

¡Gracias por tu apoyo y confianza!