DEV Community

Cover image for Generando preguntas para el examen AZ-900 con OpenAI
Emanuel
Emanuel

Posted on

Generando preguntas para el examen AZ-900 con OpenAI

El 25 de enero del presente, participé como conferencista en la .Net Conf Guatemala 2024 estuve impartiendo la sesión Construyendo aplicaciones inteligentes con C#, .NET y OpenAI.
Imagen por [techcommunitygt](https://www.instagram.com/techcommunitygt/)

Conocí a nuevas personas y estuve haciendo un poco de networking con los asistentes de las conferencias, y por motivos personales de fuerza mayor, me vi en la necesidad de retirarme antes, así como también tuve que cambiar el horario previsto para mi sesión.

Sin embargo, tuve la oportunidad de impartir mi sesión y hacer una demo, el cual quiero compartir hoy.


Construyendo aplicaciones inteligentes con C#, .NET y OpenAI

Últimamente me estoy preparando para la certificación Azure Fundamentals de Microsoft, he estado practicando con ChatGPT. Me da un lote de preguntas, las pego en un word y las voy contestando, esto porque ya terminé los exámenes de prueba que adquirí. Sin embargo, quería tener otra perspectiva de las preguntas del examen.

Entonces decidí crear una simulación pequeña de las preguntas del examen con el API de Open AI. En un principio, creía que utilizar los modelos de OpenAI implicaría una mayor complejidad. Pero resulta que es más fácil de lo que parece.

Lo primero, es crear una cuenta en OpenAI (se puede utilizar la cuenta de ChatGPT). El modelo de precios de la plataforma de OpenAI es mediante recargas, lo que significa que se puede recargar mediante el sistema lo vaya requiriendo.

Una vez que se hayan recargado créditos, se debe crear un api key en la sección de Dashboard en la plataforma de OpenAI. Este token es muy importante NO COMPARTIRLO y NO COLOCARLO EN EL LADO DEL CLIENTE (FRONTEND).

La tokenización es una parte fundamental para comunicarse con los modelos de OpenAI, ya que es la forma en la que los modelos GPT entienden.

Actualmente, la forma más rápida de conectarse a los modelos de OpenAI es mediante solicitudes HTTP/HTTPS hacia una API REST que ellos proveen. En la documentación encontramos todo lo relacionado a esta API REST.

Backend

Para este proyecto cree una Api Rest en .NET, la cual está conectada a una base de datos de PostgreSQL. En la base de datos, se guarda información sobre los usuarios que utilizaban este simulador.

En el servicio denominado AssistantRepository, se realiza la llamada al API REST de OpenAI. Debido a restricciones de tiempo, opté por no desarrollar un asistente completo ni crear chats basados en ese asistente. En su lugar, utilicé el rol SYSTEM para proporcionar instrucciones sobre cómo debía estructurarse la respuesta, qué aspectos debía abordar y, especialmente, qué tipo de preguntas debía generar.

El ApiKey que generamos debe estar en los encabezados de la solicitud de tipo Post, y debe estar adjuntado como: _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

Adicionalmente, se guarda en base de datos el modelo que se utilizó en la solicitud, el total de tokens del prompt, y la totalidad de tokens utilizados en toda la solicitud.

Aquí el repo

Frontend

En el front utilicé Angular v18, con tailwindcss y typescript. Por ser pequeño, en este proyecto solo utilicé componentes standalone.

Después que el front envía una solicitud al API que creamos en .NET, este recibe las respuestas en un formato específico y las va renderizando según el tipo al que la pregunta pertenezca. Los tipos de preguntas para esta versión son:

  1. Falso o verdadero.
  2. Selección múltiple.
  3. Selección única.

En la version 1 de este proyecto se califican las preguntas al presionar el botón "Verificar Respuesta", y esto va haciendo una sumatoria de las preguntas correctas e incorrectas.

AZ 900 AI Tests

Aquí el repo

Despliegue

Por último, el despliegue lo hice en un droplet de Digital Ocean, utilizando Docker para hacerlo más fácil. No utilicé CI/CD debido a que este droplet solo estuvo activo durante la conferencia.

En conclusión, quiero destacar que desarrollar aplicaciones inteligentes puede ser mucho más sencillo de lo que imaginamos, y esto marca una gran diferencia al agregar valor a nuestras soluciones. La implementación de inteligencia artificial no debe limitarse únicamente a C# y .NET; podemos explorar otros lenguajes de programación y frameworks, como NestJS (en el que ya estoy trabajando en un proyecto 🙈), Python, Go, entre otros. Me gusta mucho una frase que refleja este enfoque: 'La inteligencia artificial no es el futuro, es el presente.'

Top comments (0)