Open Navusas opened 11 months ago
classDiagram
Application --> UI
UI --> UserController
UI --> RequestController
UI --> ResponseController
UI --> TextToSpeechService
UI --> SpeechToTextService
UserController --> SessionController
RequestController --> ChatGPTManager
RequestController --> QueryClassifier
RequestController --> PreProcessorManager
ResponseController --> OpenAIApiManager
ResponseController --> ResponseClassifier
ResponseController --> PostProcessorManager
OpenAIApiManager --> OpenAIClient
RequestController --> ErrorManager
ResponseController --> ErrorManager
SessionController --> DatabaseManager
RequestController --> DatabaseManager
ResponseController --> DatabaseManager
PreProcessorManager --> PreProcessor
PostProcessorManager --> PostProcessor
PromptManager --> DynamicPromptGenerator
ChatGPTManager --> PromptManager
class Application {
+Start()
}
class UI {
+DisplaySessions()
+StreamResponseToUser()
+ShowError()
+BindKeyboardShortcuts()
+CaptureSpeechInput()
}
class TextToSpeechService {
+ConvertTextToSpeech()
}
class SpeechToTextService {
+ConvertSpeechToText()
}
class UserController {
+StartSession()
+EndSession()
}
class SessionController {
+GetSessionHistory()
+StoreSessionData()
}
class RequestController {
+HandleUserRequest()
}
class ResponseController {
+HandleResponseData()
}
class OpenAIApiManager {
+SendRequestToOpenAI()
+StreamResponseFromOpenAI()
}
class OpenAIClient {
+PostRequest()
+GetResponse()
}
class ChatGPTManager {
+SummarizeAndSanitize()
+GeneratePrompt()
}
class QueryClassifier {
+ClassifyQuery()
}
class ResponseClassifier {
+ClassifyResponse()
}
class ErrorManager {
+HandleError()
}
class DatabaseManager {
+Store()
+Retrieve()
}
class PreProcessorManager {
+ManagePreProcessors()
}
class PreProcessor {
<<interface>>
+PreProcess()
}
class PostProcessorManager {
+ManagePostProcessors()
}
class PostProcessor {
<<interface>>
+PostProcess()
}
class PromptManager {
+ChoosePrompt()
}
class DynamicPromptGenerator {
+GenerateBasedOnContext()
}
Or:
classDiagram
OpenAiApiManager --> IOpenAiClient
OpenAiApiManager --> IPreprocessor
OpenAiApiManager --> IPostprocessor
OpenAiApiManager --> ErrorManager
OpenAiApiManager --> DataManager
OpenAiApiManager --> IPromptProvider
IOpenAiClient <|.. OpenAiClientReal
IPreprocessor <|.. SanitizePreprocessor
IPreprocessor <|.. SummarizePreprocessor
IPostprocessor <|.. MetadataPostprocessor
IPostprocessor <|.. IntentPostprocessor
IPromptProvider <|.. DefaultPromptProvider
IPromptProvider <|.. AdvancedPromptProvider
class OpenAiApiManager {
+RequestToOpenAi()
}
class IOpenAiClient {
<<interface>>
+SendRequest()
}
class OpenAiClientReal {
+SendRequest()
}
class IPreprocessor {
<<interface>>
+Process()
}
class SanitizePreprocessor {
+Process()
}
class SummarizePreprocessor {
+Process()
}
class IPostprocessor {
<<interface>>
+Process()
}
class MetadataPostprocessor {
+Process()
}
class IntentPostprocessor {
+Process()
}
class ErrorManager {
+HandleError()
}
class DataManager {
+StoreData()
}
class IPromptProvider {
<<interface>>
+GetPrompt()
}
class DefaultPromptProvider {
+GetPrompt()
}
class AdvancedPromptProvider {
+GetPrompt()
}
Think about:
"Choose a predefined prompt by intent & dynamically update it"
step?