Este ejercicio evalúa tus habilidades en Front-End y Back-End para construir una aplicación que interactúa con un modelo de IA de generación de texto. Se evaluarán las buenas prácticas de programación, el diseño estructurado y el manejo adecuado de la interacción con la IA.
No está permitido el uso de generadores de código automático, herramientas de IA o cualquier otro tipo de herramientas que autogeneren el código por ti.
Al finalizar, entrega el código junto con un README donde expliques las decisiones técnicas, cómo aplicaste las buenas prácticas y cualquier otra consideración importante.
Descripción del Problema: Vas a desarrollar una aplicación que permita a los usuarios generar texto utilizando una API que simule el comportamiento de una Inteligencia Artificial para generación de texto.
Requisitos Back-End: API RESTful en Node.js (Express o similar) que exponga un endpoint para la generación de texto a través de un servicio simulado de IA:
Endpoint: POST /generate-text Parámetros: Un objeto JSON que incluya: prompt: El texto inicial que el usuario proporciona a la IA. maxLength: Número máximo de caracteres que debe generar la IA. temperature: Un valor numérico que controle la "creatividad" del modelo.
Respuesta: Un JSON con el texto generado por la IA, basado en el prompt.
Simula la generación de texto en tu back-end, usando cualquier algoritmo de generación aleatoria que tengas (puedes crear un simple generador que elija frases predefinidas o generar texto aleatorio con algún patrón).
Valida los parámetros de entrada, asegurando que el prompt no esté vacío y que maxLength y temperature estén dentro de valores aceptables.
Gestiona adecuadamente los errores y envía mensajes de error claros cuando algo salga mal.
Conecta tu API a una base de datos (a elegir).
Guardar los prompts enviados por el usuario junto con el texto generado.
Permitir que los usuarios consulten el historial de prompts generados. Crear un endpoint adicional GET /history para recuperar todos los prompts anteriores generados por el usuario.
Requisitos Front-End: Desarrolla una interfaz de usuario simple con React, vue, (o framework de tu preferencia) que permita a los usuarios:
Instalamos las dependencias:
Backend: Puerto 3000
\Carpeta Raíz del proyecto> cd backend
\backend> npm i
Frontend: Puerto 4000
\Carpeta Raíz del proyecto> cd frontend
\frontend> npm i
Iniciamos los dos servidores:
Si tenemos pnpm podemos iniciar los dos servidores a la vez:
\Carpeta Raíz del proyecto> npm run dev
ó
\Carpeta Raíz del proyecto> npm run start
Si no tenemos pnpm debemos iniciar ambos servidores de forma individual:
\backend> npm run dev
\frontend> npm run dev
Nos basaremos en el fichero schema_remote_turso.prisma en la carpeta /backend/prisma para el cliente Prisma remoto y en el fichero schema_local.prisma para el SQLite local en dicha carpeta.
Prisma usará schema.prisma para su configuración, cuando lo hayamos definido o cuando lo modifiquemos, debemos usar el siguiente comando para generar el cliente Prisma:
\backend> npx prisma generate
Trabajamos con dos tablas:
\backend> npx prisma studio
baseURL depende de la variable de entorno APP_ENV en .env:
Método | ENDPOINT | DESCRIPCIÓN | RETURNS |
---|---|---|---|
GET | {{baseURL}}/history | Lista el historial | OK:{ history, result: 'OK' } Error:{ message, result: 'Error' } |
GET | {{baseURL}}/history/:id/:phraseId | Obtiene los datos de una frase del histórico | OK:{ history, result: 'OK' } Error:{ message, result: 'Error' } |
POST | {{baseURL}}/generate-text | Busca una frase por el prompt del usuario y guarda el resultado de la acción en el historial | { resultHistory, resultPhrase } |