Un asistente GenAI basado en Langchain + Streamlit + Azure Cosmos DB para MongoDB (vCore) + Docker.
Autores:
Probado en Linux Ubuntu 20.04 (puede que necesite ajustes para otros sistemas).
Requisitos mínimos de hardware únicamente para la implementación de la aplicación AI Assistant y la creación de la base de datos Vector (excluidas las aplicaciones PanKB DB, ETL y AI Assistant):
Requisitos del sistema:
El proceso de llenado de la base de datos puede tardar entre 90 y 150 minutos. Depende del servidor DEV y de las configuraciones del clúster fragmentado de Cosmos DB. El tamaño de almacenamiento de MongoDB de la colección poblada es ~ 1,0 GiB, incl. los índices.
Tenga en cuenta las siguientes limitaciones y consideraciones:
Cree el archivo .env en el siguiente formato:
## 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>"
No es necesario ejecutar el script de llenado de base de datos en un contenedor acoplable. Se puede hacer con los siguientes comandos:
# 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
El comando para crear la imagen de la ventana acoplable y recrear el contenedor de la ventana acoplable con la aplicación Streamlit dentro:
docker compose up -d --build --force-recreate
La aplicación acoplada streamlit no tiene que ejecutarse en tmux . Siempre estará en funcionamiento incluso después de reiniciar la VM (lo que se logra usando la opción restart: always
en el archivo de redacción de la ventana acoplable).
El estado del contenedor acoplable se puede verificar con el siguiente comando:
docker ps
El comando debería producir aprox. el siguiente resultado, entre otros, en caso de una implementación exitosa:
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