55

C贸mo convert铆 un peluche 馃Ц en un chatbot usando Python y GPT-3

22540Puntos

hace 21 d铆as

Curso de Creaci贸n de Videojuegos
Curso de Creaci贸n de Videojuegos

Curso de Creaci贸n de Videojuegos

Entiende la industria de los videojuegos, y crea tu primer t铆tulo. Define el plan de negocios y game design. Dale forma a tu narrativa, gameplay y banda sonora. Aprende y usa gamificaci贸n para enganchar a tus jugadores.

En 2017, durante el sketch en uno de mis videos en YouTube, se me ocurri贸 convertir a un oso de peluche 馃Ц en un personaje. Bautic茅 m谩s adelante al oso como 鈥淧eque帽in鈥. Ahora es el s铆mbolo de mi comunidad, pero adem谩s es una plataforma de inteligencia artificial que combina tecnolog铆as de NLP, GPT-3, Python, Django, c#, Unity, Rust, text-to-speech, big data y mucho m谩s.

Hola, soy Hector Pulido y te mostrar茅 en este post c贸mo funciona este oso de peluche 鈥渧enido del futuro鈥 con presencia en Twitter, Discord y Twitch. Dejaremos la parte social y de crecimiento personal que representa tener a Peque帽铆n en mi vida y en mi comunidad en otro momento si os interesa, dejadlo en los comentarios 馃憖.

Qu茅 tecnolog铆a us茅 para crear este ecosistema

Bot de Twitter con Python 驴Peque帽铆n/Twitter?

El bot de Twitter por el momento solo hace retweet a art铆culos sobre inteligencia artificial, data science y desarrollo de videojuegos. Quiero a帽adir crypto, no obstante es un poco complicado quedarme 煤nicamente con la parte tecnol贸gica, ignorar la parte econ贸mica y sobre todo evitar a los estafadores.

Este bot est谩 hecho con Python, Django y para conectarse con Twitter usa T**weepy.** El reto tecnol贸gico m谩s importante actualmente es esquivar personas hablando de temas pol茅micos, esot茅ricos y fake news. Es por eso que guardo en Django todos los tweets que Peque帽铆n retuitea, el objetivo es clasificarlos y generar un dataset que reconozca ese tipo de tweets.

Ahora mismo este (y el resto de las piezas del bot) est谩n subidas a Heroku, lo que acarrea un problema: tengo espacio limitado en la base de datos. Es por eso que el bot se conecta con mi cuenta de Google Drive y ah铆 guarda el dataset.

Si el bot detecta que una persona coloca tweets interesantes y tienen mucha interacci贸n, el bot autom谩ticamente decide seguir a esa persona, curiosamente ha ganado m谩s de 600 seguidores en esa Red social desde que empez贸 a seguir a gente. Cosas de la plataforma supongo 馃, Ya sabes qu茅 hacer si quieres obtener seguidores m谩s r谩pido.

Untitled.png
defretweet(self, tweets):for tweet in tweets:
        tweet.retweeted = True
        tweet.save()
        tweet.user.retweet_count += 1
        tweet.user.save()
        try:
            self.api.retweet(tweet.tweet_id)
            time.sleep(self.sleep_time)
        except:
            print(
                f"Error retweeting tweet from: {tweet.user.user_profile}, {tweet.text[:20]}"
            )
            continue

C贸digo para hacer los retweets, m谩s c贸digo en el repositorio de pequenin/Twitter

Eso es pequenin/Twitter, bueno lo ser谩 por poco tiempo m谩s, ya que pronto se integrar谩 con la pr贸xima pieza en este rompecabezas y una de las partes m谩s interesantes.

Inteligencia artificial con GPT-3 驴Pequenin/Brain?

Pequenin/Brain es un microservicio que recibe datos provenientes de Discord como recursos o memes. Adem谩s de eso, puede servir esos datos mediante una interfaz de texto NLP con comandos como 鈥淢u茅strame un meme鈥 o 鈥淒ame informaci贸n sobre Rust鈥. No solo eso, sino que tambi茅n est谩 conectado a GPT-3 para tener todo tipo de hilarantes conversaciones (ejemplos m谩s abajo 馃憞).

Esta pieza est谩 hecha con Python, Django y, por seguridad, se conecta mediante API a los dem谩s microservicios. Por ahora solamente con Discord, pero pronto har茅 que se conecte con Twitter y pueda hacer cosillas interesantes en esa Red social.

En este caso, las interacciones no quedan guardadas m谩s que por poco tiempo para que el robot pueda tener una memoria a corto plazo.

intents = {
    "doubts": doubts,
    "search": search_resource,
    "meme": get_random_meme,
    None: gpt3_response,
}

defpost(self, request, *args, **kwargs):
    ...

    parsing = settings.CHATBOT.predict(query)

    try:
        intent = parsing["intent"]["intentName"]
    except:
        intent = Noneif intent notin self.intents:
        intent = None

    parsing["history"] = request.data.get("history")
    response = self.get_text(intent, parsing)

    ...

    return Response(response, status=status.HTTP_200_OK)

C贸digo que decide que tipo de respuesta debe tener Peque帽铆n*, m谩s informaci贸n en el repositorio de pequenin/brain*

Chatbot de discord con Rust 驴Pequenin/Discord?

Pequenin/Discord tiene el stack m谩s interesante y es que esta parte en espec铆fico est谩 totalmente hecha en Rust; es tremendamente veloz y eficiente. Se conecta a brain para guardar los datos del servidor, como recursos, ofertas de empleo y sobre todo memes, pero tambi茅n detecta cuando lo mencionan para tener conversaciones con los miembros del grupo.

Untitled_1.png
Respuesta NO escrita por un humano鈥

Untitled 1.png

Aqu铆 una representaci贸n su incre铆ble sentido para los memes鈥

Otra cosa curiosa es que tuve que desarrollar mi propio Dockerfile para poder subir Rust a Heroku, ya que no hay mucha informaci贸n de eso en la web. Os mostr茅 una versi贸n simplificada de ese archivo en uno de los anteriores posts sobre rust.

async fnmanage_mentions(&self, ctx: &Context, msg: &Message) {
    let content = clean_text(&msg.content);
    self.add_msg_to_history(
        &ctx,
        "H".to_string(),
        &content,
        msg.channel_id.0.to_string(),
    )
    .await;

    let history = self.show_msg_history(ctx, msg).await;
    let endpoint = format!("{}phrase/", self.endpoint);

    letmut map = get_credentials(&self);
    map.insert("query", &content);
    map.insert("history", &history);

    let resp = self.client.post(endpoint).json(&map)
        .send().await.unwrap().text().await.unwrap();

    let resp = post_process(&resp, &msg);

    for phrase in resp {
        let clean_phrase = clean_text(&phrase);
        self.add_msg_to_history(
            &ctx,
            "P".to_string(),
            &clean_phrase,
            msg.channel_id.0.to_string(),
        )
        .await;
        ifletErr(why) = msg.channel_id.say(&ctx.http, phrase).await {
            println!("Error sending message: {:?}", why);
        }
    }
}

C贸digo que se conecta con pequenin/brain y responde acorde a lo que este 煤ltimo responde, m谩s informaci贸n en el repositorio de pequenin/Discord.

Chatbot para Twitch con GPT-2 y Python 驴Pequenin/Twitch?

Por 煤ltimo, pero no menos importante Pequenin/Twitch este fue el primer bot que hice, est谩 basado en GPT-2. Este es la 煤nica pieza de c贸digo que no est谩 en Heroku, puesto que sobrepasa los l铆mites de la plataforma y, aunque s铆 est谩 hecho en Python, hay tambi茅n una versi贸n en C# que se conecta con Unity. Cada vez que hago stream, se enciende en segundo plano el bot para que interactuar con el chat.

Como tecnolog铆as clave utiliza hugging face y twitchio. Tiene un mont贸n de caracter铆sticas y, adem谩s de las capacidades de chatbot conversacional, tiene comandos interesantes, entre ellos, uno en donde elige dos miembros del chat al azar y predice qui茅n de los dos ganar铆a en una pelea. Tambi茅n integra text to speech para cuando llegan donaciones y much铆simas caracter铆sticas m谩s.

asyncdefhandle_custom_commands(self, message):
    text = message.content.lower()
    for key, command in self.custom_commands.items():
        if text.startswith(self.bot_prefix + key.lower()):
            if type(command) is str:
                returnawait message.channel.send(command)
            returnawait command(message, self)

C贸digo que decide que comando se ejecutar谩, m谩s informaci贸n en el repositorio de peque帽铆n/Twitch

Y esas son las caras de Peque帽铆n hasta ahora. Tiene bastante tecnolog铆a a coste casi 0, pero por supuesto que todav铆a no ha acabado. Estoy trabajando muy fuerte con un grupo de artistas en una colecci贸n nft con la que el propio Peque帽铆n interactuar谩. Por supuesto, tengo muchos proyectos m谩s. Cu茅ntame en los comentarios qu茅 opinas de este proyecto y qu茅 parte de esto te gustar铆a ver en un curso a m谩s detalle.

Mientras tanto os invito a mi curso de desarrollo de videojuegos multijugador en donde hablaremos sobre el desarrollo de los juegos multijugador, desde counter strike hasta WOW.

Curso de Creaci贸n de Videojuegos
Curso de Creaci贸n de Videojuegos

Curso de Creaci贸n de Videojuegos

Entiende la industria de los videojuegos, y crea tu primer t铆tulo. Define el plan de negocios y game design. Dale forma a tu narrativa, gameplay y banda sonora. Aprende y usa gamificaci贸n para enganchar a tus jugadores.
Hector
Hector
hector_pulido_

22540Puntos

hace 21 d铆as

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
7
5043Puntos

cuando un curso de sobre bot en discord con rust?? :3

3
4571Puntos

鈥淟ife is a party and i am the pi帽ata鈥 Jajajajajaja lo m谩s 茅pico que he le铆do.

1
22540Puntos
20 d铆as

Jajaja que buen gusto tiene para los memes el Peque帽in

3
8920Puntos

Que genial! Yo recientemente hice un bot de discord pero con js y python. No hab铆a considerado gpt3 as铆 que me hice mi propio modelo pero ahora que lo veo creo que puedo intentar conectarlo.
Excelente post! 馃槏

1
8920Puntos
14 d铆as

Openai no est谩 disponible para Per煤 馃ゲ
Toca tomar v铆as alternas. 馃槈

2
1317Puntos

acabo de queda maravillado con el gran potencial que tiene este tipo de tecnolog铆as

2
22540Puntos
20 d铆as

Sobre todo cuando las combinas salen cosas muy cool

2
972Puntos

pregunta seria: que deber铆a aprender para poder crear mi propio chatbot? 馃

2
22540Puntos
19 d铆as

Este bot en espec铆fico es muuuy complejo, por eso tiene tanta cosa, pero con Python + Hugging face puedes hacer un chatbot muy decente de dominio abierto.

2
18664Puntos

Hey!!! Tu osito me retwitteo un post.

Jejejeje, me saco una sonrisa. Muchas gracias!!!

1
5043Puntos

el peque帽in verso is coming

1

DramaCool is korean tv kshow123 website which provides latest
kshows and kissasian with eng sub online free in hd quality

DramaCool