Un assistant GenAI basé sur Langchain + Streamlit + Azure Cosmos DB pour MongoDB (vCore) + Docker.
Auteurs :
Testé sur Linux Ubuntu 20.04 (peut nécessiter des ajustements pour d'autres systèmes).
Configuration matérielle minimale requise uniquement pour le déploiement de l'application AI Assistant et la création de la base de données Vector (à l'exclusion des applications PanKB DB, ETL et AI Assistant) :
Configuration système requise :
Le processus de remplissage de la base de données peut prendre entre 90 et 150 minutes. Cela dépend des configurations du serveur DEV et du cluster partitionné Cosmos DB. La taille de stockage MongoDB de la collection peuplée est d'environ 1,0 Gio, incl. les index.
Veuillez noter les limitations et considérations suivantes :
Créez le fichier .env au format suivant :
## Do not put this file under version control!
OPENAI_API_KEY=<insert the API key here without quotes>
COHERE_API_KEY=<insert the API key here without quotes>
TOGETHER_API_KEY=<insert the API key here without quotes>
GOOGLE_API_KEY=<insert the API key here without quotes>
ANTHROPIC_API_KEY=<insert the API key here without quotes>
REPLICATE_API_TOKEN=<insert the API key here without quotes>
VOYAGE_API_KEY=<insert the API key here without quotes>
## MongoDB-PROD (Azure Cosmos DB for MongoDB) Connection String
# Had to multiply maxIdleTimeMS by 10 to handle
# urllib3.exceptions.ProtocolError:
# ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
MONGODB_CONN_STRING = "<insert the connection string here with quotes>"
Le script de remplissage de la base de données ne doit pas nécessairement être exécuté dans un conteneur Docker. Cela peut être fait avec les commandes suivantes :
# install all the requirements and dependencies
pip3 install -r requirements.txt
# Run the script with two command line arguments:
# the name of the folder containing the documents to feed to the LLM
# and
# the name of the MongoDB collection that will contain the vector DB
python3 make_vectordb.py ./Paper_all pankb_vector_store
La commande pour créer l'image Docker et recréer le conteneur Docker avec l'application Streamlit à l'intérieur :
docker compose up -d --build --force-recreate
L'application streamlit dockerisée n'a pas besoin d'être exécutée dans tmux . Il sera toujours opérationnel même après le redémarrage de la VM (obtenu en utilisant l'option restart: always
dans le fichier de composition du docker).
L'état du conteneur Docker peut être vérifié avec la commande suivante :
docker ps
La commande devrait produire env. le résultat suivant, entre autres, en cas de déploiement réussi :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54d89d7c4fad pankb_llm:latest "streamlit run strea…" 10 minutes ago Up 10 minutes 0.0.0.0:8501->8501/tcp, :::8501->8501/tcp pankb-llm