Categorías
Uncategorized

Bot Telegram Con ChatGPT

Bienvenidos una vez mas a este espacio, en esta ocasión estaremos creando un Bot de telegram al cual le estaremos integrando chatgpt.

Este será un sencillo ejemplo de cómo integrar el api de OpenAI con el api de Telegram

Como primer paso debemos crear un api key de OpenAI para poder interactuar con la misma, para hacer esto nos dirigimos a https://platform.openai.com/account/api-keys y creamos nuestra key presionando el botón

Le asignamos un nombre y presionamos créate secret key

Una vez presionado el botón OpenAI nos advierte que debemos guardar la key en un lugar seguro y por razones de seguridad no seremos capaces de ver la key nuevamente así que debemos copiar la key y guardarla tal como nos recomienda OpenAI

Una vez creada nuestra key de OpenAI nos dirigimos a Bot Father y creamos nuestro Bot siguiendo las instrucciones y guardamos el token de nuestro Bot

Una vez hecho esto ya estamos listos para empezar con nuestro Bot

Lo primero que debemos hacer es importar los módulos necesarios para nuestro código

import json
from aiogram import Bot, Dispatcher, executor, types
import openai

el modulo json lo utilizamos para leer el contenido del archivo de configuración, el modulo aiogram es utilizado para interactuar con el api de Telegram y el modulo openai es utilizado para interactuar con el api de OpenAI

yo he creado un archivo de configuración json en el cual almaceno la key de OpenAI y el token de nuestro Bot, esto puede hacerse de esta forma o también puede hacerse almacenando las keys en variables de entorno

Lo siguiente que debemos hacer es leer nuestras keys del archivo de configuración json esto lo hacemos abriendo nuestro archivo con open y json.load() y almacenamos nuestras keys en las variables telegram_token y opeanai_key

# leemos las keys
with open("config.json") as cfg:
  data=json.load(cfg)
  telegram_token=data["telegram_token"]
  openai_key=data["openai_key"]

lo siguiente que hacemos es asignar nuestra key de OpenAI y creamos la instancia del Bot

# Asignamos la key OpenAi
openai.api_key= openai_key

# Creamos La instancia del bot
bot=Bot(token=telegram_token)

Lo siguiente es instanciar nuestro dispatcher el cual es un componente de la biblioteca aiogram que es utilizado para manejar y enrutar mensajes entrantes en un Bot de Telegram. este recibe los mensajes y los dirige a las funciones de manejo adecuadas para su procesamiento.

El dispatcher se encarga de registrar y administrar los controladores de mensajes para diferentes tipos de eventos, tales como mensajes de texto, comandos, actualizaciones de chat entre otros. Puede asociar funciones especificas a estos eventos y ejecutarlas cuando se produzcan

Algunas funciones importantes del Dispatcher incluyen:

register_message_handler(): Permite registrar una función para manejar mensajes de texto entrantes. Se puede especificar opcionalmente una condición para filtrar los mensajes basados en su contenido o atributos.

register_callback_query_handler(): Permite registrar una función para manejar consultas de botones en línea. Estas consultas se generan cuando un usuario interactúa con un botón en línea adjunto a un mensaje.

register_inline_handler(): Permite registrar una función para manejar consultas en línea. Estas consultas se generan cuando un usuario escribe el nombre del Bot seguido de un comando o consulta especial en el campo de entrada de un chat.

register_errors_handler(): Permite registrar una función para manejar errores que ocurren durante la ejecución del Bot. Esto puede ser útil para manejar excepciones y tomar medidas adecuadas en caso de errores.

En este caso nosotros estaremos usando el decorador message_handler para asociar funciones a mensajes.

@disp.message_handler(commands=["start", "help"])
async def bienvenido(message: types.Message):
  await message.reply("bienvenido a este bot, preguntame lo que quieras!")

lo que hemos hecho en el código de arriba es crear una función decorada llamada bienvenido la cual se ejecutará cuando se reciba un mensaje que contenga alguno de los comandos especificados en la lista (start o help), esta responderá con el mensaje “bienvenido a este Bot, preguntame lo que quieras!»

Luego creamos otra función la cual manejara cualquier otro mensaje que no sea un comando

@disp.message_handler()
async def chat(message: types.Message):
  response = openai.Completion.create(
    model="text-davinci-003",
    prompt=message.text,
    temperature=0,
    max_tokens=100,
    top_p=1,
    frequency_penalty=0.0,
    presence_penalty=0.0
  )
  await message.reply(response.choices[0].text)


esta función utiliza el api de OpenAI para generar una respuesta al mensaje recibido utilizando el modelo text-davinci-003 la respuesta generada se envía como respuesta al mensaje enviado

por último, iniciamos nuestro dispatcher con executor.start_polling(disp)

if __name__ == "__main__":
  executor.start_polling(disp)

al ejecutar nuestro código e interactuar con nuestro Bot de telegram

Vemos que nuestro Bot interactúa con nosotros correctamente

Conclusión

En esta ocasión hemos aprendido como crear nuestros bots de telegram y como interactuar con ellos utilizando el api de OpenAI, también hemos visto como utilizar aiogram para crear nuestros bots de una forma más fácil

Deja una respuesta

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