À propos du projet
Il s'agit d'un hub de protocole de chat de groupe implémenté selon la norme « AG-UI Group Chat Extension Protocol v1.0 », écrit avec ASP.NET Core Minimal API en C# / .NET 10. Il transforme le « chat de groupe » en une couche de protocole accessible aux applications tierces : le cycle de vie des groupes et des membres, le fan-out des messages, ainsi que les abonnements et les flux descendants en temps réel suivent un ensemble conventionnel d'événements et de codes d'erreur, où les agents IA participent en tant que membres du groupe.
Capacités du protocole
- Cycle de vie du groupe : création, mise à jour et dissolution, correspondant à GROUP_CREATED / GROUP_UPDATED / GROUP_DISBANDED.
- Gestion des membres : jointure, retrait, départ volontaire, modification des rôles et des profils (GROUP_MEMBER_*).
- Fan-out des messages : les messages utilisateurs sont diffusés via un triplet TEXT_MESSAGE_START/CONTENT/END, avec trois portées de visibilité (all, mentioned, private), et supportent le rappel, les accusés de lecture et l'état de saisie.
- Mécanisme d'abonnement : GROUP_SUBSCRIBE / GROUP_UNSUBSCRIBE / GROUP_SUBSCRIBE_ACK / GROUP_STATE_SNAPSHOT.
- Double transport : WebSocket full-duplex (/ws) et SSE descendant unidirectionnel (/sse), avec maintien de session par heartbeat ; le SSE permet des abonnements et désabonnements dynamiques via API HTTP.
- Règles de déclenchement des agents (Protocole §6) : déclenchement par mention, écoute globale, mots-clés ou contexte (l'IA décide de s'exprimer selon le contexte).
- L'API HTTP ascendante couvre la création de groupe, la découverte/entrée dans le centre de connaissances client, la génération automatique de noms de groupe, la gestion des membres, l'envoi de messages, le transfert de fichiers, le rappel, la lecture, les décisions homme-machine, les snapshots et les listes de membres ; les erreurs retournent un code + message, mappés sur 403/404/409/400. Les interfaces d'écriture écrasent les champs d'identité du corps de la requête selon le jeton, et les interfaces de lecture vérifient que l'appelant est membre du groupe.
Agents et Mémoire
- AguiGroupChat.Agents implémente IAgentGateway basé sur le Microsoft Agent Framework : un fournisseur mock est disponible par défaut, avec possibilité de configurer des points de terminaison compatibles OpenAI (Ollama / vLLM / Azure OpenAI / DeepSeek). Le texte est réinjecté en flux, et les appels de fonction déclenchent TOOL_CALL_START.
- Interaction Homme-Machine (HITL) : les outils peuvent être marqués comme ApprovalRequiredAIFunction ; l'exécution s'interrompt lors de l'appel du modèle, diffusant une carte AGENT_INTERACTION_REQUEST. Seul le déclencheur peut approuver ou refuser, après quoi la session reprend.
- Mémoire sémantique RAG : MemoryContextProvider injecte le contexte de recherche, les vecteurs sont stockés dans pgvector, et l'embedding passe par un point de terminaison HTTP ou un modèle local LLamaSharp (ex: bge-m3). La base de connaissances supporte le découpage de documents et la recherche, avec des paramètres ajustables (portée de mémoire, TopK, seuil de similitude).
- Personnalisation de la mémoire : chaque employé numérique peut être configuré avec cinq préréglages de mémoire et de ton ; à défaut, les paramètres globaux de la plateforme sont utilisés pour assurer la compatibilité ascendante.
- L'ensemble d'outils intégrés comprend une calculatrice, la conversion d'unités, la recherche en mémoire de groupe et la lecture de pièces jointes ; web_search / read_url sont désactivés par défaut.
- Compréhension d'images : les réponses avec pièces jointes image sont routées vers un modèle visuel, l'image étant transmise en contenu multimodal base64.
- Pont de mode de réflexion : le contenu REASONING_MESSAGE_CONTENT des services externes passe par un canal indépendant, permettant au front-end d'afficher des blocs de réflexion repliables.
Applications et extensions
- Gestion des utilisateurs : inscription, connexion, déconnexion, modification de mot de passe, maintenance du profil, hachage PBKDF2 et jetons de session. Authentification par jeton pour WS/SSE ; protection contre l'énumération d'utilisateurs et limitation du débit sur l'interface de connexion.
- RBAC au niveau plateforme : quatre niveaux (SuperAdmin / Admin / Operator / User), configurables via liste ou attribution en ligne par le SuperAdmin. Groupes d'utilisateurs et autorisations par groupe pour la visibilité des employés numériques et des compétences.
- Bibliothèque de compétences : divisée en quatre types (prompt / shell / http / dotnet). Seuls les administrateurs système peuvent modifier les compétences exécutables. Support de la génération de définitions de compétences et d'essais via langage naturel.
- Orchestration d'organisation en un clic : génération d'un plan de postes en flux SSE à partir d'un besoin exprimé, avec prévisualisation de la structure, des compétences et des assignations avant enregistrement et création synchronisée du groupe.
- Chat privé et centre de connaissances client : création idempotente de chats privés avec des employés numériques ; dans le centre de connaissances, les utilisateurs entrent comme participants avec des sessions isolées.
- Recherche globale transversale sur les messages, la mémoire sémantique et la base de connaissances, avec filtrage par visibilité.
- Proxy de liens, export/import de données, configuration de modèle au runtime, journaux d'audit et suppression de compte pour la conformité entreprise.
Déploiement et forme du projet
- Quatre modes d'exécution : démonstration Web, Hub de protocole seul, bureau Windows (WPF + WebView2) et bureau multiplateforme (Avalonia). La version bureau supporte plusieurs instances partageant le même processus backend.
- Persistance optionnelle via snapshot JSON ou bases de données postgres / mysql / sqlite ; docker compose pour lancer postgres(pgvector) + Ollama intégré + Web, avec mémoire sémantique activée par défaut.
- Fournit des SDK d'accès tiers (AguiClient + AguiRealtimeClient, support net8.0/net10.0), des clients d'exemple, des tests unitaires et de bout en bout, ainsi que des scripts d'automatisation Playwright.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.