Contexte
Ce projet consiste à développer et déployer une application disposant d'une interface de chatbot, permettant une fonctionnalité de RAG. L'utilisateur peut télécharger un document et interagir avec celui-ci via le chatbot. Le projet utilise FastAPI, FAISS pour la recherche vectorielle, Docker pour le déploiement, et une approche GitOps pour l’industrialisation avec déploiement dans un conteneur Kubernetes orchestré par ArgoCD.
Reproductibilité
Le README est clair et explique correctement les étapes pour faire fonctionner l’application en local, en récupérant une clé d'API Gemini. Cependant, il y a une erreur dans l’URL de clonage du dépôt qu'il faudrait corriger.
Il serait également utile d'ajouter des instructions pour récupérer l'image docker depuis Dockerhub et la lancer en local (ex : docker pull et docker run).
Enfin, la mise à disposition d’images d'exemples est appréciable et facilite la compréhension du fonctionnement de l'application et du rendu attendu.
Bonnes pratiques
-
L'utilisation de formatage automatique à l'aide de Ruff avant chaque commit (.pre-commit-config.yaml), ainsi que les actions de développement continu github permettant de vérifier les tests unitaires ainsi que la qualité du code à l'aide de linters après chaque commit, contribuent à maintenir un code propre, standardisé et fiable tout au long du cycle de développement.
-
La structure du repository est claire et compréhensible, ce qui facilite la compréhension du fonctionnement général de l'application. Pour autant, quelques éléments auraient pu être supprimés : les fichiers example_images copy et .DS_Store, ainsi que le dossier .idea/ qui contient des informations propre à un IDE personnel n'auraient pas eu besoin d'être inclus dans le versioning git.
-
Le code est globalement bien structuré, lisible et commenté, ce qui facilite sa prise en main par un nouveau développeur ou un contributeur externe.
Suggestions
-
Mettre à jour le fichier .gitignore pour exclure les fichiers spécifiques aux IDE personnels, notamment .idea/ et .DS_Store.
-
Des instructions permettant de reproduire le fichier firebase_config.json, ainsi que pour construire l'image Docker, seraient appréciables pour aider les utilisateurs à rapidement prendre en main l'application. Il faudrait également corriger l’URL dans les instructions de clonage du repo.
Pour l'application :
-
Actuellement, la base vectorielle doit être générée via un bouton séparé après avoir uploadé un document. Cela peut provoquer des erreurs (chat avec le mauvais document) si l'utilisateur oublie cette étape. On pourrait déclencher automatiquement la création de la base FAISS dès l’upload du fichier pour rendre l'expérience plus intuitive.
-
Il serait utile de gérer les erreurs 504 Gateway Timeout qui se produisent parfois lors de la création du vectorstore, par exemple en ajustant les délais d'attente pour éviter l'interruption de l'application. De plus, il manque des messages d'état pour indiquer si le chargement / la création de la base est en cours, ce qui peut être déroutant pour l'utilisateur comme ça peut prendre un certain temps. On pourrait ajouter plus de messages dans l'interface (ex : "chargement en cours", "création du vectorstore en cours", ...) pour améliorer l'expérience.
-
Pour aller plus loin dans le développement, on pourrait par exemple ajouter des fonctionnalités d'historisation des conversations par utilisateur et de création de nouvelle session de chat pour chaque nouveau document. De même, j'ai eu plusieurs fois l'impression de discuter avec un document qui n'était pas le mien : on pourrait afficher le document couramment utilisé par le LLM pour améliorer l'expérience utilisateur.
Le projet est globalement bien structuré et respecte les bonnes pratiques essentielles de développement et de déploiement vues dans le cours. Quelques ajustements mineurs permettraient d'améliorer encore l'expérience utilisateur et la reproductibilité. Bien joué 👍
Contexte
Ce projet consiste à développer et déployer une application disposant d'une interface de chatbot, permettant une fonctionnalité de RAG. L'utilisateur peut télécharger un document et interagir avec celui-ci via le chatbot. Le projet utilise FastAPI, FAISS pour la recherche vectorielle, Docker pour le déploiement, et une approche GitOps pour l’industrialisation avec déploiement dans un conteneur Kubernetes orchestré par ArgoCD.
Reproductibilité
Le README est clair et explique correctement les étapes pour faire fonctionner l’application en local, en récupérant une clé d'API Gemini. Cependant, il y a une erreur dans l’URL de clonage du dépôt qu'il faudrait corriger.
Il serait également utile d'ajouter des instructions pour récupérer l'image docker depuis Dockerhub et la lancer en local (ex : docker pull et docker run).
Enfin, la mise à disposition d’images d'exemples est appréciable et facilite la compréhension du fonctionnement de l'application et du rendu attendu.
Bonnes pratiques
L'utilisation de formatage automatique à l'aide de Ruff avant chaque commit (.pre-commit-config.yaml), ainsi que les actions de développement continu github permettant de vérifier les tests unitaires ainsi que la qualité du code à l'aide de linters après chaque commit, contribuent à maintenir un code propre, standardisé et fiable tout au long du cycle de développement.
La structure du repository est claire et compréhensible, ce qui facilite la compréhension du fonctionnement général de l'application. Pour autant, quelques éléments auraient pu être supprimés : les fichiers example_images copy et .DS_Store, ainsi que le dossier .idea/ qui contient des informations propre à un IDE personnel n'auraient pas eu besoin d'être inclus dans le versioning git.
Le code est globalement bien structuré, lisible et commenté, ce qui facilite sa prise en main par un nouveau développeur ou un contributeur externe.
Suggestions
Mettre à jour le fichier .gitignore pour exclure les fichiers spécifiques aux IDE personnels, notamment .idea/ et .DS_Store.
Des instructions permettant de reproduire le fichier firebase_config.json, ainsi que pour construire l'image Docker, seraient appréciables pour aider les utilisateurs à rapidement prendre en main l'application. Il faudrait également corriger l’URL dans les instructions de clonage du repo.
Pour l'application :
Actuellement, la base vectorielle doit être générée via un bouton séparé après avoir uploadé un document. Cela peut provoquer des erreurs (chat avec le mauvais document) si l'utilisateur oublie cette étape. On pourrait déclencher automatiquement la création de la base FAISS dès l’upload du fichier pour rendre l'expérience plus intuitive.
Il serait utile de gérer les erreurs 504 Gateway Timeout qui se produisent parfois lors de la création du vectorstore, par exemple en ajustant les délais d'attente pour éviter l'interruption de l'application. De plus, il manque des messages d'état pour indiquer si le chargement / la création de la base est en cours, ce qui peut être déroutant pour l'utilisateur comme ça peut prendre un certain temps. On pourrait ajouter plus de messages dans l'interface (ex : "chargement en cours", "création du vectorstore en cours", ...) pour améliorer l'expérience.
Pour aller plus loin dans le développement, on pourrait par exemple ajouter des fonctionnalités d'historisation des conversations par utilisateur et de création de nouvelle session de chat pour chaque nouveau document. De même, j'ai eu plusieurs fois l'impression de discuter avec un document qui n'était pas le mien : on pourrait afficher le document couramment utilisé par le LLM pour améliorer l'expérience utilisateur.
Le projet est globalement bien structuré et respecte les bonnes pratiques essentielles de développement et de déploiement vues dans le cours. Quelques ajustements mineurs permettraient d'améliorer encore l'expérience utilisateur et la reproductibilité. Bien joué 👍