From b5f25411f2c99d9634b667bb135ec375b4ee4c37 Mon Sep 17 00:00:00 2001 From: Viswamedha Nalabotu Date: Fri, 27 Feb 2026 02:09:54 +0000 Subject: [PATCH] Updated readme and added subdocs --- README.md | 269 ++++++++++++++++++------ docs/application-structure.md | 64 ++++++ docs/deployment-topologies.md | 37 ++++ docs/distributed-runtime-flow.md | 54 +++++ docs/high-level-system-architecture.png | Bin 0 -> 68276 bytes 5 files changed, 358 insertions(+), 66 deletions(-) create mode 100644 docs/application-structure.md create mode 100644 docs/deployment-topologies.md create mode 100644 docs/distributed-runtime-flow.md create mode 100644 docs/high-level-system-architecture.png diff --git a/README.md b/README.md index 6d636d2..9ea78d0 100644 --- a/README.md +++ b/README.md @@ -1,66 +1,132 @@ # Dynavera: Distributed Agentic Onboarding System -Dynavera is a multi-agent AI platform designed to automate role-specific onboarding. The system utilizes a distributed architecture to separate application logic from high-latency LLM inference, employing the Model Context Protocol (MCP) for internal data retrieval and Retrieval-Augmented Generation (RAG). +Dynavera is a multi-agent onboarding platform that combines role-specific training flows, retrieval from organization documents, and LLM-powered guidance. The system is intentionally distributed so that app orchestration and heavy inference can run independently. + +Repository: https://git.cs.bham.ac.uk/projects-2025-26/vxn217 + +--- + +## Table of Contents + +- [At a Glance](#at-a-glance) +- [Inspector & Supervisor Notes](#inspector--supervisor-notes) +- [Screenshots](#screenshots) +- [System Architecture (High-Level)](#system-architecture-high-level) +- [Project Goals](#project-goals) +- [Tech Stack](#tech-stack) +- [Repository Guide](#repository-guide) +- [Evaluation Credentials](#evaluation-credentials) +- [Recommended Evaluation Walkthrough](#recommended-evaluation-walkthrough) +- [Local Setup (Cross-Platform)](#local-setup-cross-platform) +- [Common Commands](#common-commands) +- [Additional Documentation](#additional-documentation) + +--- + +## At a Glance + +Dynavera focuses on one question: **how do we deliver onboarding that is role-aware, context-aware, and operationally practical?** + +The platform does this by combining: + +- A Django management layer for accounts, roles, sessions, and APIs +- An agentic orchestration loop over WebSockets for responsive interactions +- A retrieval layer using pgvector and organization-provided documents +- A GPU inference service for chat completions, embeddings, and chunking support + +--- + +## Inspector & Supervisor Notes + +Primary locations relevant to technical quality, architecture reasoning, and evaluation: + +- Setup, context, and high-level flow: this `README.md` +- Architecture notes: `docs/` +- Orchestration runtime: `apps/onboarding/consumers.py` +- Retrieval bridge and tool routing: `apps/onboarding/mcp.py` +- Ingestion and vectorization pipeline: `apps/knowledge/tasks.py` +- Inference service entrypoint: `gpu_server.py` + +Evaluation-relevant themes represented in the codebase: + +- Role-scoped onboarding generation and progression +- Retrieval grounding through uploaded training files +- Separation of management services and inference services +- End-to-end flow from upload to onboarding completion + +--- + +## Screenshots + +Placeholder slots for final screenshots. + +### Home Page + +![Home Page Placeholder](docs/images/home-page-placeholder.png) + +### Organization Page + +![Organization Page Placeholder](docs/images/organization-page-placeholder.png) + +### Onboarding Loading / Generation State + +![Onboarding Loading Placeholder](docs/images/onboarding-loading-placeholder.png) + +### Onboarding Content Flow + +![Onboarding Flow Placeholder](docs/images/onboarding-flow-placeholder.png) + +--- + +## System Architecture (High-Level) + +At a high level, Dynavera is split into a management side and an inference side. The orchestrator coordinates user interaction, tool calls, and model responses between the two. + +![High Level System Architecture](docs/high-level-system-architecture.png) + +For the fuller architecture narrative (runtime flow and component placement), see: + +- [Distributed Runtime Flow](docs/distributed-runtime-flow.md) --- ## Project Goals -- [x] Distributed Orchestration: Implementation of a dual-node system (VPS/GPU) to manage real-time user interaction and heavy computational inference independently. - -- [x] Context-Aware Training: Development of a RAG pipeline that utilizes semantic chunking and vector similarity search to provide role-specific guidance. - -- [x] Agentic Workflow: Utilizing an orchestrator to manage stateful conversations, tool calls, and user progress tracking via WebSockets. - -- [x] Automated Ingestion: Creating a pipeline for converting raw organizational documents (PDF/TXT) into searchable vector embeddings. - ---- - -## System Architecture - - - -The application is split into two primary layers: - -### Management Layer (VPS) -* **Framework**: Django 5.x with Django Channels for WebSocket management. -* **Database**: PostgreSQL with the pgvector extension for semantic storage. -* **Task Queue**: Celery and Redis for asynchronous document processing and ingestion. -* **Internal Routing**: `apps/onboarding/mcp.py` serves as the Model Context Protocol router, bridging the agent to the PostgreSQL vector store. - -### Intelligence Layer (GPU Node) -* **Inference Server**: `gpu_server.py` (FastAPI) located in the root, exposing endpoints for LLM chat completions and embeddings. -* **Semantic Processor**: Custom logic within the inference server for smart chunking that detects topic shifts in text to optimize retrieval accuracy. +- [x] Distributed orchestration across VPS and GPU nodes +- [x] Context-aware onboarding with RAG (semantic chunking + vector search) +- [x] Stateful agent workflow over WebSockets +- [x] Automated ingestion from role training documents (PDF/TXT) --- ## Tech Stack -* **Backend**: Django, Django REST Framework, Django Channels. -* **Frontend**: Vue 3, Vite, Pinia. -* **Database**: PostgreSQL (pgvector). -* **AI/ML**: FastAPI, OpenAI-compatible API structures, Sentence-Transformers. -* **Infrastructure**: Docker, Redis, Celery. +- **Backend**: Django, Django REST Framework, Django Channels +- **Frontend**: Vue 3, Vite, Pinia +- **Database**: PostgreSQL with pgvector +- **AI/ML**: FastAPI, Sentence Transformers, llama.cpp-compatible serving +- **Infra**: Docker, Redis, Celery --- -## Application Structure +## Repository Guide -* **apps.accounts**: Manages User, Organization, and Role models, including invite-based onboarding logic. -* **apps.knowledge**: Handles the RAG pipeline, including TrainingFile management and RoleRagDocument vector storage. -* **apps.onboarding**: Contains the core logic for the onboarding experience: - * `consumers.py`: The Agent Orchestrator managing WebSocket handshakes and session loops. - * `mcp.py`: The internal router for Model Context Protocol tool execution. - * `models.py`: Stores AgentConfig (prompts/tools) and OnboardingSession state. -* **gpu_server.py**: The entry point for the Intelligence Layer, handling embedding generation and LLM inference. +Key areas in the repo: + +- `apps/accounts`: user model, organization/role ownership, membership flows +- `apps/knowledge`: file ingestion, chunking pipeline, vector document persistence +- `apps/onboarding`: role flows, sessions, websocket orchestration, MCP-style tool routing +- `config/`: settings, API/ASGI routing, environment wiring +- `compose/`: development and production deployment manifests +- `gpu_server.py`: inference and embedding service + +For a more detailed breakdown: + +- [Application Structure (Detailed)](docs/application-structure.md) --- -## Instructions for Evaluation - -The system is currently pre-loaded with demonstration data from internal configuration files. - -### Access Credentials +## Evaluation Credentials | Role | Email | Password | | :--- | :--- | :--- | @@ -68,36 +134,107 @@ The system is currently pre-loaded with demonstration data from internal configu | **Manager** | haleisaac@example.com | password | | **User** | j.thompson@example.com | password | -### Recommended Technical Walkthrough - -To verify the integration of the Knowledge Pipeline and the Agentic Orchestrator, follow these steps: - -1. **Environment Setup**: Navigate to https://fyp.viswamedha.com. * -2. **Document Ingestion**: Log in as the **Manager** (haleisaac@example.com). Navigate to the **University of Birmingham** organization. Upload a PDF relevant to a specific role. -3. **Vectorization**: Observe the ingestion status. The system will extract text, send it to the GPU node for semantic chunking, and store the resulting 1536-dimension vectors in PostgreSQL. -4. **Agent Interaction**: Access the **Role Onboarding** interface. Initiate a session. -5. **Retrieval Verification**: This will query the agent regarding specific details within the uploaded PDF. The agent in `consumers.py` will trigger a tool call via `mcp.py`, retrieve the relevant document chunks, and provide a contextualized response via onboarding pages. - -*Note: If the website that I hosted is not accessible, please set up the project locally by following the instructions in the Usage section below. +Manager registration code: `MANAGER2026` --- -## Usage +## Recommended Evaluation Walkthrough -1. Clone the repository. -2. Copy the `.env.example` file to `.env` or create a new `.env` file based on `.env.template`, and change the necessary environment variables. * -3. Deploy via Docker Compose: `docker compose -f compose/dev/docker-compose.yml --env-file .env up -d` in the root directory. -4. Access the frontend at the configured port (usually `localhost:8000`). +1. Open https://fyp.viswamedha.com +2. Log in as **Manager** and open the target organization +3. Upload a role-relevant document (PDF recommended) +4. Wait for ingestion and embedding completion +5. Start role onboarding and trigger generation +6. Check if responses are grounded in uploaded material +7. Optionally review progress details and logs -* Note: If you use a different secret key, when the fyp-django-dev container starts, you will need to execute the following command to reset all accounts to default passwords of "admin" for admin users and "password" for manager and user accounts: +If the hosted deployment is unavailable, local setup is documented below. + +--- + +## Local Setup (Cross-Platform) + +### Prerequisites + +- Docker Engine / Docker Desktop +- NVIDIA drivers + NVIDIA Container Toolkit (for GPU inference) + +### 1) Clone + +```bash +git clone https://git.cs.bham.ac.uk/projects-2025-26/vxn217 +cd vxn217 +``` + +### 2) Create `.env` + +**PowerShell** + +```powershell +Copy-Item .env.template .env +``` + +**CMD** + +```cmd +copy .env.template .env +``` + +**macOS/Linux** + +```bash +cp .env.template .env +``` + +Then update `.env` values for your environment. + +### 3) Start services (development) + +```bash +docker compose -f compose/dev/docker-compose.yml --env-file .env up -d --build +``` + +### 4) Access endpoints + +- App: http://localhost:8000 + +### 5) Optional: reset seeded passwords ```bash docker exec -it fyp-django-dev python manage.py reset_passwords ``` -### Warnings +Reset defaults: -* The development compose is used here to allow HMR and easier debugging. Please only use this file. -* Ensure that a GPU is available and CUDA drivers are properly installed for the inference server to function. -* I have tested this on an RTX 3060 with 12GB VRAM, so I am not sure if it will work on other GPUs. -* There is no guarantee that it will load on a CPU-only machine as the batch size and model parameters are configured for GPU inference. +- Admin users: `admin` +- Manager and user accounts: `password` + +--- + +## Common Commands + +Stop services: + +```bash +docker compose -f compose/dev/docker-compose.yml --env-file .env down +``` + +Tail logs: + +```bash +docker compose -f compose/dev/docker-compose.yml --env-file .env logs -f +``` + +Run migrations: + +```bash +docker exec -it fyp-django-dev python manage.py migrate +``` + +--- + +## Additional Documentation + +- [Distributed Runtime Flow](docs/distributed-runtime-flow.md) +- [Application Structure (Detailed)](docs/application-structure.md) +- [Deployment Topologies](docs/deployment-topologies.md) diff --git a/docs/application-structure.md b/docs/application-structure.md new file mode 100644 index 0000000..39a4f0e --- /dev/null +++ b/docs/application-structure.md @@ -0,0 +1,64 @@ +# Application Structure (Detailed) + +This page expands on where responsibilities live in the codebase. + +## Core Apps + +### `apps.accounts` + +Handles identity and tenancy concerns: + +- User model and role flags +- Organization ownership and membership +- Role assignment and invite flows + +### `apps.knowledge` + +Handles ingestion and retrieval data prep: + +- Upload and tracking of training files +- Content extraction and chunking pipeline +- Embedding persistence in role-scoped vector documents + +### `apps.onboarding` + +Handles the agentic onboarding runtime: + +- Session and flow models +- WebSocket consumer orchestrator +- Tool routing (MCP-style handler) +- Flow/session APIs for frontend integration + +## Infrastructure Modules + +### `config/*` + +Framework-level config and wiring: + +- Django settings +- URL/API routing +- ASGI/Channels entry points +- Celery config + +### `compose/*` + +Environment-specific deployment configuration: + +- Development compose stack +- Production compose stack +- Inference compose profile + +### `gpu_server.py` + +Inference service entry point: + +- Chat completions endpoint +- Embeddings endpoint +- Semantic chunking endpoint +- Health checks and model lifecycle + +## Navigation + +- [Distributed Runtime Flow](distributed-runtime-flow.md) +- [Deployment Topologies](deployment-topologies.md) +- [Project README](../README.md) diff --git a/docs/deployment-topologies.md b/docs/deployment-topologies.md new file mode 100644 index 0000000..f1455bf --- /dev/null +++ b/docs/deployment-topologies.md @@ -0,0 +1,37 @@ +# Deployment Topologies + +This page compares local and distributed deployment shapes. + +## Local Development Topology + +Purpose: fast iteration and debugging. + +- App services run via `compose/dev/docker-compose.yml` +- Django, Celery, Redis, Postgres, Node, and inference can run together +- Suitable for feature work and integration checks + +## Distributed Topology (VPS + GPU Node) + +Purpose: production-like separation of concerns. + +- **VPS node**: web app, orchestration, API, websocket handling, task queue, database +- **GPU node**: dedicated inference service (chat + embeddings + chunking helpers) +- Request direction is primarily **VPS -> GPU** for model tasks + +## Why Split Nodes? + +- Keeps model latency/VRAM pressure away from user/session services +- Allows independent scaling of orchestration and inference +- Improves operational clarity around failures and bottlenecks + +## Operational Notes + +- Confirm inference host/port values in runtime container env +- Confirm pgvector extension is enabled in target database +- Keep role flow generation permissions constrained to trusted user types + +## Navigation + +- [Distributed Runtime Flow](distributed-runtime-flow.md) +- [Application Structure (Detailed)](application-structure.md) +- [Project README](../README.md) diff --git a/docs/distributed-runtime-flow.md b/docs/distributed-runtime-flow.md new file mode 100644 index 0000000..3b764e5 --- /dev/null +++ b/docs/distributed-runtime-flow.md @@ -0,0 +1,54 @@ +# Distributed Runtime Flow + +Dynavera behaves like a streaming agentic system rather than a simple CRUD app. Runtime responsibility is split into three buckets. + +## 1) MCP Surface (Django-side tool layer) + +This is the tool-facing layer that lets the model request structured actions such as retrieval and session updates. + +Typical tool intents: + +- `search_knowledge(query, role_uuid)` +- `get_user_progress(user/session context)` +- `update_session_state(session_uuid, patch)` + +Conceptually, this layer translates model tool calls into standard Django queries and vector lookups. + +## 2) Orchestrator (Channels consumer + async control loop) + +The orchestrator lives in the WebSocket runtime and coordinates each user request lifecycle. + +Typical interaction path: + +1. User sends message over WebSocket +2. Orchestrator builds/updates context +3. Orchestrator calls inference endpoint +4. Model requests tool calls when needed +5. Orchestrator executes tool calls and continues generation +6. Streamed/assembled response returns to user + +This is the central control plane for session continuity, tool usage, and response streaming. + +## 3) GPU Inference Pipe (passive engine) + +The GPU service is designed as a passive inference engine: + +- Receives prompts/inference payloads +- Produces chat/embedding outputs +- Does not initiate calls back into the VPS + +Using OpenAI-style request/response patterns keeps integration predictable. + +## Interface Summary + +| Component | Typical Path / Endpoint | Role | +| :--- | :--- | :--- | +| MCP Surface | Internal Django tool handlers (and/or MCP endpoint) | Data/tool translation | +| Orchestrator | `apps.onboarding.consumers` | Coordination + streaming | +| GPU Inference | `gpu_server.py` HTTP endpoints | Generation + embeddings | + +## Navigation + +- [Application Structure (Detailed)](application-structure.md) +- [Deployment Topologies](deployment-topologies.md) +- [Project README](../README.md) diff --git a/docs/high-level-system-architecture.png b/docs/high-level-system-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0763eec962bc57620fda5a16012f10e4b27b76 GIT binary patch literal 68276 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 TmczQ?KQyP+v{iFXSYQ7?u*LTU literal 0 HcmV?d00001