Il s'agit d'un bot de chat télégramme (assistant AI) qui utilise les modèles de langue GPT d'OpenAI.
Caractéristiques notables:
Lisez la suite pour une description détaillée de fonctionnalités ou sautez à la configuration.
Le bot agit comme votre assistant personnel:
? Expliquez Apache Kafka à un enfant de trois ans
? Apache Kafka est comme une grande boîte aux lettres qui aide différents jouets (ordinateurs) se envoyer des messages. Quand un jouet a quelque chose à dire, il met un message dans la boîte aux lettres, et d'autres jouets peuvent remettre ce message et le lire. De cette façon, ils peuvent parler et partager les choses rapidement!
Pour permettre à d'autres utilisateurs d'utiliser le bot, énumérez-les dans la propriété telegram.usernames Config.
Le bot a une mémoire terrible, alors ne vous attendez pas à ce qu'elle se souvienne de tout contexte de chat par défaut. Vous pouvez cependant répondre avec une question de suivi ( Ctrl/Cmd + ↑ ). Alternativement, utilisez un signe plus pour suivre:
? Hier, tous mes problèmes semblaient si loin
? Il semble que vous citiez "hier" par les Beatles. C'est une chanson classique sur le désir et la nostalgie.
? + Qui l'a écrit?
? "Hier" a été écrit par Paul McCartney des Beatles.
Commandes disponibles:
/retry - Réessayer en répondant à la dernière question/help - Afficher l'aide/version - Afficher les informations du botPour reformuler ou ajouter à la dernière question, modifiez-la simplement. Le bot répondra ensuite à la question mise à jour.
Pour obtenir une réponse du bot dans un groupe, mentionnez-le en réponse à une question:
? J'ai oublié qui a joué à Ramsy dans le Game of Thrones?
? ↳ @pokitokibot aide? Ramsay Bolton dans Game of Thrones a été joué par Iwan Rheon.
Ou posez directement une question:
? @pokitokibot qui a joué à Ramsy dans le Game of Thrones?
? Iwan Rheon a joué Ramsay Bolton dans Game of Thrones.
Pour faire en sorte que le bot réponde aux membres du groupe, répertoriez l'ID de groupe dans la propriété telegram.chat_ids Config. Sinon, le bot ignorera les questions des membres du groupe, sauf s'ils sont répertoriés dans la propriété telegram.usernames Config.
Si vous ne connaissez pas l'ID de groupe, exécutez la commande /version Bot dans un groupe pour le trouver:
Chat information:
- id: -1001405001234
- title: My Favorite Group
- type: supergroup
...
Si vous demandez un chat de "vanille" sur les ressources externes, elle hallucinera ou admettra qu'il n'a pas accès au contenu distant:
? Quel est le contenu de https://sqlime.org/employees.sql? Ne faire aucune hypothèse.
? En tant que modèle de langue AI, je ne peux pas accéder aux URL externes sur Internet.
Le bot résout le problème en récupérant le contenu distant et en le nourrissant au modèle:
? Nom 1 fonctionnalité principale de la version Go 1.23 https://tip.golang.org/doc/go1.23 être bref!
? Une caractéristique majeure de GO 1.23 est l'inclusion de l'expérience "Range-Over-Func" en tant que fonctionnalité linguistique standard, permettant à la clause "Range" dans des boucles "à forte" pour accepter les fonctions d'itérateur.
Actuellement, ne prend en charge que le contenu texte (articles, code, données), pas les PDF, les images ou l'audio.
Si vous ne voulez pas que le bot accéde à l'URL, citez-le:
? Contenu exact de "https://antonz.org/robots.txt"
? Je ne peux pas accéder directement aux sites Web externes. Vous pouvez vérifier le contenu d'un fichier robots.txt en visitant l'URL dans votre navigateur.
Utilisez des commandes courtes pour gagner du temps et demandez au bot de faire quelque chose de spécifique avec vos questions. Par exemple, demandez-lui de relire votre écriture avec une commande !proofread
? ! Relire je peux avoir écrit Java Programz
? Texte révisé: "Je peux écrire des programmes Java."
Modifications apportées:
- Supprimé "a" pour l'exactitude grammaticale; "peut" ne nécessite pas "a."
- Corrigé "Java" à "Java" pour une capitalisation appropriée car il s'agit d'un nom approprié.
- Modifié "ProgramZ" en "programmes" pour l'orthographe et la clarté correctes.
Il y a plusieurs raccourcis intégrés:
bugfix corrige votre code.proofread corrige votre écriture.translate traduit votre texte en anglais.summarize donne un résumé de deux paragraphes d'un texte. Vous pouvez ajouter vos propres raccourcis. Voir config.example.yml pour plus de détails.
Pour définir une invite personnalisée pour le chat actuel, utilisez la commande /prompt :
? / Vous êtes un génie maléfique. Répondre avec un rire diabolique.
Pour revenir à l'invite par défaut, utilisez /prompt reset .
La commande /prompt dans les chats de groupe est uniquement disponible pour les administrateurs - utilisateurs répertoriés dans la propriété telegram.admins .
Utilisez la commande /imagine pour générer une image à l'aide du modèle Dall-E 3 à partir d'Openai:
? / Imaginez l'aube d'une nouvelle ère
? (belle photo)
L'aube d'une nouvelle ère
La taille de l'image par défaut est de 1024 × 1024 px. Les autres tailles prises en charge sont 1792 × 1024 et 1024 × 1792:
/ Imaginez un chat paresseux un jour ensoleillé 1792 × 1024
La génération d'images est assez chère. Par défaut, il n'est activé que pour les utilisateurs répertoriés dans telegram.usernames , pas pour les membres du groupe. Vous pouvez changer cela avec la propriété imagine.enabled Config.
La commodité de travailler avec un bot est composée de petits détails. Voici quelques situations où cela peut vous faire gagner du temps et des efforts.
Supposons que vous ayez reçu un message d'un collègue ou lisez un article sur une chaîne et que vous souhaitez poser une question. Transférez simplement le message au bot et répondez à la question de clarification qu'il pose.
Pour poser une question sur un document, envoyez-le en tant que fichier et écrivez la question dans la légende. Le bot lira le contenu du fichier et la réponse. Actuellement, ne prend en charge que le contenu texte (texte brut, code, données), pas les PDF, les images ou l'audio. L'envoi de plusieurs fichiers n'est pas non plus pris en charge.
Parfois, la réponse de l'IA dépasse la longueur de message maximale définie par Telegram. Dans ce cas, le bot ne vous échouera pas ou ne vous spammera pas avec des messages. Au lieu de cela, il enverra la réponse en tant que fichier de marque joint.
Pour reformuler ou ajouter à la dernière question, modifiez-la ( ↑ raccourci). Le bot le remarquera et répondra à la question clarifiée.
Utilisez la commande /version pour imprimer des informations détaillées sur le modèle actuel de chat, de bot et AI:
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
Utilisez la commande /config pour modifier presque tous les paramètres à la volée, sans redémarrer le bot.
telegram.usernames et telegram.chat_ids ).openai.model ), invite ( openai.prompt ) et params ( openai.params ).imagine.enabled ).shortcuts ). Pour afficher une propriété de configuration spécifique, mettez son nom après /config :
/config telegram.usernames
/config openai.prompt
/config imagine.enabled
Pour modifier une propriété de configuration spécifique, mettez son nom et sa valeur après /config :
/config telegram.usernames ["alice", "bob", "cindy"]
/config openai.prompt "You are an evil AI bot"
/config imagine.enabled none
Lorsque vous travaillez avec des propriétés de liste comme telegram.usernames , vous pouvez ajouter ou supprimer des éléments individuels au lieu de redéfinir toute la liste:
/config telegram.usernames +cindy
/config telegram.usernames -bob
La commande /config est uniquement disponible pour les administrateurs - utilisateurs répertoriés dans la propriété telegram.admins .
Des discussions chauffées avec le bot en grands groupes peuvent conduire à une utilisation élevée de l'API OpenAI. Pour éviter de dépenser l'intégralité de votre budget, définissez des limites de message pour les groupes avec la propriété conversation.message_limit Config.
Vous pouvez limiter le nombre de messages d'un utilisateur sur une période de temps. Par exemple:
message_limit :
count : 10
period : hour message_limit :
count : 1
period : minute message_limit :
count : 30
period : day Obtenez votre clé API Openai
Obtenez votre jeton de bot télégramme de @botfather
Clone le repo au serveur:
git clone https://github.com/nalgeon/pokitoki.git Copiez config.example.yml à config.yml et spécifiez vos jetons là-bas. Ajoutez-vous à la propriété telegram.usernames , sinon le bot sera disponible pour tout le monde.
Démarrez le bot:
docker compose up --build --detachPour arrêter le bot:
docker compose stopPour mettre à jour le bot vers une nouvelle version:
docker compose stop
git pull
docker compose up --build --detach Pour les distributions docker plus anciennes, utilisez docker-compose au lieu de docker compose .
Préparer l'environnement:
python3 -m venv env
. env/bin/activate
pip install -r requirements.txt
Préparer le répertoire de configuration et de données:
cp config.example.yml config.yml
mkdir ./data
Définir les jetons et autres paramètres dans config.yml .
Exécutez des tests:
python -m unittest discover
Démarrez le bot:
python -m bot.bot
Pour de nouvelles fonctionnalités et améliorations, veuillez d'abord ouvrir un problème pour discuter de ce que vous souhaitez changer.
Assurez-vous d'ajouter ou de mettre à jour les tests le cas échéant.
Utilisez Black pour le formatage du code et les validations conventionnelles pour les messages de validation.
Pour l'historique des fonctionnalités, voir les versions.
Basé à l'origine sur ChatGPT_TELEGRAM_BOT, bien que les projets aient un peu divergé.