Integración de Alexa Skill con ChatGPT usando servicios de AWS (Lambda, Secrets Manager y DynamoDB)

Requisitos

Video con la explicación

Youtube - https://www.youtube.com/watch?v=fwTLeF1DOVk

aws

Creando Skill en Alexa

Ir a https://developer.amazon.com/alexa/console/ask/create-new-skill/name, definimos un nombre para nuestro skill

Elegimos:

  • Choose a type of experience : Other
  • Choose a model : Custome
  • Hosting services : Provision your own.

Clic en NEXT

Captura de Pantalla 2023-02-24 a la(s) 16 59 13

Clic en Start from Scratch y Next.

Captura de Pantalla 2023-02-24 a la(s) 17 00 40

Clic en Create Skill.

Captura de Pantalla 2023-02-24 a la(s) 17 05 17

Nos aparecerá la siguiente pantalla.

Captura de Pantalla 2023-02-24 a la(s) 17 13 43

Definimos una palabra para invocar a nuestro skill.

Agregaremos las intenciones con los utterances al Skill, clic en JSON editor. Copiamos el contenido del json que se encuentra en la ruta skill/alexa-skill.json y lo pegamos, clic en Save model.

Veremos las 2 intenciones que se han agregado : PreguntaIntent y DespedidaIntent.

Clic en Save model y Build Model.

Captura de Pantalla 2023-02-24 a la(s) 17 36 12

Accedemos a nuestra cuenta de AWS y creamos un entorno de Cloud9, donde clonaremos el repositorio.

Ejecutar en Cloud9.

git clone https://github.com/luisgradossalinas/alexa-chatgpt-aws

Abrir el contenido del archivo chatgpt.yaml e ingresamos en la línea 40 nuestro API Key de OpenAI.

Ejecutar en Cloud9

cd alexa-chatgpt-aws/
sh sh/01_Start_Deploy.sh

Esperamos que se cree el stack en CloudFormation.

Volvemos a Alexa y nos ubicamos en la opción Endpoint, copiamos el valor de nuestro Skill ID para asociarlo a la función Lambda creada en AWS.

Regresamos a AWS, y entramos a la función Lambda llamada : fnc-alexa-skill-chatgpt-dynamodb, para agregar un desencadenador. Clic en Add trigger.

Seleccionamos Alexa e ingresamos nuestro Skill ID, clic en Add.

Ahora copiamos el ARN de la función Lambda, para asociarlo al Skill de Alexa.

Volvemos a Alexa Console y pegamos el valor del ARN de la función Lambda, clic en Save Endpoints.

Clic en Test para probar desde la consola nuestra Skill.

image

Ahora puedes preguntar lo que desees a ChatGPT usando una Skill de Alexa.

image

Si queremos ver esta interacción (pregunta y respuesta de ChatGPT), podemos ir a AWS, al servicio de DynamoDB y en la tabla chatgpt_interaction veremos un registro con la pregunta y respuesta de ChatGPT.

image

Si tenemos un dispositivo Echo Dot, también podemos utilizar esta skill.

Agradecimientos

Espero te haya servido esta solución, si pudiste replicarlo, puedes publicarlo en LinkedIn con tus aportes, cambios y etiquétame (https://www.linkedin.com/in/luisgrados).

Eliminar recursos en AWS

Ejecutar en Cloud9.

aws s3 ls | grep alexachatgpt-code | awk {'print "aws s3 rb s3://" $3 " --f"'} | sh
aws cloudformation delete-stack --stack-name StackAlexaChatGPT	
echo "Stack StackAlexaChatGPT eliminándose"

Eliminamos el entorno de Cloud9.