Production-structured, beginner-friendly project using:
- Gemini API (Google AI Studio)
- CrewAI (Planner + Tutor agents)
- LangChain + ChromaDB (RAG)
- Streamlit frontend
- Docker
- GitHub Actions CI
- Kubernetes deployment
src/
- agents/
- planner.py
- tutor.py
- tools/
- retriever.py
- utils/
- logger.py
- app.py
-
Install dependencies:
pip install -r requirements.txt
-
Start Streamlit app:
streamlit run src/app.py
-
Open app in browser (usually http://localhost:8501).
-
In sidebar:
- Add Gemini API key
- Upload finance PDF
- Click Ingest PDF
-
Ask a finance question in chat.
-
Build image:
docker build -t fin-agent .
-
Run container:
docker run -p 8501:8501 fin-agent
-
Build image locally for your cluster runtime.
-
Apply manifest:
kubectl apply -f k8s/deployment.yaml
-
Check resources:
kubectl get pods kubectl get svc
GitHub Actions workflow at .github/workflows/ci.yml runs:
- Ruff lint on src
- Docker build verification
- Missing API key -> Streamlit warning
- No PDF uploaded -> Streamlit alert
- Empty retrieval -> fallback warning and general tutor response
- API failures -> one retry with error shown on failure