Made changes based on recommendations

This commit is contained in:
Viswamedha Nalabotu 2026-03-26 00:25:46 +00:00
parent 4ae45ff647
commit c2da78b8d5

View file

@ -34,40 +34,19 @@
I declare that Large Language Models (LLMs) and I declare that Large Language Models (LLMs) and
Chat Completion APIs were used in the preparation of this report and for Chat Completion APIs were used in the preparation of this report and for
assisting with coding the project. assisting with coding the project. See Appendix~\ref{appendix:ai-use} for full details.
\textbf{Scope of AI Usage.} AI was used to assist in the structural organization, grammatical refinement, and syntactic formatting of the prose and technical descriptions. \section*{Project Summary}\label{project-summary}
\textbf{Prototyping \& Feasibility Research.} LLMs were employed during the R\&D phase to \textbf{scope technical requirements and perform feasibility checks}. This included generating "throwaway" boilerplate code to test the viability of specific architectural branches (e.g., comparing custom fine tuning against LangGraph API) and validating the compatibility of the Model Context Protocol (MCP) with the existing Django environment. \textbf{Context.} Corporate onboarding imposes a recurring productivity tax on senior staff, who must repeatedly deliver role-specific knowledge transfer to new hires. This problem is acute in small teams where training capacity is limited and inconsistency compounds over time.
\textbf{Originality of Content.} All core architectural concepts, the design of the \emph{Dynavera} system, the "Distributed Agentic Pattern" logic, and the specific implementation strategies are my own original works. \textbf{Problem.} Existing onboarding tools either rely on static documentation or generic chatbots that lack role awareness, session continuity, and the ability to generate structured curricula from internal organisational knowledge.
\textbf{Fact-Checking and References.} Any external information or technical claims used to ground the AI\textquotesingle s output have been verified against the primary sources listed in the References section. \textbf{Solution.} Dynavera is a distributed agentic onboarding platform built on Django and MCP, comprising four specialist agents (Curriculum, Knowledge, Assessment, and Progress Monitor) that collaborate to deliver adaptive, role-grounded training from privately hosted documents using local LLM inference.
\textbf{Human Oversight.} I have critically reviewed, edited, and refined all AI-generated suggestions to ensure technical accuracy and alignment with the project's objectives. \textbf{Impact and Results.} The system is fully deployed and benchmarked: LLM inference is the dominant latency contributor at roughly 8--12\,s per turn, while retrieval and tool-call overhead remain negligible, confirming that the distributed architecture correctly isolates high-latency work from the responsive application layer.
\section*{Inspector Access Details}\label{inspector-access-details} \textbf{Conclusion.} Dynavera demonstrates that a production-viable, privacy-preserving agentic training runtime can be built on consumer-grade hardware within a standard web framework, establishing a concrete foundation for controlled onboarding studies and further empirical validation. Inspector access details are provided in Appendix~\ref{appendix:inspector}.
The public deployment for evaluation is available at:
\url{https://fyp.viswamedha.com}
Register as a manager (with code \texttt{MANAGER2026}) or use the following credentials for testing:
\begin{center}
\begin{tabular}{p{0.22\linewidth} p{0.46\linewidth} p{0.22\linewidth}}
\toprule
Role & Email & Password \\
\midrule
Admin & admin@example.com & admin \\
Manager & haleisaac@example.com & password \\
User & j.thompson@example.com & password \\
\bottomrule
\end{tabular}
\end{center}
\textit{Note: The public site should always be available, but the GPU node
runs on my PC and can go offline. For reliable testing,
I recommend running my development compose stack on a CUDA-enabled machine with a GPU.}
\section{Introduction}\label{introduction} \section{Introduction}\label{introduction}
@ -302,10 +281,10 @@ human-only onboarding preserves expert nuance but scales poorly and
imposes recurring opportunity cost on senior staff. Second, static imposes recurring opportunity cost on senior staff. Second, static
LMS/document-first onboarding scales distribution but offers limited LMS/document-first onboarding scales distribution but offers limited
adaptivity, weak grounding during Q\&A, and minimal operational adaptivity, weak grounding during Q\&A, and minimal operational
traceability beyond completion events. Third, a single general chatbot traceability beyond completion events \cite{vanlehn2011}. Third, a single general chatbot
improves interactivity, but it often collapses curriculum, retrieval, improves interactivity, but it often collapses curriculum, retrieval,
assessment, and monitoring into one prompt surface, which weakens assessment, and monitoring into one prompt surface, which weakens
governance and makes targeted iteration harder. governance and makes targeted iteration harder \cite{wu2023autogen,guo2024massurvey}.
The Dynavera architecture chooses a middle path: specialized agent roles The Dynavera architecture chooses a middle path: specialized agent roles
within one orchestrated runtime, retrieval-grounded generation, and within one orchestrated runtime, retrieval-grounded generation, and
@ -556,15 +535,7 @@ PostgreSQL/pgvector as a unified data plane.
\subsubsection{Knowledge Ingestion \subsubsection{Knowledge Ingestion
Workflow}\label{knowledge-ingestion-workflow} Workflow}\label{knowledge-ingestion-workflow}
Figure~\ref{fig:embedding-data-flow} shows the ingestion data flow between the User/UI, Django REST The ingestion data flow between the User/UI, Django REST API, Celery worker, PostgreSQL/pgvector database, and GPU endpoint is shown in Figure~\ref{fig:embedding-data-flow} (Appendix~\ref{appendix:diagrams}).
API, Celery worker, PostgreSQL/pgvector database, and GPU endpoint.
\begin{figure}[H]
\centering
\includegraphics[height=3.8in]{diagrams/embedding-data-flow.png}
\caption{Knowledge ingestion data flow diagram, illustrating the interaction between the user, REST API, Celery worker, pgvector database, and GPU endpoint.}
\label{fig:embedding-data-flow}
\end{figure}
\underline{Asynchronous processing with Celery (Redis broker)}\\ \underline{Asynchronous processing with Celery (Redis broker)}\\
When a manager uploads a training file from the UI, the file is sent to When a manager uploads a training file from the UI, the file is sent to
@ -593,14 +564,7 @@ similarity search in one query path
\subsubsection{Agent Orchestration Workflow \subsubsection{Agent Orchestration Workflow
(Simplified)}\label{agent-orchestration-workflow-simplified} (Simplified)}\label{agent-orchestration-workflow-simplified}
\begin{figure}[H] Figure~\ref{fig:agent-orchestration-loop} (Appendix~\ref{appendix:diagrams}) summarizes the orchestration path used during live onboarding.
\centering
\includegraphics[width=6.15132in,height=6.00619in]{diagrams/agent-orchestration-loop.png}
\caption{Agent orchestration data flow diagram, illustrating the interaction between the user/UI, WebSocket consumer, MCP router, GPU endpoint, and pgvector database.}
\label{fig:agent-orchestration-loop}
\end{figure}
Figure~\ref{fig:agent-orchestration-loop} summarizes the orchestration path used during live onboarding.
The runtime is implemented as a Django Channels WebSocket consumer The runtime is implemented as a Django Channels WebSocket consumer
(/ws/onboarding/\textless session\_uuid\textgreater/), which maintains a persistent (/ws/onboarding/\textless session\_uuid\textgreater/), which maintains a persistent
two-way connection so the UI can receive real-time status updates two-way connection so the UI can receive real-time status updates
@ -777,7 +741,7 @@ production-grade observability/safety hardening.
\subsection{Quantitative Evaluation}\label{quantitative-evaluation} \subsection{Quantitative Evaluation}\label{quantitative-evaluation}
An automated benchmark suite is included in the repository at \path{apps/accounts/management/commands/benchmark.py} and can be run via \texttt{manage.py benchmark}. It measures LLM inference latency across representative prompt types, embedding generation latency, semantic chunking throughput, and pgvector retrieval latency. Full results from a 10-run execution are recorded at \path{benchmarks/results\_2026-03-24\_13-29-55.md}. An automated benchmark suite is included in the repository at \path{apps/accounts/management/commands/benchmark.py} and can be run via \texttt{manage.py benchmark}. It measures LLM inference latency across representative prompt types, embedding generation latency, semantic chunking throughput, and pgvector retrieval latency. Full results from a 10-run execution are recorded at \path{benchmarks/results_2026-03-24_13-29-55.md}.
The results confirm that LLM inference is the dominant latency contributor in the system, while retrieval and tool-call overhead remain negligible by comparison --- consistent with the architectural claim that the distributed split between the application layer and inference layer correctly isolates the high-latency work from the responsive orchestration path. The results confirm that LLM inference is the dominant latency contributor in the system, while retrieval and tool-call overhead remain negligible by comparison --- consistent with the architectural claim that the distributed split between the application layer and inference layer correctly isolates the high-latency work from the responsive orchestration path.
@ -836,5 +800,58 @@ operational hardening, and richer adaptivity:
\bibliographystyle{unsrtnat} \bibliographystyle{unsrtnat}
\bibliography{references} \bibliography{references}
\appendix
\section{AI Use Declaration}\label{appendix:ai-use}
\textbf{Scope of AI Usage.} AI was used to assist in the structural organization, grammatical refinement, and syntactic formatting of the prose and technical descriptions.
\textbf{Prototyping \& Feasibility Research.} LLMs were employed during the R\&D phase to \textbf{scope technical requirements and perform feasibility checks}. This included generating "throwaway" boilerplate code to test the viability of specific architectural branches (e.g., comparing custom fine tuning against LangGraph API) and validating the compatibility of the Model Context Protocol (MCP) with the existing Django environment.
\textbf{Originality of Content.} All core architectural concepts, the design of the \emph{Dynavera} system, the "Distributed Agentic Pattern" logic, and the specific implementation strategies are my own original works.
\textbf{Fact-Checking and References.} Any external information or technical claims used to ground the AI\textquotesingle s output have been verified against the primary sources listed in the References section.
\textbf{Human Oversight.} I have critically reviewed, edited, and refined all AI-generated suggestions to ensure technical accuracy and alignment with the project's objectives.
\section{Detailed Data Flow Diagrams}\label{appendix:diagrams}
\begin{figure}[H]
\centering
\includegraphics[height=3.8in]{diagrams/embedding-data-flow.png}
\caption{Knowledge ingestion data flow diagram, illustrating the interaction between the user, REST API, Celery worker, pgvector database, and GPU endpoint.}
\label{fig:embedding-data-flow}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=6.15132in,height=6.00619in]{diagrams/agent-orchestration-loop.png}
\caption{Agent orchestration data flow diagram, illustrating the interaction between the user/UI, WebSocket consumer, MCP router, GPU endpoint, and pgvector database.}
\label{fig:agent-orchestration-loop}
\end{figure}
\section{Inspector Access Details}\label{appendix:inspector}
The public deployment for evaluation is available at:
\url{https://fyp.viswamedha.com}
Register as a manager (with code \texttt{MANAGER2026}) or use the following credentials for testing:
\begin{center}
\begin{tabular}{p{0.22\linewidth} p{0.46\linewidth} p{0.22\linewidth}}
\toprule
Role & Email & Password \\
\midrule
Admin & admin@example.com & admin \\
Manager & haleisaac@example.com & password \\
User & j.thompson@example.com & password \\
\bottomrule
\end{tabular}
\end{center}
\textit{Note: The public site should always be available, but the GPU node
runs on my PC and can go offline. For reliable testing,
I recommend running my development compose stack on a CUDA-enabled machine with a GPU.}
\end{document} \end{document}