""" modules/interface.py - UI-Komponenten-Modul für den Dr. Franz Psychochatbot Dieses Modul definiert die Benutzeroberfläche des Chatbots: - Gradio-Interface-Komponenten - Benutzererfahrung optimieren - Responsive Design sicherstellen """ import gradio as gr from typing import List, Dict, Any, Tuple, Callable, Optional import random import time # Importieren der Konfiguration import config class Interface: """Klasse zur Verwaltung der Benutzeroberfläche""" def __init__(self, chat_function: Callable[[str], str], clear_function: Callable[[], Tuple[None, str]]): """ Initialisiert die Interface-Komponente Args: chat_function: Die Hauptfunktion für die Chatbot-Logik clear_function: Die Funktion zum Zurücksetzen der Konversation """ self.chat_function = chat_function self.clear_function = clear_function self.theme = gr.themes.Soft( primary_hue=config.UI_PRIMARY_COLOR, secondary_hue=config.UI_SECONDARY_COLOR ) def create_interface(self) -> gr.Blocks: """ Erstellt das Gradio-Interface Returns: Das konfigurierte Gradio-Interface """ with gr.Blocks(theme=self.theme) as demo: # Header-Bereich with gr.Row(): with gr.Column(): gr.Markdown(f"# {config.CHATBOT_EMOJI} {config.CHATBOT_TITLE}") gr.Markdown(f"*{config.CHATBOT_DESCRIPTION}*") # Hauptbereich with gr.Row(): # Chat-Bereich (linke Spalte) with gr.Column(scale=4): chatbot = gr.Chatbot( height=config.UI_CHATBOX_HEIGHT, label="Therapiesitzung", elem_id="chatbox", show_label=True, avatar_images=("👤", "🧠") ) # Eingabebereich with gr.Row(): user_input = gr.Textbox( placeholder="Teilen Sie Ihre Gedanken mit Dr. Franz...", label="Ihre Aussage", scale=4, elem_id="user-input", show_label=True ) send = gr.Button("Senden", variant="primary", elem_id="send-btn") # Aktionsbereich with gr.Row(): clear = gr.Button("Neue Sitzung", elem_id="clear-btn") thinking = gr.HTML( "
" ) # Informationsbereich (rechte Spalte) with gr.Column(scale=1): gr.Markdown(f"### Über {config.CHATBOT_NAME}") gr.Markdown(""" Dr. Franz ist ein experimenteller KI-Psychoanalytiker, der Ihre Gedanken und Emotionen analysiert. **Hinweis:** Dieser Chatbot dient nur der Unterhaltung und ersetzt keine professionelle psychologische Beratung. **Funktionen:** - Psychoanalytische Gesprächsführung - Emotionsanalyse - Kontextbewusstsein Dieser Chatbot verwendet die HuggingFace Inference API. """) # Optionaler Bereich für Stimmungsanzeige mood_indicator = gr.HTML( "