Architekturübersicht#

Einführung#

Die KI-Kartierung an Hochschulen ist ein System zur Erfassung, Analyse und Visualisierung von KI-Aktivitäten an deutschen Hochschulen. Die Anwendung ermöglicht es Nutzern, URLs zu KI-Projekten einzureichen, extrahiert automatisch relevante Informationen, erstellt strukturierte Steckbriefe und stellt diese in einer übersichtlichen Weboberfläche dar.

Systemarchitektur#

Die Anwendung ist als moderne Web-Anwendung mit einer klaren Trennung zwischen Backend und Frontend konzipiert. Sie folgt einem API-first Ansatz mit statischer Site-Generierung für die Präsentation der Daten.

Architekturdiagramm#

graph TD
    User[Benutzer] -->|Reicht URL ein| API[FastAPI Backend]
    Admin[Administrator] -->|Verwaltet Daten| API
    
    API -->|Speichert Daten| DB[(SQLite/PostgreSQL)]
    API -->|Extrahiert Text| Crawler[Web-Crawler]
    Crawler -->|Verarbeitet Inhalte| LLM[LLM-Client]
    
    API -->|Generiert Steckbrief| LLM
    API -->|Generiert statische Seiten| Generator[Site-Generator]
    
    Generator -->|Erzeugt HTML| Static[Statische Website]
    
    User -->|Sieht Ergebnisse| Static
    
    subgraph Backend
        API
        Crawler
        LLM
        Generator
    end
    
    subgraph Datenbank
        DB
    end
    
    subgraph Frontend
        Static
    end

Hauptkomponenten#

1. FastAPI Backend#

Das Backend ist mit FastAPI implementiert und bildet das Herzstück der Anwendung. Es bietet RESTful-API-Endpunkte für:

  • Einreichung von URLs
  • Extraktion und Analyse von Webseiteninhalten
  • Verwaltung von Einreichungen und Projekten
  • Generierung von Steckbriefen
  • Erzeugung der statischen Website

2. Web-Crawler & Extraktor#

Diese Komponente ist für die Extraktion von relevanten Informationen aus eingereichten Webseiten verantwortlich:

  • SimpleExtractor: Extrahiert Basistexte und Metadaten aus Webseiten
  • FeatureAwareExtractor: Erweiterte Extraktion mit Fokus auf KI-spezifische Inhalte

3. LLM-Integration#

Die Anwendung nutzt lokale Sprachmodelle (LLM) über einen OpenAI-kompatiblen Client zur:

  • Analyse der extrahierten Texte
  • Identifikation von KI-relevanten Informationen
  • Generierung strukturierter Steckbriefe
  • Erkennung von Beziehungen zwischen verschiedenen Projekten

4. Datenbank#

Die Anwendung verwendet SQLite für die Entwicklung und PostgreSQL für die Produktion:

  • Submissions: Speichert eingereichte URLs und deren Status
  • Projects: Speichert genehmigte und strukturierte Projektdaten
  • Users: Verwaltet Administratorkonten für das Backend

5. Site-Generator#

Der Site-Generator:

  • Generiert statische HTML-Seiten aus den Projektdaten
  • Verwendet Jinja2-Templates für einheitliches Design
  • Erstellt Index-, Projekt-Listen- und Detailseiten
  • Erzeugt Metadaten für Suchmaschinen

6. Frontend#

Das Frontend besteht aus:

  • Statischen HTML-Seiten mit CSS und JavaScript
  • Benutzerfreundlichen Formularen zur Einreichung von URLs
  • Visualisierungen und Filtern für die Projektdaten
  • Responsivem Design für verschiedene Endgeräte

Technologie-Stack#

Backend#

  • Python 3.11+: Grundlegende Programmiersprache
  • FastAPI: Web-Framework für moderne API-Entwicklung
  • SQLAlchemy: ORM für Datenbankzugriffe
  • Pydantic: Datenvalidierung und -konvertierung
  • Alembic: Datenbank-Migrations-Tool
  • OpenAI-Client: Kommunikation mit lokalen LLMs
  • BeautifulSoup/Trafilatura: HTML-Parsing und Textextraktion

Frontend#

  • HTML5/CSS3: Markup und Styling
  • JavaScript: Clientseitige Interaktivität
  • Jinja2: Template-Engine für die Site-Generierung

Datenbank#

  • SQLite: Für Entwicklung und kleinere Deployments
  • PostgreSQL: Für Produktionsumgebungen

Deployment#

  • Docker: Containerisierung
  • Docker Compose: Container-Orchestrierung

Datenfluss#

  1. Benutzer reicht URL zu einem KI-Projekt über das Webformular ein
  2. Die URL wird validiert und als Submission in der Datenbank gespeichert
  3. Der Crawler extrahiert Text und Metadaten von der URL
  4. Der FeatureAwareExtractor analysiert den Inhalt und identifiziert relevante Strukturen
  5. Der LLM-Client generiert einen strukturierten Steckbrief basierend auf dem extrahierten Text
  6. Ein Administrator prüft die Submission und genehmigt sie
  7. Das genehmigte Projekt wird in der Datenbank gespeichert
  8. Der Site-Generator erzeugt aktualisierte statische HTML-Seiten
  9. Benutzer können die Projekte auf der Website einsehen und durchsuchen

Sicherheits- und Authentifizierungskonzept#

  • API-Key-basierte Authentifizierung für Admin-Endpunkte
  • Validierung und Bereinigung aller Benutzereingaben
  • CORS-Konfiguration für Front-End-Sicherheit
  • Serverbasierte CSRF-Tokens

Skalierungskonzept#

Die Anwendung ist für verschiedene Skalierungsstufen konzipiert:

  1. Einfaches Deployment: Einzelner Server mit SQLite für kleinere Instanzen
  2. Mittlere Skalierung: PostgreSQL-Datenbank und Docker-Deployment
  3. Erweiterte Skalierung: Verteilte Crawler und LLM-Verarbeitung bei hohem Anfragevolumen

Da die Frontend-Präsentation über statische Seiten erfolgt, ist die Skalierung der Website-Bereitstellung einfach über CDNs oder statische Hosting-Dienste möglich.