Zum Inhalt

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.