AI Agents and Background Workers¶
Concept¶
In MedInsight, “agents” are Celery tasks and services that run autonomous work: parsing, predictions, DICOM, backups.
sequenceDiagram
participant API as FastAPI
participant Redis as Redis
participant Worker as Celery Worker
participant GPT as ProxyAPI
API->>Redis: enqueue task
Worker->>Redis: consume
Worker->>Worker: parse / process
Worker->>GPT: prediction (optional)
Worker->>API: update DB + notify WS
Celery application¶
File: app/celery_app.py
celery_app = Celery("medinsight")
celery_app.conf.include = [
"app.tasks.document_task",
"app.tasks.prediction_task",
"app.tasks.dicom_task",
"app.tasks.backup_task",
"app.tasks.self_heal_task",
]
Tasks¶
document_task — document parsing¶
- Decrypt file (age).
- Extract text (PDF/DOCX).
- NLP: diagnoses, medications (
app/services/document_parser.py). - Save
ParsedData, statusparsed. - WebSocket notification.
prediction_task — predictions¶
- Gather patient context + parsed data.
- Call GPT via ProxyAPI (
app/services/gpt_service.py). - On error — rule-based fallback.
- Save
Prediction, notify.
dicom_task — DICOM¶
- Decrypt
.dcm. - Parse metadata (
app/services/dicom_parser.py). - Generate PNG frames (
app/services/dicom_viewer.py). - Encrypt and save.
backup_task — backup¶
Archive DB + storage → age → backups/.
self_heal_task — self-healing¶
Check Redis, restart stuck tasks (see Self-healing).
GPT service¶
app/services/gpt_service.py:
- prompt with clinical context;
- parse JSON response (risks + explanation);
- timeout and retry.
Local run¶
# Terminal 1
uvicorn app.main:app --reload
# Terminal 2
celery -A app.celery_app worker -l info
# Terminal 3 (optional)
celery -A app.celery_app beat -l info
Docker:
docker compose up app worker beat redis
Task monitoring¶
celery -A app.celery_app inspect active
celery -A app.celery_app inspect registered
Adding a new task¶
- Create
app/tasks/my_task.pywith@celery_app.task. - Add to
celery_app.conf.include. - Call
.delay()or.apply_async()from route/service. - Add a test in
scripts/.