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
endHauptkomponenten#
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#
- Benutzer reicht URL zu einem KI-Projekt über das Webformular ein
- Die URL wird validiert und als Submission in der Datenbank gespeichert
- Der Crawler extrahiert Text und Metadaten von der URL
- Der FeatureAwareExtractor analysiert den Inhalt und identifiziert relevante Strukturen
- Der LLM-Client generiert einen strukturierten Steckbrief basierend auf dem extrahierten Text
- Ein Administrator prüft die Submission und genehmigt sie
- Das genehmigte Projekt wird in der Datenbank gespeichert
- Der Site-Generator erzeugt aktualisierte statische HTML-Seiten
- 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:
- Einfaches Deployment: Einzelner Server mit SQLite für kleinere Instanzen
- Mittlere Skalierung: PostgreSQL-Datenbank und Docker-Deployment
- 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.