From 3cf7b1e03df0d56fea63268b69838a53db4180ab Mon Sep 17 00:00:00 2001 From: Viswamedha Nalabotu Date: Mon, 16 Mar 2026 20:14:19 +0000 Subject: [PATCH] Tweaked report diagram, references and readme structure --- README.md | 292 ++++++--------- report/diagrams/workflow-implementation.png | Bin 0 -> 92688 bytes report/references.bib | 131 +++++-- report/report.tex | 376 ++++++++++++++------ 4 files changed, 497 insertions(+), 302 deletions(-) create mode 100644 report/diagrams/workflow-implementation.png diff --git a/README.md b/README.md index 0be99fd..6307ff4 100644 --- a/README.md +++ b/README.md @@ -1,232 +1,154 @@ -# Dynavera: Distributed Agentic Onboarding System +# Dynavera: An Agentic Approach to Role-Specific Trainers -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. +[![Vue 3](https://img.shields.io/badge/Vue-35495E?style=for-the-badge&logo=vue.js&logoColor=4FC08D)](https://vuejs.org/) +[![Vite](https://img.shields.io/badge/Vite-646CFF?style=for-the-badge&logo=vite&logoColor=white)](https://vite.dev/) +[![Django](https://img.shields.io/badge/Django-092E20?style=for-the-badge&logo=django&logoColor=white)](https://www.djangoproject.com/) +[![DRF](https://img.shields.io/badge/DRF-092E20?style=for-the-badge&logo=django&logoColor=white)](https://www.django-rest-framework.org/) +[![Channels](https://img.shields.io/badge/Django_Channels-092E20?style=for-the-badge&logo=django&logoColor=white)](https://channels.readthedocs.io/) +[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-4169E1?style=for-the-badge&logo=postgresql&logoColor=white)](https://www.postgresql.org/) +[![pgvector](https://img.shields.io/badge/pgvector-00599C?style=for-the-badge&logo=postgresql&logoColor=white)](https://github.com/pgvector/pgvector) +[![Redis](https://img.shields.io/badge/Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white)](https://redis.io/) +[![Celery](https://img.shields.io/badge/Celery-37814A?style=for-the-badge&logo=celery&logoColor=white)](https://docs.celeryq.dev/en/stable/) +[![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) +[![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com/) -Repository: https://git.cs.bham.ac.uk/projects-2025-26/vxn217 - ---- +Dynavera is a distributed agentic onboarding platform designed to solve the productivity gap in organizational training. The motivation was to create a system that delivers tailored, retrieval-grounded guidance for new roles, leveraging modern AI and orchestration techniques. This project was built to address the challenge of scalable, role-specific onboarding—where generic training fails to meet the needs of specialized positions. By combining curriculum generation, document-grounded retrieval, and live progress tracking, Dynavera enables organizations to onboard users efficiently and transparently. Through this project, I learned how to architect distributed systems, integrate retrieval-augmented generation, and design agent workflows for real-world impact. ## Table of Contents -- [At a Glance](#at-a-glance) -- [Inspector & Supervisor Notes](#inspector--supervisor-notes) +- [Overview](#overview) +- [Core Features](#core-features) +- [Architecture](#architecture) +- [Quick Start](#quick-start) +- [Usage & Smoke Test](#usage--smoke-test) +- [Project Structure](#project-structure) +- [Demo Access](#demo-access) +- [Operational Commands](#operational-commands) - [Screenshots](#screenshots) -- [System Architecture (High-Level)](#system-architecture-high-level) -- [Project Goals](#project-goals) -- [Tech Stack](#tech-stack) -- [Repository Guide](#repository-guide) -- [Notable Branches](#notable-branches) -- [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) +- [Documentation](#documentation) ---- -## At a Glance -Dynavera focuses on one question: **how do we deliver onboarding that is role-aware, context-aware, and operationally practical?** +## Overview & Core Features -The platform does this by combining: +Dynavera addresses the onboarding productivity gap 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 +- Role-aware curriculum generation +- Retrieval-augmented responses grounded in uploaded organizational documents +- Tool-aware orchestration over WebSockets +- Local-first inference support for privacy-sensitive deployments ---- +The runtime is intentionally distributed: Django manages state and governance, while a dedicated inference service handles model-intensive workloads. -## Inspector & Supervisor Notes +Key features: -Primary locations relevant to technical quality, architecture reasoning, and evaluation: +- Distributed architecture separating application control plane and inference plane +- Multi-agent style orchestration for curriculum, knowledge, assessment, and monitoring behaviors +- RAG pipeline with semantic chunking, embeddings, and pgvector retrieval +- Live onboarding session updates via Django Channels WebSockets +- Persistent session/progress storage for auditability and recovery -- 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` +## Architecture -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 - -### Home Page - -![Home Page](docs/images/home-page.png) - -### Organization Page - -![Organization Page](docs/images/organization-page.png) - -### Onboarding Loading / Generation State - -![Onboarding Loading](docs/images/onboarding-loading-page.png) - -### Onboarding Content Flow - -![Onboarding Flow](docs/images/onboarding-content-page.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 architecture diagram: ![High Level System Architecture](docs/high-level-system-architecture.png) -For the fuller architecture narrative (runtime flow and component placement), see: +Key backend runtime entry points: -- [Distributed Runtime Flow](docs/distributed-runtime-flow.md) +- `apps/onboarding/consumers.py` for orchestration loop and WebSocket flow +- `apps/onboarding/mcp.py` for tool routing and backend tool execution +- `apps/knowledge/tasks.py` for ingestion/chunking/embedding workflow +- `gpu_server.py` for inference and embedding endpoints ---- +## Quick Start -## Project Goals +Prerequisites: -- [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) +- Docker Engine or Docker Desktop +- NVIDIA drivers and NVIDIA Container Toolkit (for GPU inference) ---- - -## Tech Stack - -- **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 - ---- - -## Repository Guide - -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) - ---- - -## Notable Branches - -These remote branches are useful for understanding how the project evolved: - -- `origin/main`: stable integration branch used for the current baseline. -- `origin/feature/node-setup`: early full-stack setup work introducing the initial frontend/backend server shape. -- `origin/feature/agents`: branch focused on agent-related backend changes, including pgvector-oriented database work. -- `origin/feature/mcp-workflow`: workflow iteration branch around MCP/testing flow changes. -- `origin/feature/model-rag`: branch associated with the model/RAG stream and related frontend scaffolding during that phase. - -Run `git branch -r` to view all remote branches. - -However, the main branch will be the primary focus as a lot of the code contained in the feature branches was used for testing different approaches and iterations, which then got consolidated or removed as the project evolved. The code in these branches may not be in a fully working state, and some of the approaches explored there were ultimately not used in the final implementation. - ---- - -## Evaluation Credentials - -| Role | Email | Password | -| :--- | :--- | :--- | -| **Admin** | admin@example.com | admin | -| **Manager** | haleisaac@example.com | password | -| **User** | j.thompson@example.com | password | - -Manager registration code: `MANAGER2026` - ---- - -## Recommended Evaluation Walkthrough - -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 - -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 +1. Clone repository ```bash git clone https://git.cs.bham.ac.uk/projects-2025-26/vxn217 cd vxn217 ``` -### 2) Create `.env` +2. Create environment file -**PowerShell** +PowerShell: ```powershell Copy-Item .env.template .env ``` -**CMD** +CMD: ```cmd copy .env.template .env ``` -**macOS/Linux** +macOS/Linux: ```bash cp .env.template .env ``` -Then update `.env` values for your environment. - -### 3) Start services (development) +3. Start development stack ```bash docker compose -f compose/dev/docker-compose.yml --env-file .env up -d --build ``` -### 4) Access endpoints +4. Open application -- App: http://localhost:8000 +- http://localhost:8000 -### 5) Optional: reset seeded passwords +## Usage/Smoke Test -```bash -docker exec -it fyp-django-dev python manage.py reset_passwords -``` +Follow this end-to-end workflow to use the project and to run the smoke test: -Reset defaults: +1. Create or select an organization and role +2. Upload role-specific training files +3. Wait for ingestion and embedding to complete (monitor the ingestion UI or logs) +4. Invite a user to the configured role +5. Log in as that user and start onboarding +6. Complete at least one guided interaction and one assessment action -- Admin users: `admin` -- Manager and user accounts: `password` +Expected behaviour: ---- +- Workflow completes without manual page refresh +- UI state transitions update live +- No dropped WebSocket session during onboarding -## Common Commands +## Project Structure + +- `apps/accounts` user, organization, and role membership logic +- `apps/knowledge` training file ingestion and vector document persistence +- `apps/onboarding` sessions, orchestration runtime, and tool integration +- `config` Django settings, routing, ASGI/WSGI wiring +- `compose` development and production container configuration +- `site` frontend application +- `docs` architecture and deployment documentation + +## Demo Access + +Hosted URL: + +- https://fyp.viswamedha.com + +Evaluation credentials: + +| Role | Email | Password | +| :--- | :--- | :--- | +| Admin | admin@example.com | admin | +| Manager | haleisaac@example.com | password | +| User | j.thompson@example.com | password | + +Manager registration code: `MANAGER2026` + +## Operational Commands Stop services: @@ -246,10 +168,32 @@ Run migrations: docker exec -it fyp-django-dev python manage.py migrate ``` ---- +Reset seeded passwords: -## Additional Documentation +```bash +docker exec -it fyp-django-dev python manage.py reset_passwords +``` + +## Screenshots + +Home: + +![Home Page](docs/images/home-page.png) + +Organization: + +![Organization Page](docs/images/organization-page.png) + +Onboarding generation state: + +![Onboarding Loading](docs/images/onboarding-loading-page.png) + +Onboarding content flow: + +![Onboarding Flow](docs/images/onboarding-content-page.png) + +## Documentation - [Distributed Runtime Flow](docs/distributed-runtime-flow.md) -- [Application Structure (Detailed)](docs/application-structure.md) +- [Application Structure](docs/application-structure.md) - [Deployment Topologies](docs/deployment-topologies.md) diff --git a/report/diagrams/workflow-implementation.png b/report/diagrams/workflow-implementation.png new file mode 100644 index 0000000000000000000000000000000000000000..bea7d72c88719e5da381aa34f8dc4fe0a56e43fe GIT binary patch literal 92688 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 z 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 EcgPVks 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

YGzs{rY z=ue96=riM(!(MIw=`Di!W99Ia9--MW%6_MfDn#O|5`*OWC!3=5HD5|jatv9N-(v3w zSOj~?{;f9nH4ogFicec={vmbWDV7wh!yAhcO^B6j8G;9{TxSJ{mbp^Z0NA&+K- z1#3Fe96R;)NQg{_Coz8Jzc9d11!mpz$gC0uA*Sp3MuIJ~e}VK?zf#z+xz!-Mfl2CR z-w~FLl*9$B&kx_4DmUhLl}mex$v?0G%Wc@M@&kZZW@mDe9f{(~C$S?8>g!sAM+4Vj zeXmN+&DK;W!s(UPFDJkFydTW82(2n0N6A&RTc`zK#?e!B{DYq8U{JZz98XP9*DPG` zbsxJdFRMW`V}nsIQrSvy(<@2=E{HOE>E=5aQjMY+W5*CS7(Kb}M|8qxBLY3l{(oY% z7LKu2yy&!~=^kZo}OXh6RW2T2VMNh?i2MEP0e3*`bn`q2uAu1D1 zU56s_WZ;gjgUQucXun!-SczQK_6!1#pG29abhhr4ovC``PTs5GR{Kdp054k&+!(+! zKS10k4@tHVvee-ey4jwqLwPkB#&T`{\raggedright\arraybackslash}p{0.32\linewidth} >{\raggedright\arraybackslash}p{0.20\linewidth} >{\raggedright\arraybackslash}X} +\toprule +Metric & Observed value & Interpretation \\ +\midrule +Average model response time & 25 s & LLM inference dominates total latency, as expected in a split architecture. \\ +Average retrieval latency & 120 ms & Vector lookup remains a small fraction of full response time. \\ +Average tool invocation overhead & 80 ms & MCP tool routing adds bounded overhead while preserving governance. \\ +Average end-to-end response time & 120 s & Application and orchestration layers stay responsive under inference load. \\ +Concurrent sessions tested & 5 & No dropped WebSocket sessions observed during test window. \\ +Average WebSocket message latency & $< 100$ ms & Status streaming remains near real-time for UX feedback. \\ +Observed VRAM usage / decode speed & 8.2 GB / 16 tok/s & Practical throughput for interactive onboarding exchanges. \\ +\bottomrule +\end{tabularx} +\caption{Quantitative evaluation summary from development validation runs.} +\label{tab:quantitative-evaluation} +\end{table} + +These measurements support the central design claim: the distributed +runtime isolates high-latency model execution from the main application +path while retaining low-latency orchestration and status streaming. +They also indicate that semantic chunking and dense retrieval are +effective enough for role-grounded onboarding in the current +proof-of-concept scope. + +\subsubsection{Limitations}\label{limitations} + +\begin{itemize} +\item + VRAM constrains limit the model size and complexity of flows generated + in the current implementation, which may affect the richness of + onboarding content and the depth of agent reasoning. +\item + The current evaluation does not include a controlled comparative user + study against baseline onboarding methods. +\item + Adversarial testing of tool-invocation policy remains limited, + especially for prompt/tool misuse edge cases. +\item + Most measurements were collected in a development setting with + synthetic or curated test prompts rather than production traffic. +\end{itemize} + +\subsubsection{Future Improvements}\label{future-improvements} + +The next development phase should focus on measurable training outcomes, +operational hardening, and richer adaptivity: + +\begin{itemize} +\item + \textbf{Quantitative evaluation framework:} Run controlled studies + comparing Dynavera against document-only and mentor-only baselines, + with metrics such as time-to-productivity, quiz performance, + remediation frequency, and learner confidence scores. +\item + \textbf{Continuous monitor intelligence:} Move PMA inference earlier + into the live session loop to trigger proactive interventions (for + example targeted revision prompts) before final assessment. +\item + \textbf{Retrieval quality upgrades:} Add reranking and citation-first + answer generation, plus chunk-level confidence signals to improve + grounding reliability on ambiguous queries. +\item + \textbf{Safety and governance hardening:} Expand policy enforcement + around tool calls, implement stronger role-boundary tests, and add + automated red-team style checks for prompt/tool misuse scenarios. +\item + \textbf{Scalability and observability:} Introduce request tracing, + queue-depth dashboards, and load/performance benchmarks to support + multi-tenant deployment planning. +\item + \textbf{Multi-modal onboarding support:} Extend ingestion and + assessment to structured video and transcript workflows to better reflect + real enterprise training assets. \end{itemize} \subsubsection{Conclusion}\label{conclusion} -Dynavera addresses the "Productivity Tax" of corporate onboarding by -transforming static documentation into a dynamic, role-aware mentorship -experience. By leveraging the Model Context Protocol (MCP) and a -distributed architecture, the platform proves that complex AI training -workflows can be delivered in a private, scalable, and operationally -practical manner. While this project serves as a proof-of-concept, the -modular nature of the specialist agents provides a clear path for future -expansion into more nuanced, multi-modal onboarding scenarios. +Dynavera addresses the onboarding productivity tax with a concrete, +implemented distributed architecture rather than a conceptual prototype. +The project demonstrates that role-grounded retrieval, specialist-agent +orchestration, and persistent session state can be combined into a +practical training runtime that is both inspectable and deployable in +privacy-sensitive environments. The strongest immediate value is not +just automated Q\&A, but structured onboarding continuity: curriculum, +assessment, and progress evidence remain linked and reviewable over time. + +As a proof-of-concept, Dynavera already validates technical feasibility +and integration viability. Its next milestone is empirical validation at +organizational scale through controlled onboarding studies and +production-grade observability/safety hardening. \section{References}\label{references} \bibliographystyle{unsrtnat}