Bonjour Sajal!
Aperçu
Ce projet est conçu pour présenter une application de chatbot complète qui exploite le modèle GPT-4 d'OpenAI, ainsi que les dernières fonctionnalités de Langchain, notamment Langchain Expression Language et LangGraph, intégrés à une interface Gradio pour une interaction facile.
Il est encapsulé dans un conteneur Docker pour faciliter le déploiement et l'évolutivité.
Commencer
Construire le conteneur Docker
- Clonez le dépôt sur votre ordinateur local :
git clone <repository-link>
cd <repository-name>
- Créez l'image Docker à partir du Dockerfile fourni dans le projet :
docker build -t hello-sajal-app .
Cette commande crée une image Docker nommée hello-sajal-app en fonction des instructions du Dockerfile.
- Exécution de l'application
Après avoir créé l'image, vous pouvez exécuter l'application à l'aide de la commande suivante :
docker run -p 7860:7860 gradio-openai-app
Cette commande exécute le conteneur et mappe le port 7860 du conteneur au port 7860 sur votre hôte, vous permettant d'accéder à l'application Gradio via votre navigateur Web.
- Accès à l'application Une fois le conteneur Docker exécuté, ouvrez un navigateur Web et accédez à http://localhost:7860 pour interagir avec l'application Gradio.
Sous le capot
Le conteneur Docker et l'application Gradio suivent le flux :
- src/ingest_data.py : extraction et ingestion de données dans une base de données vectorielle ChromaDB, qui est conservée comme sur le disque.
- src/app.py : Initialisation de l'application gradio, pilotée par langchain pour l'orchestration.
Répertoires et fichiers
- Données:
- source.md : source des informations sur Sajal Sharma au format markdown.
- chroma_db : répertoire persistant pour chromadb.
- src :
- app.py : point d'entrée pour l'application, code pour l'application gradio.
- graph.py : code pour le graphe d'orchestration Langgraph.
- ingest_data.py : code pour l'extraction, la transformation et l'ingestion de données.
- retriever.py : code de recherche sur l'index vectoriel ChromaDb.
- chains/*.py : chaînes de langchain personnalisées et prêtes à l'emploi pour des fonctionnalités LLM spécifiques.
Composants
- ChromaDB pour l'indexation et la recherche de documents fragmentés.
- Langchain pour l'ingénierie des flux.
- Modèles OpenAI pour exécuter des appels LLM.
- Gradio pour l'interface de chat de base.
- Langsmith pour un suivi rapide.
Fonctionnalités et architecture de l'application GenAI
L'application utilise largement langchain pour les invites, les chaînes, les outils, les appels de fonctions LLM et l'ingénierie des flux, démontrant certains des cas d'utilisation avancés.
Architecture de haut niveau :
Chaque message entrant de l'utilisateur passe par des modules de reconnaissance d'intention, RAG, RAG correctif et chaîne smalltalk.
Le diagramme suivant représente le flux de chaque message utilisateur entrant vers l'application de chat :