C# AI Assistant Client, writen without an AI-Framework/library. It is focused around answering questions regarding OTH-Regensburg and is capable of pulling context from several relevant sources.
I wanted to add a little challenge to the project, so I decided to take a crack at my own implementation of LLM-Tooling.
- Two-Step LLM Processing: Message interception + topic assertion + context injection via system messages
- Context Fetching: Pluggable architecture for topic-specific data retrieval
- DI-First Design: Full SOLID compliance with type-driven dependency injection
RAG was not a reliable solution, due to backend issues outside of my control. Furthermore I wanted to have a UI showcase of exact context LLM will be working with. This is why I decided to inject context directly into conversation as system messages.
I have only commented on service interfaces via XML documentation. Other parts of the MVVM architecture are either self-commenting or do not require comments.
The SOLID DI type-driven architecture was used with full consideration of most C# idioms.
The use of Reflection is generally test-covered (i.e., no tests need to be written for new system-prompts). See Tests Repository.
No release version is provided. Before compiling from source code, update the file \allpamca\Resources\ApiSecret.xml according to the template \allpamca\Resources\APISecret.xml.template. Any Open-AI API will work, as long as models are new enough to comprehend the concept of JSON
Credentials are embedded as a resource and can potentially be scraped via decompiling. Therefore, I advise against sharing builds.
- Replace Reflection with source generation
- Improve credential security
- Add loading screen on Application startup.
- Update UML diagrams: it is outdated, as I have not updated it after some extensive refactoring