Um assistente GenAI baseado em Langchain + Streamlit + Azure Cosmos DB para MongoDB (vCore) + Docker.
Autores:
Testado em Linux Ubuntu 20.04 (pode precisar de ajustes para outros sistemas).
Requisitos mínimos de hardware exclusivamente para a implantação do aplicativo AI Assistant e criação de banco de dados Vector (excluindo o aplicativo PanKB DB, ETL e AI Assistant):
Requisitos do sistema:
O processo de preenchimento do banco de dados pode levar de 90 a 150 minutos. Depende do servidor DEV e das configurações do cluster fragmentado do Cosmos DB. O tamanho de armazenamento do MongoDB da coleção preenchida é de aproximadamente 1,0 GiB, incl. os índices.
Observe as seguintes limitações e considerações:
Crie o arquivo .env no seguinte 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>"
O script de preenchimento do banco de dados não precisa ser executado em um contêiner docker. Isso pode ser feito com os seguintes 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
O comando para construir a imagem do docker e recriar o contêiner do docker com o aplicativo Streamlit dentro:
docker compose up -d --build --force-recreate
O aplicativo streamlit dockerizado não precisa ser executado em tmux . Ele sempre estará funcionando mesmo após a reinicialização da VM (obtido usando a opção restart: always
no docker compose file).
O status do contêiner docker pode ser verificado com o seguinte comando:
docker ps
O comando deve produzir aprox. a seguinte saída, entre outras, em caso de implantação bem-sucedida:
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