Assistant IA Agentique pour Messageries Instantanées : AstrBot

Caractéristiques Principales ✨

  • Connexion Mlutiplateforme: Intégration avec QQ, WeChat, Feishu, Discord
  • Noyau Agentique IA: Planification de tâches, décomposition d'instructions complexes
  • Système d'Extensions: Création d'extensions personnalisées en Python
  • Interface Web: Tableau de bord pour configuration et supervision
  • Gestion Contextuelle: Personnalisation de profils et isolement de conversations
  • Appel d'Outils: Accès à des fonctions externes comme la recherche web
  • Commmandes Intégrées: /help, /reset, /provider
  • Mode Sécurisé: Filtrage de contenu activé par défaut

Installation 🛠️

Prérequis

  • Python ≥ 3.10
  • Node.js + pnpm (pour le tableau de bord)

Procédure

  1. Cloner le dépôt : ``` git clone https://github.com/AstrBotDevs/AstrBot.git cd AstrBot
  2. Installer les dépendances : ``` pip install uv uv sync uv run principal.py
  3. Lancer l'interface web : ``` cd dashboard pnpm install pnpm dev
    
    

Utilisation Courante 📖

  • /persona : Modifier le profil de l'IA
  • /plugin off [nom] : Désactiver une exetnsion
  • Requêtes web via discussions naturelles
  • /provider : Changer de modèle IA
  • /reset : Réinitialiser le contexte

Développement d'Extensions

Structure de base d'une extension :

from astrbot.api import Etoile
from astrbot.api.evenement import EvenementMessage, filtre

class ExtensionPerso(Etoile):
    def __init__(self, contexte: Etoile.Contexte) -> None:
        self.ctx = contexte
    
    @filtre.commande("bonjour")
    async def reponse_salutation(self, evt: EvenementMessage):
        yield evt.reponse_texte("Salutations !")

Implémentations Clés

Point d'Entrée Principal

if __name__ == "__main__":
    analyseur = argparse.ArgumentParser()
    analyseur.add_argument("--repertoire-ui", type=str, default=None)
    arguments = analyseur.parse_args()
    
    verifier_environnement()
    initialiser_journal()
    initialiser_base_donnees()
    
    repertoire_web = verifier_fichiers_ui(arguments.repertoire_ui)
    cycle_vie = ChargeurInitial(repertoire_web)
    asyncio.run(cycle_vie.executer())

Gestion du Cycle de Vie

class CycleViePrincipal:
    async def initialiser(self):
        charger_configuration()
        connecter_adaptateurs_plateformes()
        charger_extensions()
    
    async def executer(self):
        asyncio.create_task(self.bus_evenements.distribuer())

Structure d'Extension

class Etoile:
    @property
    def nom(self) -> str:
        return self.__class__.__name__
    
    async def arreter(self):
        pass

Système de Filtres

def commande(nom: str, alias: list[str] = None):
    def decorateur(fonction):
        registre_handlers.enregistrer(
            handler=fonction,
            type_evenement=TypeEvenement.MESSAGE,
            filtres=[FiltreCommande(nom, alias)]
        )
        return fonction
    return decorateur

Étiquettes: AstrBot AgenticAI PluginsPython MessagerieInstantannée FonctionAppel

Publié le 27 juillet à 18h40