Este es un Bot de chat de telegrama (asistente de IA) que utiliza los modelos de idiomas GPT de OpenAI.
Características notables:
Siga leyendo para obtener una descripción detallada de la función o saltar a la configuración.
El bot actúa como su asistente personal:
? Explique Apache Kafka a un niño de tres años
? Apache Kafka es como un gran buzón que ayuda a diferentes juguetes (computadoras) a enviar mensajes entre sí. Cuando un juguete tiene algo que decir, pone un mensaje en el buzón, y otros juguetes pueden sacar ese mensaje y leerlo. De esta manera, ¡pueden hablar y compartir las cosas rápidamente!
Para permitir que otros usuarios usen el bot, enumere en la propiedad telegram.usernames Config.
El bot tiene un recuerdo terrible, así que no espere que recuerde ningún contexto de chat por defecto. Sin embargo, puede responder con una pregunta de seguimiento ( Ctrl/Cmd + ↑ ). Alternativamente, use un signo más para hacer un seguimiento:
? Ayer, todos mis problemas parecían tan lejos
? Parece que estás citando "ayer" de los Beatles. Es una canción clásica sobre el anhelo y la nostalgia.
? + ¿Quién lo escribió?
? "Ayer" fue escrito por Paul McCartney de los Beatles.
Comandos disponibles:
/retry - Vuelva a clasificar la última pregunta/help - Mostrar ayuda/version - Mostrar información de botsPara reformular o agregar a la última pregunta, simplemente edítelo. El bot luego responderá a la pregunta actualizada.
Para obtener una respuesta del bot en un grupo, mencione en una respuesta a una pregunta:
? Olvidé quién jugó a Ramsy en el Game of Thrones.
? ↳ ↳pokitokibot ayuda? Ramsay Bolton en Game of Thrones fue jugado por Iwan Rheon.
O hacer una pregunta directamente:
? @Pokitokibot ¿Quién jugó a Ramsy en el juego de los tronos?
? Iwan Rheon jugó a Ramsay Bolton en Game of Thrones.
Para que la respuesta de BOT a los miembros del grupo, enumere la identificación del grupo en la propiedad telegram.chat_ids Config. De lo contrario, el BOT ignorará las preguntas de los miembros del grupo a menos que se enumeren en la propiedad de configuración telegram.usernames .
Si no conoce la ID de grupo, ejecute el comando /version bot en un grupo para encontrarla:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
...
Si le pregunta a "vainilla" chatgpt sobre recursos externos, alucinará o admitirá que no tiene acceso a contenido remoto:
? ¿Cuál es el contenido de https://sqlime.org/employees.sql? No hagan suposiciones.
? Como modelo de idioma AI, no puedo acceder a URL externos en Internet.
El bot resuelve el problema obteniendo el contenido remoto y alimentándolo al modelo:
? Nombre 1 característica principal de la versión GO 1.23 https://tip.golang.org/doc/go1.23 ¡Sea breve!
? Una característica importante de GO 1.23 es la inclusión del experimento "Range-Over-Func" como una característica de lenguaje estándar, que permite la cláusula de "rango" en bucles "de rango" para aceptar las funciones del iterador.
Actualmente solo admite contenido de texto (artículos, código, datos), no PDF, imágenes o audio.
Si no desea que el BOT acceda a la URL, cite:
? Contenido exacto de "https://antonz.org/robots.txt"
? No puedo acceder a sitios web externos directamente. Puede verificar el contenido de un archivo robots.txt visitando la URL en su navegador.
Use comandos cortos para ahorrar tiempo y solicite al bot que haga algo específico con sus preguntas. Por ejemplo, pídale que revise su escritura con un comando !proofread :
? !proofread I can has write java programz
? Texto revisado: "Puedo escribir programas Java".
Cambios realizados:
- Eliminado "tiene" para la corrección gramatical; "Can" no requiere "tiene".
- Corrigió "Java" a "Java" para una capitalización adecuada, ya que es un sustantivo propio.
- Cambió "Programz" a "programas" para la ortografía y la claridad correctas.
Hay varios atajos incorporados:
bugfix corrige su código.proofread corrige su escritura.translate traduce su texto al inglés.summarize ofrece un resumen de dos párrafos de un texto. Puede agregar sus propios atajos. Consulte config.example.yml para más detalles.
Para establecer una solicitud personalizada para el chat actual, use el comando /prompt :
? /Aviso eres un genio malvado. Responder con una risa malvada.
Para volver a la solicitud predeterminada, use /prompt reset .
El comando /prompt en los chats grupales solo está disponible para los administradores: los usuarios enumerados en la propiedad telegram.admins .
Use el comando /imagine para generar una imagen utilizando el modelo Dall-E 3 desde OpenAI:
? /Imagina el amanecer de una nueva era
? (hermosa imagen)
el amanecer de una nueva era
El tamaño de imagen predeterminado es 1024 × 1024 PX. Otros tamaños compatibles son 1792 × 1024 y 1024 × 1792:
/Imagínese un gato perezoso en un día soleado 1792 × 1024
La generación de imágenes es bastante costosa. Por defecto, solo está habilitado para usuarios enumerados en telegram.usernames , no para miembros del grupo. Puede cambiar esto con la propiedad de configuración imagine.enabled .
La conveniencia de trabajar con un bot está compuesta por pequeños detalles. Aquí hay algunas situaciones en las que puede ahorrarle tiempo y esfuerzo.
Digamos que recibió un mensaje de un colega o lee una publicación en un canal y desea hacer una pregunta. Simplemente reenvíe el mensaje al bot y responda la pregunta aclaratoria que hace.
Para hacer una pregunta sobre un documento, envíelo como un archivo y escriba la pregunta en el título. El bot leerá el contenido del archivo y la respuesta. Actualmente solo admite contenido de texto (texto sin formato, código, datos), no PDFS, imágenes o audio. El envío de múltiples archivos tampoco es compatible.
A veces, la respuesta de la IA excede la longitud máxima del mensaje establecida por Telegram. En este caso, el Bot no le fallará ni te enviará spam con mensajes. En cambio, enviará la respuesta como un archivo de markdown adjunto.
Para reformular o agregar a la última pregunta, edítelo ( ↑ atajo). El bot notará esto y responderá a la pregunta clarificada.
Use el comando /version para imprimir información detallada sobre el modelo de chat, bot y AI actual:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
Bot information:
- id: 5930739038
- name: @pokitokibot
- version: 129
- usernames: 6 users
- admins: 1 users
- chat IDs: []
- access to messages: True
AI information:
- model: gpt-3.5-turbo
- history depth: 3
- imagine: True
- shortcuts: bugfix, proofread, summarize, translate
Use el comando /config para cambiar casi cualquier configuración en la mosca, sin reiniciar el bot.
telegram.usernames y telegram.chat_ids ).openai.model ), el indicador ( openai.prompt ) y los parámetros ( openai.params ).imagine.enabled ).shortcuts ). Para ver una propiedad de configuración específica, coloque su nombre después /config :
/config telegram.usernames
/config openai.prompt
/config imagine.enabled
Para cambiar una propiedad de configuración específica, coloque su nombre y valor después /config :
/config telegram.usernames ["alice", "bob", "cindy"]
/config openai.prompt "You are an evil AI bot"
/config imagine.enabled none
Cuando trabaje con propiedades de la lista como telegram.usernames , puede agregar o eliminar elementos individuales en lugar de redefinir la lista completa:
/config telegram.usernames +cindy
/config telegram.usernames -bob
El comando /config solo está disponible para los administradores: los usuarios enumerados en la propiedad telegram.admins .
Las discusiones acaloradas con el bot en grupos grandes pueden conducir a un alto uso de la API de Operai. Para evitar gastar todo su presupuesto, establezca límites de mensajes para grupos con la propiedad de configuración de conversation.message_limit . Message_limit.
Puede limitar el número de mensajes de un usuario durante un período de tiempo. Por ejemplo:
message_limit :
count : 10
period : hour message_limit :
count : 1
period : minute message_limit :
count : 30
period : day Obtenga su llave de API de OpenAI
Obtenga su token de bot de telegrama de @botfather
Clonar el repositorio al servidor:
git clone https://github.com/nalgeon/pokitoki.git Copie config.example.yml a config.yml y especifique sus tokens allí. Agregarse a la propiedad telegram.usernames , de lo contrario, el bot estará disponible para todos.
Comience el bot:
docker compose up --build --detachPara detener el bot:
docker compose stopPara actualizar el bot a una nueva versión:
docker compose stop
git pull
docker compose up --build --detach Para distribuciones de Docker más antiguas, use docker-compose en lugar de docker compose .
Prepare el entorno:
python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
Prepare el directorio de configuración y datos:
cp config.example.yml config.yml
mkdir ./data
Establezca tokens y otras configuraciones en config.yml .
Ejecutar pruebas:
python -m unittest discover
Comience el bot:
python -m bot.bot
Para nuevas funciones y mejoras, primero abra un tema para discutir lo que le gustaría cambiar.
Asegúrese de agregar o actualizar las pruebas según corresponda.
Use negro para formato de código y confirmaciones convencionales para mensajes de confirmación.
Para el historial de características, ver lanzamientos.
Originalmente basado en chatgpt_telegram_bot, aunque los proyectos han divergido bastante.