Hallo Sajal!
Überblick
Dieses Projekt soll eine umfassende Chatbot-Anwendung vorstellen, die das GPT-4-Modell von OpenAI zusammen mit den neuesten Funktionen von Langchain nutzt, einschließlich Langchain Expression Language und LangGraph, integriert mit einer Gradio-Schnittstelle für einfache Interaktion.
Zur einfachen Bereitstellung und Skalierbarkeit ist es in einem Docker-Container gekapselt.
Erste Schritte
Aufbau des Docker-Containers
- Klonen Sie das Repository auf Ihren lokalen Computer:
git clone <repository-link>
cd <repository-name>
- Erstellen Sie das Docker-Image aus der im Projekt bereitgestellten Docker-Datei:
docker build -t hello-sajal-app .
Dieser Befehl erstellt ein Docker-Image mit dem Namen hello-sajal-app basierend auf den Anweisungen in der Docker-Datei.
- Ausführen der Anwendung
Nachdem Sie das Image erstellt haben, können Sie die Anwendung mit dem folgenden Befehl ausführen:
docker run -p 7860:7860 gradio-openai-app
Dieser Befehl führt den Container aus und ordnet Port 7860 des Containers dem Port 7860 auf Ihrem Host zu, sodass Sie über Ihren Webbrowser auf die Gradio-Anwendung zugreifen können.
- Zugriff auf die Anwendung Sobald der Docker-Container ausgeführt wird, öffnen Sie einen Webbrowser und navigieren Sie zu http://localhost:7860, um mit der Gradio-Anwendung zu interagieren.
Unter der Haube
Sowohl der Docker-Container als auch die Gradio-App folgen dem Ablauf:
- src/ingest_data.py: Datenextraktion und Aufnahme in eine ChromaDB-Vektordatenbank, die wie auf der Festplatte gespeichert wird.
- src/app.py: Initialisierung der Gradio-App, gesteuert von Langchain zur Orchestrierung.
Verzeichnisse und Dateien
- Daten:
- source.md: Quelle der Informationen über Sajal Sharma im Markdown-Format.
- chroma_db: Verzeichnis für Chromadb beibehalten.
- Quelle:
- app.py: Einstiegspunkt für die App, Code für Gradio-App.
- graph.py: Code für das Langgraph-Orchestrierungsdiagramm.
- ingest_data.py: Code für die Datenextraktion, -transformation und -aufnahme.
- Retriever.py: Code für die Suche über den ChromaDb-Vektorindex.
- chains/*.py: benutzerdefinierte und sofort einsatzbereite Langchain-Ketten für bestimmte LLM-Funktionen.
Komponenten
- ChromaDB zum Indizieren und Durchsuchen segmentierter Dokumente.
- Langchain für die Strömungstechnik.
- OpenAI-Modelle zur Ausführung von LLM-Aufrufen.
- Gradio für einfaches Chat-Frontend.
- Langsmith für die schnelle Rückverfolgung.
Funktionen und Architektur der GenAI-App
Die Anwendung nutzt Langchain in hohem Maße für Eingabeaufforderungen, Ketten, Tools, LLM-Funktionsaufrufe und Flow-Engineering und demonstriert einige der fortgeschrittenen Anwendungsfälle.
High-Level-Architektur:
Jede vom Benutzer eingehende Nachricht durchläuft Module zur Absichtserkennung, RAG, Korrektur-RAG und Smalltalk-Kette.
Das folgende Diagramm stellt den Fluss jeder eingehenden Benutzernachricht an die Chat-App dar: