Noch ein intelligenter Assistent (YAIA)
Eine multimodal chat Schnittstelle mit Zugriff auf viele Tools.
Beschreibung
YAIA ist eine hochentwickelte multimodal chat Schnittstelle, die auf fortschrittlichen KI-Modellen basiert und mit einer Vielzahl von Tools ausgestattet ist. Es kann:
- Suchen und surfen Sie in Echtzeit im Internet
- Fragen Sie Wikipedia nach Informationen
- Führen Sie Nachrichten- und Kartensuchen durch
- Führen Sie Python-Code sicher aus, der Texte und Bilder wie Diagramme und Diagramme erzeugen kann
- Verfassen Sie lange Artikel, indem Sie Text und Bilder mischen
- Bilder generieren, suchen und vergleichen
- Analysieren Sie Dokumente und Bilder
- Suchen Sie nach arXiv-Artikeln und laden Sie sie herunter
- Konversationen als Text- und Audiodateien generieren und speichern
- Speichern Sie die Dateien im Ausgabeverzeichnis
- Verfolgen Sie persönliche Verbesserungen
- Verwalten Sie Checklisten zur Aufgabenverfolgung
Architektur
Das sind die Hauptbestandteile:
- Gradio 5 für die Weboberfläche
- Amazon Bedrock für die Konversation und Tool-Nutzung
- Anthropisches Claude 3.5 Sonett als Hauptmodell
- Amazon Titan Text- und Multimodal Embeddings-Modelle
- Amazon Titan-Bildgenerator
- OpenSearch für Text- und multimodale Indizes
- Amazon Polly für Stimmen
- AWS Lambda für den Code-Interpreter
Beispiele
Hier finden Sie Beispiele für die Verwendung verschiedener Tools:
Websuche : „Durchsuchen Sie das Internet nach neuesten Fortschritten im Quantencomputing.“
Wikipedia : „Hier finden Sie Wikipedia-Artikel zur Geschichte der künstlichen Intelligenz.“
Python-Skripting : „Erstellen Sie ein Python-Skript, um ein Balkendiagramm der globalen CO2-Emissionen nach Ländern zu erstellen.“
Skizzenbuch : „Erstellen Sie ein neues Skizzenbuch und schreiben Sie eine Einführung darüber, wie man Pi mit numerischen Methoden berechnet.“
Bilderzeugung : „Erstellen Sie ein Bild einer futuristischen Stadt mit fliegenden Autos und hohen Wolkenkratzern.“
Bildsuche : „Durchsuchen Sie den Bildkatalog nach Bildern gefährdeter Arten.“
arXiv-Integration : „Suchen Sie nach aktuellen Forschungsarbeiten zum Deep Learning in der Verarbeitung natürlicher Sprache.“
Gesprächsgenerierung : „Erstellen Sie ein Gespräch zwischen drei Experten, in denen darüber diskutiert wird, wie ein multimodales RAG eingerichtet werden kann.“
Dateiverwaltung : „Speichern Sie eine Zusammenfassung unserer Diskussion über den Klimawandel in einer Datei mit dem Namen ‚climate_change_summary.txt‘.“
Persönliche Verbesserung : „Hier ist ein Verbesserungsvorschlag: Um die Antworten zu verbessern, suchen Sie nach offiziellen Quellen.“
Checkliste : „Erstellen Sie eine neue Checkliste, um einer Liste von Aufgaben nacheinander zu folgen.“
Hauptfunktionen und Tools
Web-Interaktion :
- DuckDuckGo-Textsuche: Führt Websuchen durch
- DuckDuckGo-Nachrichtensuche: Sucht nach aktuellen Nachrichtenartikeln
- DuckDuckGo Maps-Suche: Sucht nach Standorten und Unternehmen
- DuckDuckGo-Bildersuche: Sucht nach öffentlich verfügbaren Bildern
- Webbrowser: Durchsucht Websites und ruft deren Inhalte ab
Wikipedia-Tools :
- Wikipedia-Suche: Findet relevante Wikipedia-Seiten
- Wikipedia-Geodatensuche: Lokalisiert Wikipedia-Artikel nach geografischem Standort
- Wikipedia Page Retriever: Ruft den vollständigen Inhalt der Wikipedia-Seite ab
Python-Skripting :
- Führt Python-Skripte für Berechnungen, Tests und Ausgabegenerierung aus, einschließlich Text und Bildern
- Dem Python-Interpreter können Python-Module hinzugefügt werden
- Python-Code wird in einer sicheren Umgebung ausgeführt, die von AWS Lambda bereitgestellt wird
Content-Management :
- Persönliches Archiv: Speichert und ruft Text-, Markdown- oder HTML-Inhalte mithilfe einer semantischen Datenbank ab
- Skizzenbuch: Verwaltet ein mehrseitiges Skizzenbuch zum Schreiben und Überprüfen umfangreicher Inhalte. Unterstützt mehrere Ausgabeformate:
- Markdown (.md): Zum einfachen Lesen und Bearbeiten
- Word-Dokument (.docx): Zur Dokumentbearbeitung
Bildbearbeitung :
- Bildgenerierung: Erstellt Bilder basierend auf Textaufforderungen
- Bildkatalogsuche: Durchsucht Bilder nach Beschreibung
- Bildähnlichkeitssuche: Findet ähnliche Bilder basierend auf einem Referenzbild
- Zufällige Bilder: Ruft zufällige Bilder aus dem Katalog ab
- Bild nach ID abrufen: Ruft ein bestimmtes Bild anhand seiner ID aus dem Katalog ab
- Bildkataloganzahl: Gibt die Gesamtzahl der Bilder im Katalog zurück
- Bild herunterladen: Fügt Bilder von URLs zum Katalog hinzu
arXiv-Integration :
- Suchen Sie nach arXiv-Artikeln und laden Sie sie herunter
- Speichern Sie Papierinhalte im Archiv, damit Sie sie leicht abrufen können
Gesprächsgenerierung :
- Verwandeln Sie Inhalte in ein Gespräch zwischen zwei bis vier Personen
- Generieren Sie Audiodateien für das Gespräch mithilfe von Text-to-Speech
Dateiverwaltung :
- Datei speichern: Ermöglicht das Speichern von Textinhalten in einer Datei mit einem angegebenen Namen im Ausgabeverzeichnis
Persönliche Verbesserung :
- Verfolgen Sie Vorschläge und Fehler für zukünftige Verbesserungen
Checkliste :
- Verwalten Sie Aufgabenlisten mit der Möglichkeit, Elemente hinzuzufügen, sie als erledigt zu markieren und den Fortschritt zu überprüfen
Eine umfassende Liste der verfügbaren Tools und ihrer Verwendung finden Sie unter ./Config/tools.json
.
Anforderungen
- Ein Container-Tool: Docker oder Finch (um Finch zu installieren, folgen Sie den Anweisungen hier)
- Python 3.12 oder neuer
- AWS-Konto mit entsprechenden Berechtigungen für den Zugriff auf Amazon Bedrock, AWS Lambda und Amazon ECR
Installation
Klonen Sie das Repository:
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
Erstellen und aktivieren Sie eine virtuelle Umgebung (optional, aber empfohlen):
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Installieren Sie die erforderlichen Pakete:
pip install -r requirements.txt
Richten Sie die AWS Lambda-Funktion für die Codeausführung ein:
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Um Selenium zum Surfen im Internet zu verwenden, installieren Sie ChromeDriver. Verwendung von Homebrew:
brew install --cask chromedriver
Um Audio auszugeben, installieren Sie ffmpeg
. Verwendung von Homebrew:
OpenSearch einrichten
Sie können entweder eine lokale OpenSearch-Instanz verwenden oder eine Verbindung zu einem Remote-Server herstellen. Für die lokale Einrichtung:
Navigieren Sie zum OpenSearch-Verzeichnis:
Legen Sie das Administratorkennwort fest (erstmalige Einrichtung). In diesem Schritt werden die .env
Datei und die opensearch_env.sh
-Dateien erstellt:
Starten Sie OpenSearch lokal (es benötigt Zugriff auf die .env
Datei):
Stellen Sie sicher, dass OpenSearch (2 Knoten + Dashboard) korrekt startet, indem Sie die Ausgabe überprüfen
Um OpenSearch zu aktualisieren, laden Sie die neuen Container-Images mit diesem Skript herunter:
Aktualisieren Sie für die Remote-Server-Einrichtung den Client-Erstellungscode im Hauptskript.
Um das Passwort zu ändern, müssen Sie den Container mit finch
oder docker
löschen und dann ein neues Passwort festlegen.
Verwendung
Standardmodelle für Text, Bilder und Einbettungen befinden sich in der Datei Config/config.ini
. Die zu verwendenden Modelle werden mithilfe von Amazon Bedrock-Modell-IDs oder regionsübergreifenden Inferenzprofil-IDs angegeben. Sie benötigen Berechtigungen und Zugriff auf diese Modelle, wie unter „Auf Foundation-Modelle zugreifen“ beschrieben.
In diesem Abschnitt wird davon ausgegangen, dass OpenSearch wie zuvor beschrieben lokal in einem anderen Terminalfenster ausgeführt wird.
Laden Sie das OpenSearch-Administratorkennwort in die Umgebung:
source OpenSearch/opensearch_env.sh
Führen Sie die Anwendung aus:
python multimodal_chat.py
So setzen Sie den Text und die multimodalen Indizes zurück (Hinweis: Bilder in ./Images/
werden dadurch nicht gelöscht):
python multimodal_chat.py --reset-index
Öffnen Sie einen Webbrowser und navigieren Sie zu http://127.0.0.1:7860/, um mit dem Chatten zu beginnen.
Demovideos
Hier sind einige Beispiele dafür, was Sie mit dieser Anwendung tun können.
Durchsuchen Sie das Internet und nutzen Sie das semantische Archiv
In dieser Demo:
- Durchsuchen Sie Websites mit Selenium und spezifischen Tools für DuckDuckGo (Suche, Nachrichten, Geosuche) und Wikipedia
- Verwenden Sie das semantische Textarchiv-Tool, um Dokumente zu archivieren und nach Schlüsselwörtern abzurufen
Bilder importieren und durchsuchen
In dieser Demo:
- Verwenden eines multimodalen Index und des lokalen Dateisystems zur Verwaltung eines Bildkatalogs
- Speichern Sie Bilder mit einer generierten Beschreibung
- Bilder anhand der Textbeschreibung abrufen (semantische Suche)
- Bilder nach Ähnlichkeit mit einem anderen Bild abrufen
- Rufen Sie zufällige Bilder ab
Bilder generieren und durchsuchen
In dieser Demo:
- Generieren Sie Bilder aus einer Textbeschreibung
- Die Text-zu-Bild-Eingabeaufforderung wird aus Chatanweisungen generiert
- Dieser Ansatz ermöglicht es, das Gesamtgespräch zur Verbesserung der Aufforderung zu nutzen
Python-Code-Interpreter
In dieser Demo:
- Ausführen von KI-generiertem Code zur Lösung von Problemen
- Ausführung aus Sicherheitsgründen in einer AWS Lambda-Funktion mit grundlegenden Berechtigungen
- Wird über ein Container-Image bereitgestellt, um Python-Module einfach hinzuzufügen
- Nur Python, aber leicht erweiterbar
Auf einem „Skizzenbuch“ schreiben
In dieser Demo:
- Ein Tool zum Schreiben langer Texte wie Artikel und Blogbeiträge.
- Bietet sequentiellen Zugriff auf in Seiten aufgeteilten Text
- Um die „Asymmetrie“ zwischen den Eingabe- und Ausgabegrößen eines Modells zu mildern
Skizzenbuch mit einer Python-Codeüberprüfung
In dieser Demo:
- Die besten Ergebnisse erzielen Sie, wenn Sie mehr als ein Werkzeug zusammen verwenden
- Beginnen Sie mit einem Skizzenbuch, um einen langen Artikel zu schreiben
- Der Artikel enthält Codeausschnitte
- Eine Überprüfung führt und testet alle Codeausschnitte und aktualisiert jede Seite, korrigiert den Code (falls erforderlich) und fügt tatsächliche Ergebnisse hinzu
Fehlerbehebung
- Wenn Sie Probleme mit OpenSearch haben, überprüfen Sie die Verbindungseinstellungen und stellen Sie sicher, dass der Dienst ausgeführt wird
- Überprüfen Sie bei AWS Lambda-Funktionsfehlern Ihre AWS-Anmeldeinformationen und -Berechtigungen
- Wenn die Bildverarbeitung fehlschlägt, stellen Sie sicher, dass die erforderlichen Bibliotheken installiert sind, und überprüfen Sie die Dateiberechtigungen
Mitwirken
Beiträge zu YAIA sind willkommen! Weitere Informationen zum Einreichen von Pull-Anfragen, zum Melden von Problemen oder zum Anfordern von Funktionen finden Sie in den Beitragsrichtlinien.
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Einzelheiten finden Sie in der LICENSE-Datei.
Nutzungstipps
- Kombinieren Sie mehrere Tools für komplexe Aufgaben. Verwenden Sie beispielsweise die Websuche, um Informationen zu finden, verwenden Sie dann das Skizzenbuch, um eine Zusammenfassung zu schreiben und schließlich eine Konversation über das Thema anzustoßen.
- Wenn Sie mit Bildern arbeiten, können Sie neue Bilder generieren, nach vorhandenen suchen oder Bilder aus dem Internet herunterladen, um sie Ihrem Katalog hinzuzufügen.
- Nutzen Sie die arXiv-Integration, um über die neuesten Forschungsergebnisse in Ihrem Interessengebiet auf dem Laufenden zu bleiben.
- Das Konversationsgenerierungstool eignet sich hervorragend zum Erstellen ansprechender Inhalte oder zur Vorbereitung von Präsentationen.
- Überprüfen und aktualisieren Sie regelmäßig Ihre persönlichen Verbesserungen, um Ihre Fortschritte und Wachstumspotenziale zu verfolgen.
Ausführlichere Informationen zu bestimmten Komponenten oder zur erweiterten Verwendung finden Sie in der Inline-Dokumentation im Quellcode.