Módulo ECA y como integrar Drupal con la IA

Portada del podcast Drupalízate
Drupalízate es un podcast semanal creado por mí, donde hablo sobre desarrollo web basado en Drupal.
El contenido central es resolver las típicas dudas que pueda tener alguien que tiene o quiere tener una web en Drupal.
Aparte de resolver dudas de "clientes", también se habla de tips, recomendaciones y buenas prácticas para el Developer que recién empiezan en este mundo.
Audio y notas del episodio

Hoy vengo a explicar 2 noticias buenas y 2 de malas.

Y de entre ellas, una es mi experiencia usando el módulo ECA. ¿Crees que ha sido buena o mala?

 

El link de mi módulo por si tienes curiosidad:
https://www.drupal.org/project/prompt

Link a los modulos de ECA:
https://www.drupal.org/project/eca
https://www.drupal.org/project/bpmn_io

Transcripción automática de este episodio de audio (puede contener errores)

 Hola que tal, aquí otra semana más en Drupalízate. Hoy tengo dos noticias buenas y dos noticias malas, así que vamos a empezar a hacer un caso por las malas primero. La primera mala es de que supongo que te has dado cuenta que no estoy publicando desde hace mucho tiempo, ni en el podcast, ni en la newsletter que está en LinkedIn. Y es básicamente porque no tengo tiempo ni tampoco ganas, básicamente. Forzarme a mí mismo a publicar cada dos semanas fue un desastre. Yo no puedo publicar cada semana porque llega un punto que se actúa de trabajo o de trabajo que quiero desconectar, con lo cual ni cada semana me sirve ni cada dos semanas tampoco. Una vez al mes quizás se me ha sido poco y aún así seguramente la fecha que me ponga para bloquear el tiempo para publicar pues la acabo usando para otra cosa porque al final es lo que tiene, salen fuegos de clientes y los tengo que apagar, que para eso me pagan. Viendo que no cumplo como calendario, viendo que no tiene sentido meterme presión a mí mismo para una cosa que hay días que no tengo nada de ganas de hacer, tranquilo, no voy a chapar ni el podcast ni la newsletter de momento, pero de momento no tengo fecha de publicación. Cuando tenga algo interesante que contar y tenga ganas de contarlo, pues lo voy a contar en el podcast y en la newsletter. La newsletter seguirá como hasta ahora, un resumen de noticias de los últimos semanas o meses y un texto que ponga yo. Pero lo que voy a ver es que no va a tener una periodicidad digamos normal, voy a publicarlo cuando yo pueda y cuando yo quiera. Así que notificado quedas. Esto sería la primera noticia mala, de que te quedas sin contenido recurrente por mi parte. La segunda noticia mala, seguramente te acordarás que hice como tres episodios o así, hablando de un proyecto que era Podcast Ready, que era una web Drupal que tuve problemas con servidores, solo tuve que re-dimensionar, escalar entre servidores distintos, un escalamiento horizontal, y eso me salió más barato que un servidor monolítico con todo puesto allí. Bueno, entre una cosa y la otra, al final este proyecto nadie lo está usando, no veo ningún tipo de mejora en nada, en serio, no me llega nadie a la web, y al final me sirvió a mí como ejemplo para demostrar aquí cosas, me sirvió como parte del portfolio de demostrar lo que puedo llegar a hacer, pero no tiene sentido ahora mismo para mí seguir manteniendo un proyecto al cual no le veo futuro, no le veo futuro tampoco de monetización y es que aparte es que ni los usuarios lo usan. O sea, la poca gente que se registró ha entrado una vez y ya está, no ha entrado más. Así que por motivos varios lo he dado de baja y ya he matado los servidores, ya no existe ese proyecto. Y el dominio lo he re-direccionado a mi web. Más que nada es notificación esto porque si esto lo escuchas a cabo de unos meses, que sepas de que esa boya no existe, que no te sorprendas. Al final es un side project, no lo han proyectado ningún cliente y si no tiene ningún sentido mantenerlo, pues lo mato. No hay más problema con eso. Vale, ahora bien, las dos noticias buenas. La primera, que creo que ya lo comenté, que estaba desarrollándolo, me metí en el tema de inteligencia artificial, ¿vale? Y ahí me explotó la mente al ver el potencial que tiene esto para unirlo, unificarlo con los contenidos que están dentro de la web Drupal. Aparte estoy justamente en un proyecto, que también lo conté aquí en poco tiempo, espero. Bueno, en total, que tengo un proyecto que tengo que usar temas de la IA y estoy viendo cómo implementarlo dentro. Al final he creado un módulo que me permite conectar con la API de OpenAI, que es la gente que ha hecho GPT-3 y ChatGPT. Yo también he visto, he encontrado, mejor dicho, otra web que es gladia.io, que también lo tiene todo en formato API. No solo es de texto, sino que también tiene, por ejemplo, transcripciones de audio y generación de imágenes, cosa que me interesa mucho. De momento solo he hecho EDA y también, por ejemplo, gladia.io también tiene una parte de GPT-3. La diferencia o la parte buena de Gladia es que ahora mismo están en alfa, el día que estoy grabando esto, muy bien, las semanas pasadas. Eso significa que está actualmente en versión gratuita, más o menos limitada, porque el servicio ha caído más de una vez en fin de semana, pero te responden y es de forma gratuita ahora mismo. Así que para juguetear con temas de IA lo veo muy interesante. Es uno de los motivos por los que lo he incluido en mi módulo. Así que mi módulo se puede conectar con GPT-3 o con Gladia. Y como digo, puedes generar transcripciones de audio, por ejemplo, que de aquí viene un proyecto con el que estoy, y también usarlo con GPT-3 para hacer cosas con los textos. Eso significa que el módulo lo configuras, creas un prompt, que es lo que le envías a la IA una frase de quiero que me hagas esto con dos puntos, este valor de texto, y el dos puntos, este valor de texto, actualmente, con el módulo que he hecho, le envías el token de un campo Drupal. O sea, al final Drupal te lo convierte al valor de ese campo. Si le dices de generarme un artículo en base a este titular y le envías como titular el título del nodo, te va a generar un artículo para ese título. Y automáticamente con mi módulo lo puedes hacer de que Drupal te ponga ese contenido en el body y publique y tienes una web automatizada. El contenido no es de la mejor calidad y no quiero que la gente lo use para eso. Pero para a partir de un texto generar varios títulos y que el usuario final seleccione uno, por ejemplo, o detectar los tags y autocategorizar los nodos o entidades, por ejemplo, o traducciones automáticas o correcciones de textos automáticos, por ejemplo, o revisar que el texto no contenga, yo que sé, tonos malsonantes, esto la IA es capaz de hacerlo. Tú puedes mandarle un prompt, escribirle qué quieres que haga con ese texto, la IA te lo hará y te devolverá el texto modificado. Total, lo veo muy, pero que muy potente. Por eso es uno de los motivos por los que he hecho este módulo. Y a raíz de esto he estado integrando también y probando el módulo ECA, el Event Condition Action, que supongo que es lo que va a dar título a este episodio de podcast. Este módulo, no sé si lo comenté ya en podcast o lo comenté en la newsletter o a quién se lo comenté, pues me suena que esto lo he hablado un rato con alguien. Básicamente este módulo ya me sonaba de antes, pero lo descubrí, digamos, de verdad en la DrupalCam de aquí de España. Se hizo una charla y se presentó ese módulo y todo el potencial que tenía ese módulo. Digamos que al final es el sustituto de lo que eran módulos RUDS que a mi gusto iban bastante mal, tenía problemas de rendimiento y visualmente es un poco engorroso de saber usar. En cambio el ECA es mucho más fácil de saber usar, es mucho más visual y por lo poco que he probado yo el rendimiento es bastante mejor. Pero bueno, como digo, no he hecho pruebas intensivas de rendimiento, he hecho integración con mi módulo porque me interesaba, pero no he hecho pruebas de rendimiento. Esto tendría que en algún caso dedicarle más tiempo y ver si realmente es mejor que RUDS. Pero esto, para gente que no quiera programar un módulo custom que haga X cosa, es muy útil. Por ejemplo, tú puedes hacer que en determinado evento, por ejemplo, actualizar un nodo, crear un nodo o crear un usuario o la creación de un alias de URL o cualquier cosa que al final tengas un hook, un evento que puedas engancharte y hacer cosas con ello. Pues el módulo también te permite tener estos eventos y engancharte a esos eventos. Después te permite poner una condición que sería, por ejemplo, cuando se crea un nodo, la condición sería si el nodo es del tipo noticia o si es del tipo página básica o si es del tipo lo que sea. Y después está la acción, que es qué quieres que haga con ello. Pues básicamente que envío un mail, por ejemplo, o que en el caso de mi módulo de IA, que haga la consulta con Talapi, que obtenga el texto y que guarde el texto en un campo del mismo nodo. Al final es una acción, qué quieres que haga, lo que estás configurando. Una de las ventajas que tiene esto VSRoute es que es todo muy visual. Tienes que usar un módulo, que ahora tengo que descubrir el nombre porque no me acuerdo del nombre, que está apuntado por aquí, bpmn.io, pero al final es un módulo de Drupal, o sea, lo puedes buscar en Drupal.org y el mismo módulo de SA te recomiendo que lo instales. Porque SA no tiene interfaz visual, tienes que instalarte un módulo, un submódulo mejor dicho, que te permite tener una interfaz visual, que eso también va bien porque la puedes tener activa solo en entornos de desarrollo o local y no en producción. Al final, para explicar esto un poco mejor sería como si es usado herramientas tipo IntegraMAT, por ejemplo, que al final tú pintas bloques y flechitas y unes un bloque con el otro. Aquí viene lo mismo, tenemos una redonda que sería el evento y haces clic en la redondita, te sale un seleccion de plantilla y la plantilla es qué tipo de evento es, cuando se crea un nodo, por ejemplo. Después pones un cuadrado que sería la acción a realizar, pues lo mismo, haces clic en el cuadrado y te salen plantillas a usar, pues envía un mail. Al seleccionar eso te va a salir un pop-up de configuración para que especifiques el asunto, el texto y lo que sea del mail. Y después puedes unir la redonda con el cuadrado con una flecha. Y al hacer clic en la flecha es la condición. Tú en las flechas puedes poner condiciones. Lo bueno de esto es que además puedes hacer de que de un mismo evento se hagan varios disparadores, o sea, varias acciones al mismo tiempo. Que por ejemplo, que al cuadrar un nodo automáticamente una acción sea publicarlo, otra acción sea enviar un mail y otra acción sea generar un texto con la guía que he hecho yo y el módulo y que lo publique en otro nodo o en una taxonomía o en el mismo nodo actual. Al final tienes la ventaja de en vez de tener que hacer un módulo custom tuyo tocando código, para muchas cosas más o menos simples las puedes hacer con esto, sin tocar código, de forma muy rápida. Y una cosa muy buena, es totalmente exportable en configuración. Con lo cual haces un.drush.fx, lo exportas todo y en producción un.drush.theme y lo importas todo. Ahorra muchísimo tiempo, a menos por lo poco que he trasteado yo, me ha encantado y lo voy a usar en algún proyecto seguramente. Te permite hasta por ejemplo vaciar cachés cuando estás viendo cierta entidad de cierto tipo de contenido. Cuando se muestra esta entidad, condición de este tipo de contenido, acción que se vacía la caché de no sé qué. Por ejemplo, cuando tienes problemas de temas de caché. Aunque bueno, recomiendo ver exactamente si te hace falta tener caché para ese caso. Pero lo voy a postar como ejemplo, que puedes hacer virguerías con este módulo. Es totalmente gratuito, lo he estado probando y me ha encantado y está muy bien acabado. No tengo ningún problema de errores en ningún sitio de momento. Y nada más, básicamente te recomiendo que pruebes el módulo ECA. Y después que si estás con el tema de la IA y viendo potencial, como no te voy a recomendar que uses mi módulo que es Prompt, básicamente para tachar con ello. Como te digo, con lo de Gladia actualmente es gratuito. Gladia se puede conectar con GPT-3 actualmente y como está en alfa, Gladia te lo deja usar de forma gratuita. Muy limitado, no te deja poner un texto muy largo, pero aceptable. Pero bueno, si quieres poner textos largos, usa mejor la integración que tengo con GPT-3 porque puedes recortar el texto en fragmentos más pequeños y después unir todos los resultados en un único al final. Y nada más, básicamente que esto que veas de que no he estado de vacaciones, sino que he estado haciendo cosas, publicando módulos, haciendo cosas para clientes y también con otros espíritus míos propios. Y también, pues sí, he estado un par de días desconectando, pero que entre una cosa y la otra no me da la vida o no tengo la prioridad máxima para publicar contenido en el podcast. Tengo otras prioridades, estos son más a más que cuando tengo tiempo y ganas pues lo hago. Y nada más, no sé cuándo voy a publicar el siguiente, pero estate atento y si te gusta este tipo de contenido, pues contáctame por Twitter o por LinkedIn, déjame un comentario. Y que se agradece tener feedback de la audiencia básicamente. Así que, hasta la próxima. Chao.

¿Tienes algún proyecto en mente?

Si quieres hacer algo en Drupal tal vez puedas contratarme.

Ya sea para consultoría, desarrollo o mantenimiento de sitios web Drupal.