Encore un autre assistant intelligent (YAIA)
Une interface multimodal chat avec accès à de nombreux outils.
Description
YAIA est une interface multimodal chat sophistiquée, alimentée par des modèles d'IA avancés et équipée d'une variété d'outils. Ça peut:
- Recherchez et naviguez sur le Web en temps réel
- Interrogez Wikipédia pour obtenir des informations
- Effectuer des recherches d'actualités et de cartes
- Exécutez en toute sécurité du code Python capable de produire du texte et des images tels que des graphiques et des diagrammes.
- Rédiger des articles longs mêlant texte et images
- Générer, rechercher et comparer des images
- Analyser des documents et des images
- Rechercher et télécharger des articles arXiv
- Générez et enregistrez des conversations sous forme de fichiers texte et audio
- Enregistrer les fichiers dans le répertoire de sortie
- Suivre les améliorations personnelles
- Gérer les listes de contrôle pour le suivi des tâches
Architecture
Voici les principaux composants :
- Gradio 5 pour l'interface web
- Amazon Bedrock pour gérer les conversations et l'utilisation des outils
- Anthropic Claude 3.5 Sonnet comme modèle principal
- Modèles de texte Amazon Titan et d'intégrations multimodales
- Générateur d'images Amazon Titan
- OpenSearch pour les index textuels et multimodaux
- Amazon Polly pour les voix
- AWS Lambda pour l'interpréteur de code
Exemples
Voici des exemples d’utilisation de divers outils :
Recherche sur le Web : "Recherchez sur le Web les avancées récentes en matière d'informatique quantique."
Wikipédia : "Trouvez des articles Wikipédia sur l'histoire de l'intelligence artificielle."
Python Scripting : "Créez un script Python pour générer un graphique à barres des émissions mondiales de CO2 par pays."
Sketchbook : "Commencez un nouveau carnet de croquis et rédigez une introduction sur la façon de calculer Pi avec des méthodes numériques."
Génération d'images : "Générez une image d'une ville futuriste avec des voitures volantes et de grands gratte-ciel."
Recherche d'images : "Recherchez dans le catalogue d'images des photos d'espèces menacées."
arXiv Integration : "Recherche d'articles de recherche récents sur l'apprentissage profond dans le traitement du langage naturel."
Conversation Generation : "Créez une conversation entre trois experts discutant de la manière de mettre en place un RAG multimodal."
Gestion des fichiers : "Enregistrez un résumé de notre discussion sur le changement climatique dans un fichier nommé 'climate_change_summary.txt'."
Amélioration personnelle : "Voici une suggestion pour vous améliorer : pour améliorer les réponses, recherchez des sources officielles."
Liste de contrôle : "Démarrez une nouvelle liste de contrôle pour suivre une liste de tâches une par une."
Principales fonctionnalités et outils
Interactions Web :
- DuckDuckGo Text Search : effectue des recherches sur le Web
- Recherche d'actualités DuckDuckGo : recherche des articles d'actualité récents
- DuckDuckGo Maps Search : recherche des emplacements et des entreprises
- Recherche d'images DuckDuckGo : recherche des images accessibles au public
- Navigateur Web : parcourt les sites Web et récupère leur contenu
Outils Wikipédia :
- Recherche Wikipédia : recherche les pages Wikipédia pertinentes
- Recherche de géodonnées Wikipédia : localise les articles Wikipédia par emplacement géographique
- Wikipedia Page Retriever : récupère le contenu complet de la page Wikipédia
Scripts Python :
- Exécute des scripts Python pour les calculs, les tests et la génération de résultats, y compris du texte et des images
- Des modules Python peuvent être ajoutés à l'interpréteur Python
- Le code Python est exécuté dans un environnement sécurisé fourni par AWS Lambda
Gestion de contenu :
- Archives personnelles : stocke et récupère du texte, du Markdown ou du contenu HTML à l'aide d'une base de données sémantique
- Carnet de croquis : gère un carnet de croquis de plusieurs pages pour rédiger et réviser du contenu long. Prend en charge plusieurs formats de sortie :
- Markdown (.md) : pour une lecture et une édition faciles
- Document Word (.docx) : pour l'édition de documents
Traitement des images :
- Génération d'images : crée des images basées sur des invites textuelles
- Recherche dans le catalogue d'images : recherche les images par description
- Recherche de similarité d'images : recherche des images similaires en fonction d'une image de référence
- Images aléatoires : récupère des images aléatoires du catalogue
- Obtenir l'image par ID : récupère une image spécifique du catalogue en utilisant son ID
- Nombre d'images du catalogue : renvoie le nombre total d'images dans le catalogue
- Télécharger l'image : ajoute des images à partir d'URL au catalogue
Intégration arXiv :
- Rechercher et télécharger des articles arXiv
- Stockez le contenu papier dans les archives pour une récupération facile
Génération de conversations :
- Transformez le contenu en une conversation entre deux à quatre personnes
- Générez des fichiers audio pour la conversation à l'aide de la synthèse vocale
Gestion des fichiers :
- Enregistrer le fichier : permet d'enregistrer le contenu du texte dans un fichier portant un nom spécifié dans le répertoire de sortie.
Amélioration personnelle :
- Suivez les suggestions et les erreurs pour les améliorations futures
Liste de contrôle :
- Gérez les listes de tâches avec la possibilité d'ajouter des éléments, de les marquer comme terminés et de consulter la progression
Pour une liste complète des outils disponibles et de leur utilisation, reportez-vous à ./Config/tools.json
.
Exigences
- Un outil conteneur : Docker ou Finch (pour installer Finch, suivez les instructions ici)
- Python 3.12 ou version ultérieure
- Compte AWS avec les autorisations appropriées pour accéder à Amazon Bedrock, AWS Lambda et Amazon ECR
Installation
Clonez le dépôt :
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
Créez et activez un environnement virtuel (facultatif mais recommandé) :
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Installez les packages requis :
pip install -r requirements.txt
Configurez la fonction AWS Lambda pour l'exécution du code :
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Pour utiliser Selenium pour la navigation Web, installez ChromeDriver. Utiliser Homebrew :
brew install --cask chromedriver
Pour produire de l'audio, installez ffmpeg
. Utiliser Homebrew :
Configuration d'OpenSearch
Vous pouvez soit utiliser une instance OpenSearch locale, soit vous connecter à un serveur distant. Pour une configuration locale :
Accédez au répertoire OpenSearch :
Définissez le mot de passe administrateur (première configuration), cette étape créera le fichier .env
et les fichiers opensearch_env.sh
:
Démarrez OpenSearch localement (il doit accéder au fichier .env
) :
Assurez-vous qu'OpenSearch (2 nœuds + tableau de bord) démarre correctement en vérifiant la sortie
Pour mettre à jour OpenSearch, téléchargez les nouvelles images de conteneur à l'aide de ce script :
Pour la configuration du serveur distant, mettez à jour le code de création du client dans le script principal.
Pour changer le mot de passe, vous devez supprimer le conteneur utilisant finch
ou docker
, puis définir un nouveau mot de passe.
Usage
Les modèles par défaut pour le texte, les images et les intégrations se trouvent dans le fichier Config/config.ini
. Les modèles à utiliser sont spécifiés à l'aide des ID de modèle Amazon Bedrock ou des ID de profil d'inférence inter-régions. Vous avez besoin d’autorisations et d’un accès à ces modèles, comme décrit dans Modèles de fondation Access.
Cette section suppose qu'OpenSearch s'exécute localement dans une autre fenêtre de terminal comme décrit précédemment.
Chargez le mot de passe administrateur OpenSearch dans l'environnement :
source OpenSearch/opensearch_env.sh
Exécutez l'application :
python multimodal_chat.py
Pour réinitialiser le texte et les index multimodaux (remarque : cela ne supprime pas les images dans ./Images/
) :
python multimodal_chat.py --reset-index
Ouvrez un navigateur Web et accédez à http://127.0.0.1:7860/ pour commencer à discuter.
Vidéos de démonstration
Voici quelques exemples de ce que vous pouvez faire avec cette application.
Naviguez sur Internet et utilisez les archives sémantiques
Dans cette démo :
- Parcourez les sites Web à l'aide de Selenium et d'outils spécifiques pour DuckDuckGo (recherche, actualités, géorecherche) et Wikipedia
- Utilisez l'outil d'archivage de texte sémantique pour archiver des documents et les récupérer par mots-clés
Importer et rechercher des images
Dans cette démo :
- Utiliser un index multimodal et le système de fichiers local pour gérer un catalogue d'images
- Stocker les images avec une description générée
- Récupérer des images par description textuelle (recherche sémantique)
- Récupérer des images par similarité avec une autre image
- Récupérer des images aléatoires
Générer et rechercher des images
Dans cette démo :
- Générer des images à partir d'une description textuelle
- L'invite texte-image est générée à partir des instructions de chat
- Cette approche permet d'utiliser la conversation globale pour améliorer l'invite
Interpréteur de code Python
Dans cette démo :
- Exécuter du code généré par l'IA pour résoudre des problèmes
- Exécution pour la sécurité dans une fonction AWS Lambda avec des autorisations de base
- Déployé via une image de conteneur pour ajouter facilement des modules Python
- Python uniquement mais facilement extensible
Écrire sur un "carnet de croquis"
Dans cette démo :
- Un outil pour aider à rédiger de longs textes tels que des articles et des billets de blog)
- Fournir un accès séquentiel au texte divisé en pages
- Pour atténuer « l'asymétrie » entre les tailles d'entrée et de sortie d'un modèle
Carnet de croquis avec une révision du code Python
Dans cette démo :
- Les meilleurs résultats utilisent plusieurs outils ensemble
- Commencez avec un carnet de croquis pour écrire un long article
- L'article contient des extraits de code
- Une révision exécute et teste tous les extraits de code et met à jour chaque page en corrigeant le code (si nécessaire) et en ajoutant les résultats réels
Dépannage
- Si vous rencontrez des problèmes avec OpenSearch, vérifiez les paramètres de connexion et assurez-vous que le service est en cours d'exécution.
- Pour les erreurs de fonction AWS Lambda, vérifiez vos informations d'identification et autorisations AWS
- Si le traitement de l'image échoue, assurez-vous que les bibliothèques nécessaires sont installées et vérifiez les autorisations des fichiers.
Contribuer
Les contributions à YAIA sont les bienvenues ! Veuillez vous référer aux directives de contribution pour plus d'informations sur la façon de soumettre des demandes d'extraction, de signaler des problèmes ou de demander des fonctionnalités.
Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Conseils d'utilisation
- Combinez plusieurs outils pour des tâches complexes. Par exemple, utilisez la recherche sur le Web pour trouver des informations, puis utilisez le carnet de croquis pour rédiger un résumé et enfin générez une conversation sur le sujet.
- Lorsque vous travaillez avec des images, vous pouvez générer de nouvelles images, rechercher des images existantes ou télécharger des images à partir du Web pour les ajouter à votre catalogue.
- Utilisez l'intégration arXiv pour rester au courant des dernières recherches dans votre domaine d'intérêt.
- L'outil de génération de conversations est idéal pour créer du contenu engageant ou préparer des présentations.
- Vérifiez et mettez régulièrement à jour vos améliorations personnelles pour suivre vos progrès et vos domaines de croissance.
Pour des informations plus détaillées sur des composants spécifiques ou une utilisation avancée, veuillez vous référer à la documentation en ligne dans le code source.