DEV Community

Cover image for C贸mo desplegar el modelo recomendador de anime en una API REST.
Elizabeth Fuentes L for AWS

Posted on • Updated on

C贸mo desplegar el modelo recomendador de anime en una API REST.

馃嚮馃嚜馃嚚馃嚤 Dev.to Linkedin GitHub Twitter Instagram Youtube

github: https://github.com/aws-samples/aws-recomendador-anime/tree/main/recomendador-de-anime


Recomendaciones personalizadas de anime


Recomendaciones personalizadas de anime, es una serie donde construimos una aplicaci贸n web capaz de entregar una experiencia personalizada de recomendaciones de animes nuevos de acuerdo a la preferencia del usuario y a medida que se utiliza con mayor frecuencia, puede ir entregando recomendaciones cada vez m谩s relevantes.

Esta serie consistir谩 en los siguientes episodios:

En el primer episodio creamos un modelo de recomendaciones de anime utilizando la data hist贸rica del de Anime Recommendation Database 2020 de kaggle. Utilizamos el servicio de Amazon Personalize para entrenar el modelo y hacerle inferencia a trav茅s de una API utilizando un jupyter notebook, obteniendo recomendaciones de acuerdo a los gustos del usuario y/o anime consultado, filtrar los resultados por g茅neros y, adem谩s podemos alimentar el modelo recomendador con nuevas interacciones de los usuarios.

En este segundo episodio, crearemos una API REST (Fig. 1) para consumir de forma segura y escalable la API de Amazon Personalize creada en el episodio anterior.

Image description Fig. 1 Diagrama de api-rest para un recomendador utilizando Amazon Personalize.

Emplearemos el servicio Amazon API Gateway para invocar funciones de AWS Lambda con el c贸digo para consultar la API de Amazon Personalize para cada tipo de inferencia (Event Tracker, anime-sims, anime-rerank y user-personalization), la respuesta recibida la complementaremos con informaci贸n adicional de los animes que almacenaremos en Amazon DynamoDB y obtendremos como resultado un JSON con la informaci贸n completa de los animes recomendados.


El proyecto 馃懛馃徎: C贸mo desplegar el modelo recomendador de anime en una API REST.

Pre-requisitos:

Manos a la obra 馃殌 馃懇馃徎鈥嶐煔

聽Paso 1: Crearemos el modelo de recomendaci贸n personalizado.

Sigue los pasos del episodio C贸mo crear un modelo de recomendaci贸n personalizado e ignora el paso 12 donde se borran los recursos.

Paso 2: Crearemos el archivo de datos para la tabla.

El modelo de recomendaciones esta entrenado con los IDs del anime, nombrado como ITEM_ID, por lo cual, las consultas y respuestas al modelo est谩n relacionadas al ITEM_ID.

Para la futura aplicaci贸n web necesitamos que la API REST entregue el ID del anime (ITEM_ID), el nombre del anime y su informaci贸n general.

Para esto poblaremos una tabla de DynamoDB con el contenido del archivo anime_with_synopsis.csv de Anime Recommendation Database 2020 de kaggle descargado en el paso anterior.

La tabla tendr谩 dos usos:

  1. Retornar Nombre del Anime cuando se consulte por ITEM_ID.
  2. Retornar un listado de ITEM_ID cuando se realice una b煤squeda por Nombre de Anime, no necesariamente exacto.

Ahora, explorando el notebook anime-table.ipynb de Amazon SageMaker, creado en el Paso 1, vemos que el archivo anime_with_synopsis.csv costa de 5 columnas (Fig. 2):

  • MAL_ID: ID del anime.
  • Name: Nombre del anime.
  • Score: Promedio de puntaci贸n obtenida por el anime.
  • Genres: G茅neros del anime.
  • Sypnosis: Descripci贸n del anime.

Image descriptionFig.2 Muestra de anime_with_synopsis.csv

El primer uso de la tabla lo completamos con la data de anime_with_synopsis, para el segundo uso es necesario agregar una nueva columna Name_Lower con los valores de Name normalizados a min煤sculas, las consultas no siempre se emplean utilizando may煤sculas y min煤sculas en conjunto.

anime_with_synopsis['Name_Lower'] = anime_with_synopsis['Name'].str.lower()
Enter fullscreen mode Exit fullscreen mode

Continuando los pasos en anime-table.ipynb, se crea el archivo new_anime_with_synopsis.csv y se guarda en el bucket creado en el Paso 1.

Tip 馃槈: Puedes explorar los datos en S3 utilizando Amazon S3 Select.

Paso 3: Crearemos tabla anime-table en Amazon DynamoDB.

  1. Accede a la consola de Amazon DynamoDB en la misma regi贸n donde creaste el proyecto del Paso 1.
  2. En la parte derecha del panel de Amazon DynamoDB, selecciona Importaciones de S3 y luego el bot贸n Importaci贸n de S3.
  3. En opciones de importaci贸n

a. En Explorar S3, elige el archivo que creamos anteriormente (Fig. 4).

b. En Importar formato de archivo selecciona CSV.

c. Selecciona Siguiente.

Image descriptionFig.4 Explorar S3 > Elige archivo new_anime_with_synopsis.csv.

  1. En Tabla destino:

a. En el campo Nombre de la tabla, introduce a*nime-table.
b. En el campo Clave de partici贸n (Primary key), escribe MAL_ID. El tipo de datos en **Cadena (String)
*.

  1. Selecciona Importar.

Las consultas de a las tablas de DynamoDB se hacen a trav茅s de la clave de partici贸n (Primary key), en este caso MAL_ID.

Ahora, necesitamos una segunda tabla para poder consultar a trav茅s de Name_Lower, para esto creamos un Global Secundary Index (GSI):

  1. Accede a la tabla dando click sobre el nombre de la tabla.
  2. En el men煤 脥ndices, selecciona Crear 脥ndice y luego:

a. En el campo Clave de partici贸n (Particion Key), escribe Name_Lower y tipo de datos en Cadena (String).

b. Al final en Proyecciones de atributos, selecciona Only keys.

c. Finaliza con Crear 脥ndice.

Paso 4: Crearemos los permisos para las Funciones Lambda.

Separando las funciones Lambda de la Arquitectura en la Fig. 5, debemos crear 6 Funciones Lambda, 4 con permisos para Personalize, con el c贸digo para consultar la API creada en el episodio anterior, y 5 con permiso de lectura a DynamoDB para complementar la informaci贸n entregada por Personalize.

Image description Fig. 5 Funciones Lambda de la Arquitectura.

Para otorgar los permisos a las funciones Lambda se crean los AWS Identity and Access Management Roles (IAM Roles) de ejecuci贸n (rol de ejecuci贸n) con pol铆ticas de acceso para cada servicio, especificado en la Tabla 1 y separado en 3 tipos.

Image description Tabla 1. Tipos de IAM Roles para Funciones Lambda.

Para la creaci贸n de cada pol铆tica de IAM sigue los pasos en este link, en el paso 5 pega el JSON a continuaci贸n correspondiente a cada tipo de IAM Role, ingresando tu regi贸n e ID de cuenta donde corresponde y escribe el Nombre respectivo para cada una en el paso 8 del link.

a. Pol铆tica IAM Role verde - Nombre: politicaverde:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": "personalize:PutEvents",
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

b. Pol铆tica IAM Role azul - Nombre: politicaazul:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "dynamodb:GetItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:TU-REGION:TU-ID-CUENTA:table/anime_table",
                "arn:aws:dynamodb:TU-REGION:TU-ID-CUENTA:table/anime_table/index/"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "personalize:GetPersonalizedRanking",
                "personalize:GetRecommendations"
            ],
            "Resource": [
                "arn:aws:personalize:TU-REGION:TU-ID-CUENTA:campaign/*",
                "arn:aws:personalize:TU-REGION:TU-ID-CUENTA:filter/*"
            ],
            "Effect": "Allow"
        }
    ]
 }
Enter fullscreen mode Exit fullscreen mode

c. Pol铆tica IAM Role Rojo - Nombre: politicarojo:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:Scan"
            ],
            "Resource": [
                "arn:aws:dynamodb:TU-REGION:TU-ID-CUENTA:table/anime_table",
                "arn:aws:dynamodb:TU-REGION:TU-ID-CUENTA:table/anime_table/index/"
            ],
            "Effect": "Allow"
        }

    ]
}
Enter fullscreen mode Exit fullscreen mode

Una vez, creadas las pol铆ticas procedemos a crear los IAM Roles:

  1. En la consola de Amazon IAM selecciona Roles.
  2. Selecciona Crear Roles.
  3. En Seleccionar entidad de confianza:

a. Tipo de entidad de confianza: Servicio de AWS.
b. Caso de uso: Lambda
c. Siguiente.

  1. En Agregar permisos, realiza lo siguiente para cada IAM Role:

Por ejemplo, para el IAM Role verde:
i. Buscar y seleccionar: AWSLambdaBasicExecutionRole
ii. Quita el filtro.
iii. Buscar y seleccionar: politicaverde
iv. Selecciona Siguiente.
v. Nombre del rol: role-verde.
vi. Selecciona Crear rol.

Al finalizar debes visualizar en la consola algo similar a la Fig. 6 para cada IAM Role.

Image description Fig. 6 IAM Role creado con 茅xito.

Paso 5: Creamos las variables de entorno para las Funciones Lambda.

Image description Tabla 2. Configuraci贸n Funciones Lambda.

Los valores para variables de entorno de acuerdo a la Tabla 2 son los siguientes:

TABLE_NAME: anime-table.

Regi贸n: TU-REGI脫N, donde tienes creados los proyectos. Lo ves en la parte derecha de la consola, en mi caso es us-east-1.

INDEX_NAME: El valor en men煤 脥ndices de la tabla creada en el Paso 2 (Fig. 7) igual a Name_Lower-index.

Image description Fig.7 Nombre de 脥ndice secundario global.

FILTERS: Los filtros fueron creados en el Paso 1, y est谩n accediendo a la consola de Amazon Personalize, en el men煤 selecciona Manage dataset groups e ingresa a tu dataset, luego selecciona Filters, y veremos lo siguiente (Fig. 8):

Image description Fig.8 Filtros en Amazon Personalize.

Copia cada uno de los Filter ARN del recuadro naranja de la Fig. 8, luego completa la informaci贸n en el nombre que corresponda a cada filtro en el siguiente JSON:

[{"name": "Drama","Filter ARN"}, 
{"name": "Music", "Filter ARN"}, 
{"name": "Sci-Fi", "Filter ARN"}, 
{"name": "Shounen", "Filter ARN"}, 
{"name": "Fantasy", "Filter ARN"}, 
{"name": "Action", "Filter ARN"}, 
{"name": "Comedy", "Filter ARN"}, 
{"name": "Adventure", "Filter ARN"}, 
{"name": "Kids", "Filter ARN"}]
Enter fullscreen mode Exit fullscreen mode

El JSON final corresponde al valor de la variable de entorno FILTERS.

CAMPAIGN_ARN: siguiendo los mismos pasos que para obtener FILTERS, en el men煤 selecciona Custom resources > Campaigns, como en la Fig. 10, debe haber tres tipos de campa帽as, creadas en el Paso 1.

Fig.9 Campa帽as en Amazon Personalize Fig.9 Campa帽as en Amazon Personalize.

Ingresa a cada campa帽a, copia y pega el valor de ARN, este ser谩 el CAMPAIGN_ARN. Por ejemplo, el CAMPAIGN_ARN para la Funci贸n Lambda con nombre lambda_sims corresponde al de la Fig. 10.

Fig.10 Campaign ARN de campa帽a Sims en Amazon Personalize. Fig.10 Campaign ARN de campa帽a Sims en Amazon Personalize.

TRACKING_ID: al igual que para FILTERS y CAMPAIGN_ARN, en el men煤 de la consola de Amazon Personalize selecciona Event trackers, ingresa al creado en el Paso 1 y copia el Tracking ID (Fig.11), el valor correspondiente a esta variable de entorno.

![Fig.11 Tracking ID en Amazon Personalize.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfdfhryslexvis1ld9w3.png) Fig.11 Tracking ID en Amazon Personalize.

聽Paso 6: Creamos las Funciones Lambda.

En la consola de AWS Lambda, en la misma regi贸n donde crearte el proyecto del Paso 1.

  1. Selecciona Crear una funci贸n, en esta p谩gina:

a. Selecciona Crear desde cero.
b. Nombre de la Funci贸n: El que corresponde en la tabla
2, por ejemplo, lambda_tracker.
c. Tiempo de ejecuci贸n: Python 3.8.
d. Cambiar el rol de ejecuci贸n predeterminado

i.  Selecciona Uso de un rol existente. 
ii. En Role existente selecciona el rol que corresponde al color de la Funci贸n Lambda, por ejemplo, role-verde.
Enter fullscreen mode Exit fullscreen mode
  1. Deber铆as ver algo como la Fig. 12 para cada Funci贸n Lambda:

![Fig.12 Crear Funci贸n Lambda.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lufanbbhszhedwqabzqj.png) Fig.12 Crear Funci贸n Lambda.

  1. Selecciona Crear una funci贸n.

A continuaci贸n, agregamos el c贸digo fuente y las variables de entorno.

Para agregar el c贸digo fuente:

  1. En la consola de Amazon Lambda selecciona el Nombre de la funci贸n a editar, por ejemplo, lambda_tracker.
  2. En el men煤 de la Funci贸n Lambda selecciona C贸digo fuente, sobre-escribe el c贸digo en el cuadrado naranja de la Fig. 13 y pega el que corresponda, por ejemplo, para lambda_tracker ser铆a el codigo-tracker.

![Fig.13 C贸digo fuente de Funci贸n Lambda.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y17vwtlayadke1yts488.png) Fig.13 C贸digo fuente de Funci贸n Lambda.

  1. Selecciona el bot贸n Deploy.

Para agregar las variables de entorno:
a. En el men煤 de la Funci贸n Lambda selecciona Configuraci贸n.
b. Selecciona Variables de entorno -> Editar.
c. Agrega las variables de entorno de la Tabla 2 para cada Funci贸n Lambda. Por ejemplo, para lambda_tracker:

i.  Clave: REGION - Valor: TU-REGI脫N
ii. Clave: TRACKING_ID - Valor: Tracking ID en Amazon Personalize, obtenido en paso anterior. 
Enter fullscreen mode Exit fullscreen mode
  1. Selecciona Guardar, deber铆as ver algo similar a la Fig. 14.

Fig.14 Variables de entorno de Funci贸n Lambda lambda_tracker. Fig.14 Variables de entorno de Funci贸n Lambda lambda_tracker.

Repite este paso para todas las Funciones Lambda de la Tabla 2.

聽Paso 7: Creamos una API REST en Amazon API Gateway.

  1. Ingresa a la consola de API Gateway
  2. Selecciona Crear API.
  3. En API REST (publica), selecciona Crear.
  4. En protocolo selecciona REST, en Crear API nueva selecciona API nueva y en Configuraci贸n Nombra tu API, en nuestro caso como Recomendador-anime, por 煤ltimo, en Tipo de enlace selecciona Optimizado para l铆mites (Fig. 15).

Fig. 15 Configuraci贸n API Gateway. Fig. 15 Configuraci贸n API Gateway.

  1. Selecciona Crear API.

聽Paso 8: Creamos los m茅todos en Amazon API Gateway.

Necesitamos crear seis APIs (Fig. 16), una para cada Funci贸n Lambda y que sea capaz de invocarlas de acuerdo a los m茅todos y recursos de la Tabla 3.

![Fig.16 APIs a crear en Amazon API Gateway.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wkfl0hnqkc259115ge57.png) Fig.16 APIs a crear en Amazon API Gateway.

![Tabla 3. Descripci贸n configuraci贸n APIs.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k01fbszib53v1bix9oj4.png) Tabla 3. Descripci贸n configuraci贸n APIs.

Las APIs con m茅todo GET te van a permitir invocar las funciones Lambdas para obtener informaci贸n del modelo de recomendaci贸n y de la tabla anime_table de DynamoDB, y con el m茅todo POST vamos a poder alimentar el modelo de recomendaciones con nuevas interacciones de los usuarios.

Primero creamos los recursos:

  1. Dentro de la API creada en el paso anterior, selecciona Acciones y luego Crear recurso.

a. En nuevo recurso secundario, pegamos el Nombre del recurso de la Tabla 3, por ejemplo, para tracker (Fig. 17):

Fig.17 Crear recurso tracker en Amazon API Gateway. Fig.17 Crear recurso tracker en Amazon API Gateway.

b. Selecciona Crear Recurso.

  1. Dentro de los recursos creados anteriormente, debemos crear un recurso nuevo anidado, que ser谩 un dato con el que se invocar谩 la funci贸n Lambda. Este sub-recurso corresponde a los valores de la columna Ruta Recurso, por ejemplo, para tracker (Fig. 18).

![Fig.18 Crear recurso dentro de tracker en Amazon API Gateway.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3ys09uclebhqfe1p7ke.png) Fig.18 Crear recurso dentro de tracker en Amazon API Gateway.

  1. Repetir lo anterior para cada recurso de la Tabla 3.
  2. Hasta el momento deber铆amos estar viendo lo de la Fig. 19.

![Fig. 19 Recursos de API Recomendador-anime(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olgku0va2jskaezoo2bc.png) Fig. 19 Recursos de API Recomendador-anime

Para crear el m茅todo:

  1. Selecciona el recurso al cual vamos a agregar el m茅todo, por ejemplo, para rerank seria {userId}. Luego ingresamos a Acciones > Crear m茅todo (Fig. 20).

![Fig. 20 API Acciones > Crear m茅todo.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htpa74quhhkci7tbb2gb.png) Fig. 20 API Acciones > Crear m茅todo.

  1. En el nuevo men煤 (Fig. 21) selecciona GET o POST, de acuerdo a la Tabla 3, y luego selecciona el s铆mbolo 鉁 para aceptar.

![Fig. 21 Crear m茅todo.(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/io90dt01n9bhjgx7svxx.png) Fig. 21 Crear m茅todo.

  1. Selecciona el m茅todo creado e iniciamos su configuraci贸n:

a. En Tipo de integraci贸n, seleccionamos Funci贸n Lambda.
b. Marca la opci贸n Usar la integraci贸n de proxy Lambda, que permite invocar una funci贸n Lambda en el backend.
c. En Regi贸n Lambda, selecciona la regi贸n donde creaste las funciones.
d. En Funci贸n Lambda pon el nombre de la funci贸n, por ejemplo, lambda_tracker.
e. Dejamos lo dem谩s tal cual.
f. Selecciona Guardar.
g. Aparecer谩 una ventana 鈥淎gregar permiso a la funci贸n Lambda鈥, selecciona Aceptar. Esto otorgar谩 los permisos necesarios para que Amazon API Gateway pueda invocar a la funci贸n Lambda.

  1. De igual forma, debemos agregar el m茅todo OPTIONS, el cual configuramos con el Tipo de integraci贸n Simulaci贸n (Mock).
  2. Repetir lo anterior para cada recurso de la Tabla 3.
  3. Deber铆amos ver lo de la Fig. 22.

![Fig. 22 Recursos con m茅todos de API Recomendador-anime(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/diwzkqonl6vwd3jwyymk.png) Fig. 22 Recursos con m茅todos de API Recomendador-anime

Paso 9: Publicamos la API para que sea invocada desde una URL.

  1. Sobre la ra铆z de la API /.
  2. Selecciona Acciones > Implementar la API.

a. En Etapa de implementaci贸n selecciona [Nueva etapa].
b. Nombre de la fase escribe prod.
c. Selecciona Implementaci贸n.

  1. Cuando finalice, selecciona Etapas.
  2. Despliega el contenido de prod.
  3. Seleccionando cada m茅todo GET/POST, vas a ver el link con el cual invocar la API: Invocar URL.

Paso 10: Probamos la API.

Ahora, solo nos queda jugar con la API en cualquier navegador, para eso debes tener el valor de Invocar URL para cada m茅todo obtenido en el paso anterior (Fig. 23).

![Fig. 23 API Recomendador-anime - Invocar URL(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sm76dhi1svj5us8dgdkt.png) Fig. 23 API Recomendador-anime - Invocar URL

Tracker:

Para actualizar las preferencias por usuario.

POST https://<event-tracker-api>/{userId}
body 
{
    "itemId": (ITEM_ID con que se interact煤a),
    "eventType": (tipo de evento, ej: click, compra, view),
    "eventValue": (valor del evento, de existir por ejemplo calificaci贸n),
    "sessionId": (identificador de la sesi贸n)
}
Enter fullscreen mode Exit fullscreen mode

sessionId: puedes generar un numero random, ac谩 te muestro como. En producci贸n corresponde a la sesi贸n de usuario.

Ejemplo: Usuario userId = 20000 califica con nota = 9 una serie itemId = 199.

Request:

POST https://API-ID.execute-api.TU-REGION.amazonaws.com/20000
body : 
{
    "itemId": "199",
    "eventType": "RATING",
    "eventValue": 9,
    "sessionId": "96e5a75b-8c71-42ea-a0ad-d9c474c44422"
}
Enter fullscreen mode Exit fullscreen mode

Respuesta:

{
    "data": {
        "ResponseMetadata": {
            "RequestId": "96e5a75b-8c71-42ea-a0ad-d9c474c44422",
            "HTTPStatusCode": 200,
            "HTTPHeaders": {
                ...
            },
            "RetryAttempts": 0
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

*Consultas GET: *

En la Tabla 4 puedes ver como utilizarlas.

Paso 11: Borramos los recursos de la cuenta de AWS.

Estos pasos son opcionales, si tu intenci贸n es continuar con la construcci贸n de la aplicaci贸n web, puedes mantener los recursos ya que los vamos a utilizar en el pr贸ximo episodio de esta serie.

De lo contrario, sigue los siguientes pasos:

  1. Borrar recursos en API Gateway: En la consola de API Gateway, selecciona la API y en Acciones seleccionar Delete.
  2. Borrar funciones Lambda: En la consola de AWS Lambda, selecciona las funciones Lambda a borrar y en Acciones selecciona Eliminar.
  3. Borrar Tabla de DynamoDB: En la consola de Amazon DynamoDB selecciona Tabla a borrar y luego selecciona Eliminar.
  4. Borrar AWS IAM Role: en la consola de AWS IAM en el men煤 de la izquierda selecciona Roles, y pega en el buscador el nombre del role que copiaste en el paso anterior, presiona la tecla Enter, selecci贸nalo y luego Eliminar.

Conclusiones:

En este nuevo episodio desbloqueaste una nueva habilidad: Creaci贸n de API REST para consultar de forma segura y escalable el recomendador de anime creado en el episodio anterior.

Empleamos el servicio Amazon API Gateway para crear recursos y m茅todos que invocan las funciones de AWS Lambda con el c贸digo para consultar a ** Amazon Personalize*, y las respuesta recibidas las complementamos con la informaci贸n general de los animes que almacenamos en **Amazon DynamoDB*, como resultado obtuvimos un JSON con la informaci贸n completa de los animes recomendados.

Adem谩s, creamos una API m茅todo POST al Event Tracker, que te permitir谩 alimentar al modelo de recomendaciones con nuevas interacciones a animes, y as铆 entrenarlo para que entregue recomendaciones personalizadas al usuario que lo utilice.

Te invito a continuar experimentando con estos servicios y seguir creando aplicaciones para que sigas desbloqueando nuevas habilidades. En Amazon API Gateway tutorials and workshops puedes conseguir nuevos proyectos.

Pronto una nueva entrega de Recomendaciones personalizadas de Anime para que terminemos nuestra aplicaci贸n web de recomendaciones de anime.



隆Gracias!

Te dejo mis redes:
馃嚮馃嚜馃嚚馃嚤 Dev.to Linkedin GitHub Twitter Instagram Youtube

Top comments (0)