Cómo hacer que tu bot de Telegram sea más inteligente con la AI Generativa de Google y Apache Camel

pexels-cottonbro-studio-6153354

¿Qué es la AI Generativa?

La AI Generativa es un tipo de inteligencia artificial que puede generar contenido nuevo a partir de un conjunto de datos de entrada. Los modelos de AI Generativa aprenden de los datos con los que se entrenan, y luego utilizan ese conocimiento para generar nuevo contenido que sea similar al contenido de entrenamiento.

¿Qué es Google Makersuite?

Google MakerSuite es un conjunto de herramientas que le permiten crear prototipos con Large Language Models directamente desde el navegador, sin necesidad de configuración. Con MakerSuite, puede pasar de probar rápidamente los «prompts» a crear una API a la que su aplicación pueda acceder directamente, lo que ayuda a los equipos a ofrecer rápidamente grandes aplicaciones basadas en IA generativa.

Aplicaciones de AI Generativa

La AI Generativa tiene una amplia gama de aplicaciones, incluyendo:

  • Creación de contenido: La AI Generativa se utiliza para generar texto, imágenes, música, audio y vídeos. Por ejemplo, se utiliza para generar contenido personalizado para los usuarios, crear chatbots y traducir idiomas.
  • Traducciones: La AI Generativa se utiliza para traducir idiomas. Por ejemplo, se utiliza para traducir documentos, sitios web y conversaciones.
  • Análisis de datos: La AI Generativa se utiliza para analizar datos y extraer información. Por ejemplo, se utiliza para identificar patrones en los datos, predecir tendencias y detectar anomalías.
  • Creación de modelos: La AI Generativa se utiliza para crear modelos de aprendizaje automático. Por ejemplo, se utiliza para crear modelos de clasificación, modelos de predicción y modelos de recomendación.

Consejos para utilizar AI Generativa

  • Elija el modelo adecuado: Hay muchos modelos de AI Generativa disponibles, cada uno con sus propias fortalezas y debilidades. Elige un modelo que sea adecuado para el tipo de contenido que quieres crear.
  • Experimente con los parámetros: Los modelos de AI Generativa suelen tener una serie de parámetros que puedes ajustar para controlar el aspecto del contenido que generan. Experimenta con diferentes parámetros para encontrar los que mejor se adapten a tus necesidades.
  • Cree un conjunto de datos de entrenamiento de alta calidad: Los modelos de AI Generativa aprenden a partir de los datos en los que se entrenan. Si quieres crear contenido de alta calidad, asegúrate de crear un conjunto de datos de entrenamiento de alta calidad.

Ahora probemos

En esta publicación, aprenderá a conectar Telegram, Generative AI de Google todos esto integrado con Quarkus y Apache Camel. Esta combinación le permitirá crear bots de Telegram que usen Generative AI de Google para generar respuestas creativas.

Antes de crear el código es necesario obtener las llaves para invocar el API de GenAI así como configurar nuestro bot en Telegram donde estaremos interactuando.

Puede encontrar el código fuente completo del ejemplo en GitHub.

Generar API Key con ayuda de Makersuite
  1. Inicie sesión en tu cuenta de Makersuite.

2. Haga clic en el icono «Get API key» en el menu lateral izquierdo.

3. Haga clic en el botón «Create Api key in new project» esto creará un nuevo proyecto en su consola de GCP, donde el asistente configura por usted una llave para invocar el API «Generative Language API».

Debe copiar esta clave y guardarla en un lugar seguro.

Para este ejercicio hará uso del API publico de Google que ya dispone de un modelo entrenado para generar texto, claro siempre puede crear modelos personalizados y usarlos de la misma forma.

Crear un bot de telegram

Para crear un bot de Telegram, puede usar el BotFather, Sigue estos pasos

  1. Abre la aplicación Telegram en tu teléfono o en tu computadora.
  2. Busca el @Botfather en la barra de búsqueda.
  3. Abre el @BotFather y envíale el mensaje /start.
  4. El @BotFather te enviará un mensaje con una lista de comandos.
  5. Envíale el mensaje /newbot.
  6. El @BotFather te pedirá que le des un nombre y un nombre de usuario para tu bot.
  7. Sigue las instrucciones del @BotFather para crear tu bot.

Una vez que hayas creado tu bot, recibirás un mensaje del @BotFather con las claves de tu bot. Estas claves son necesarias para conectar tu bot a Apache Camel.

Crear una ruta de Apache Camel

La ruta de Apache Camel es la encargada de conectar el bot de Telegram con la Generative AI de Google.

  1. Crear un nuevo proyecto con Camel y Quarkus
mvn io.quarkus:quarkus-maven-plugin:3.4.1:create \                                                                                                                                                                                                                
-DprojectGroupId=dev.mikeintoch \
-DprojectArtifactId=camel-quarkus-genai \
-Dextensions="camel-quarkus-core,camel-quarkus-direct,camel-quarkus-rest,camel-quarkus-jsonpath,camel-quarkus-bean,camel-quarkus-telegram,camel-quarkus-http,quarkus-container-image-jib"

2. Agrega el siguiente código al proyecto

import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;

import dev.mikeintoch.bean.Command;
import dev.mikeintoch.bean.Prompt;

public class BotRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        from("telegram:bots")
                .to("direct:transform");

        from("direct:transform")
                .transform().jsonpath("$.text")
                .bean(this, "transformMessage")
                .marshal().json()
        .to("direct:invokeGenAi");

        from("direct:invokeGenAi")
                .setHeader(Exchange.HTTP_METHOD, constant("POST"))
                .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
                .setHeader("Accept", constant("application/json"))
                .setHeader("CamelHttpQuery", simple("key={{genai.api-key}}"))
        .to("{{genai.api-url}}?bridgeEndpoint=true")
        .to("direct:toTelegram");

        from("direct:toTelegram")
                .transform().jsonpath("$.candidates[0].output")
        .to("telegram:bots");
    }

    public void transformMessage(Exchange exchange) {
        Message in = exchange.getIn();

        Prompt prompt = new Prompt();
        Command command = new Command();

        prompt.setText(in.getBody(String.class));

        command.setPrompt(prompt);

        in.setBody(command);
    }
}

El código requiere de la siguiente información en el archivo application.properties

#Quarkus telegram component configuration
camel.component.telegram.authorization-token=${TELEGRAM_AUTHORIZATION_TOKEN:fake_token}

#GenAI Api Key
genai.api-url=${GENAI_API_URL:gen_ai_url}
genai.api-key=${GENAI_API_KEY:fake_api_key}

Puede generar variables de entorno (Si despliega en k8s puede usar secrets para reemplazar los valores) en su sistema para probar el código o reemplazar los valores en el archivo.

Ejecuta tu proyecto de Apache Camel

Para probar el proyecto de Apache Camel, use el siguiente comando:

mvn quarkus:dev

Prueba el bot de telegram

Para probar tu bot de Telegram, envíale un mensaje con un texto. El bot usará Generative AI de Google para generar una respuesta, Envía el siguiente mensaje:

«Nota: El modelo de genai que se esta utilizando solo soporta Inglés«

Create a poem about Apache Camel

El bot responderá con un poema generado por Generative AI de Google.

Puede encontrar el código fuente completo del ejemplo en GitHub.

Contenerizar tu ruta de Apache Camel

Utilice el Plugin Jib para Quarkus para construir y empujar el contenedor a Container Registry

Jib Plugin está integrado como una libreria de Quarkus y puede ser configurado para construir y subir imágenes a un registro sin la necesidad de un Dockerfile. Todas las dependencias se almacenan en caché en una capa diferente a la de la aplicación, haciendo que las reconstrucciones sean rápidas y pequeñas.

Este es un ejemplo para crear la imagen y subirla en el Container Registry dentro de Google Cloud, Ahora ya puedes usar la ruta de camel y ejecutarla en la distribución de Kubernetes que prefiera.

mvn clean package \
-Dquarkus.container-image.push=true \
-Dquarkus.container-image.registry=gcr.io \
-Dquarkus.container-image.group=$GOOGLE_CLOUD_PROJECT \
-Dquarkus.container-image.name=camel-quarkus-genai \
-Dquarkus.container-image.tag=latest \
-Dquarkus.jib.base-jvm-image=gcr.io/distroless/java17:latest

Conclusión

Este tutorial es solo un punto de partida. Puede modificar el código para adaptarlo a sus necesidades. Por ejemplo, puedes usar diferentes modelos de Generative AI de Google para generar diferentes tipos de contenido.

Enlaces de interés

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *