sentinel / GEMINI.md
jeuko's picture
Sync from GitHub (main)
c403899 verified

Repo Guidelines

This repository contains the LLM-based Cancer Risk Assessment Assistant.

Core Technologies

  • FastAPI for the web framework
  • LangChain for LLM orchestration
  • uv for environment and dependency management
  • hydra: for configuration management

Coding Philosophy

  • Prioritize clarity and reusability.
  • Favor simple replication over heavy abstraction.
  • Keep comments short and only where the code isn't self-explanatory.
  • Avoid verbose docstrings for simple functions.

Testing

  • Write meaningful tests that verify core functionality and prevent regressions.
  • Run tests with uv run pytest.

Development Setup

  • Create the virtual environment (at '.venv') with uv sync.

Running commands

  • As the repository uses uv, the uv should be used to run all commands, e.g., "uv run python ..." NOT "python ...".
  • FastAPI Server: uv run uvicorn apps.api.main:app --reload
  • CLI Demo: uv run python apps/cli/main.py
  • Tests: uv run pytest

These guidelines apply to the entire repository.

Important Note for Developers

When making changes to the project, ensure that the following files are updated to reflect the changes:

  • README.md
  • AGENTS.md
  • GEMINI.md

Risk Model Availability

Risk calculators exposed to Gemini-based agents include:

  • Gail - Breast cancer risk
  • Claus - Breast cancer risk based on family history
  • Tyrer-Cuzick - Breast cancer risk (IBIS model)
  • BOADICEA - Breast and ovarian cancer risk (via CanRisk API)
  • PLCOm2012 - Lung cancer risk
  • LLPi - Liverpool Lung Project improved model for lung cancer risk (8.7-year prediction)
  • CRC-PRO - Colorectal cancer risk
  • PCPT - Prostate cancer risk
  • Extended PBCG - Prostate cancer risk (extended model)
  • Prostate Mortality - Prostate cancer-specific mortality prediction
  • MRAT - Melanoma risk (5-year prediction)
  • aMAP - Hepatocellular carcinoma (liver cancer) risk
  • QCancer - Multi-site cancer differential

Register additional models in src/sentinel/risk_models/__init__.py so they are available system-wide.