→ Slide 1
Übung zum Seminar "Mensch und Bot"
Dr. Raphael Wimmer
Sommersemester 2025
→ Slide 2
Überblick: 7. Mai 2025 - Diverses, Python
Umgebungsvariablen und Pfade
Welche Python-IDE soll ich verwenden?
apt, pip, conda, virtualeenv (, docker) - Environments und Paketmanager für Python
uv - die eierlegende Wollmilchsau
Grundkonzepte Python
→ Slide 3
PATH
Umgebungsvariablen: Key-Value-Paare, die vom
OS innerhalb einer Shell den Programmen zur Verfügung gestellt werden.
Anzeigen/setzen mit export
(Linux) bzw. SET
(Windows)
PATH-Umgebungsvariable: wo liegen die ausführbaren Dateien
Reihenfolge relevant - das erstbeste Executable mit passendem Namen wird genommen.
(auch später relevant: PYTHONPATH
)
→ Slide 4
→ Slide 5
PEP 8 - Style Guide für Python
PEP: Python Enhancement Proposal - ein Vorschlag, wie die Sprache weiterentwickelt werden soll
-
pycodestyle
: Kommandozeilentool, das Code auf PEP-8-Konformität prüft
Hier im Kurs: PEP-8-Regeln bitte einhalten (zwingend für Studienleistung), bis auf Regel zu max. Zeilenlänge
-
→ Slide 6
Paketmanagement in Python
Es gibt drei verbreitete Möglichkeiten, Python-Module zu installieren:
Paketmanagement des Betriebssystems (z.B. apt
unter Debian/Ubuntu Linux)
pip
- Pythons Paketmanager
conda
- Paketmanagement der Anaconda-Distribution
Um für jede Anwendung separate Module zu installieren: virtual environments
↓ Slide 7
Paketmanagement durch Betriebssystem
Primär bei Linux-Distributionen, z.B. Debian/Ubuntu
apt install python3-matplotlib
Vorteile: global verfügbar, sicher, vorkompilierte Binaries
Nachteile: nicht immer aktuell, nicht alle Python-Pakete verfügbar, immer nur eine Paketversion installierbar
↓ Slide 8
Paketmanagement mit pip
Pakete werden aus dem Python Package Index (PyPI) installiert (PyPI enthält quasi alle Pakete)
pip3 install matplotlib
pip3 install -r requirements.txt
: Textdatei mit Paketnamen und ggf. Versionen.
Vorteile: global oder (default) lokal installierbar, immer aktuellste Version, quasi alle Pakete verfügbar.
Nachteile: nicht zwingend robust/sicher, Kompilierungsschritt bei C-Erweiterungen notwendig
Tool
pipx
: installiert Python-
Programme in einer eigenen virtuellen Umgebung und fügt sie zum Pfad hinzu (
Repo / Anleitung)
↓ Slide 9
Paketmanagement mit conda
Anaconda: Python-Distribution für Scientific Computing (multi-platform)
-
conda
: package manager für Anaconda (
Intro)
pip und conda können parallel eingesetzt werden (
1,
2)
-
Vorteile: sicher, robust, vorkompilierte Binaries, integrierte Unterstützung von virtual environments
Nachteile: nicht immer aktuell, wenige Python-Pakete verfügbar, fügt Overhead (Ressourcen, Debugging) hinzu
↓ Slide 10
Virtual Environments
Grundidee: für jedes Projekt eine eigene Python-Installation (
Doku)
Funktionsweise: Überschreiben der Pfade zu Binaries, Bibliotheken in der aktuellen Shell
Virtualenv im Unterverzeichnis .env
anlegen: python3 -m venv .env
Virtualenv aktivieren: source .env/bin/activate
(Linux) / .env\Scripts\activate.bat
deaktivieren durch Beenden der Shell
-
Conda: conda create --name myenv
/ conda activate myenv
↓ Slide 11
uv - die eierlegende Wollmilchsau
→ Slide 12
Überblick: 21. Mai 2025 - Erste Chatbots
↓ Slide 13
↓ Slide 14
Eigener Chatbot
Eure Aufgabe: schreibt einen eigenen Chatbot mit einer Heuristik
notwendig: loops, ´input()/rawinput()´, evtl. regex oder String-Operationen
Anforderungen: reagiert auf bestimmte Schlüsselwörter
→ Slide 15
Überblick: 4. Juni 2025 - openai, llm, flask
↓ Slide 16
Simon Willison's llm Python module
↓ Slide 17
Experimente mit llm
Installiert llm
von PYPI
Holt Euch den OpenAI-
API-Key aus GRIPS (wird bald wieder deaktiviert)
fügt den
API-Key bei llm hinzu (siehe Doku)
stellt ein paar Anfragen
variiert die Temperatur
↓ Slide 18
OpenAI API
Klassische REST-Schnittstelle
Beispiel:
wget --method=POST --header="Authorization: Bearer $OPENAI_API_KEY" --header="Content-Type: application/json" --body-data='{"model": "gpt-4o","messages": [{ "role": "user", "content": "Hello, world!" }]}' https://api.openai.com/v1/chat/completions -O -
-
↓ Slide 19
Unser neuer ChatBot mit Web und KI
Wir vibe-coden einen ChatBot mit Web-Interface und OpenAI-Backend
→ Slide 20
11. Juni 2025 - Studienleistung, Social Bots
↓ Slide 21
Studienleistungen
Verpflichtende Abgabe bis 30.7.2025
Projekt 1: Ein Chatbot mit Besonderheit (Python)
Python-Script mit Angabe der Dependencies (requirements.txt)
Chatten
Nachrichten werden entweder an LLM (z.B. OpenAI) geschickt oder von ELiza-Grammatik interpretiert
irgendwas Spannendes! (Eastereggs, Animationen, etc., dokumentiert in README.md)
Code ist nicht grauenhaft
Projekt 2: Eine Analyse eines (Bot-)Netzwerks (Jupyter Notebook)
Sammeln von Daten über Zeeschuimer oder Verwenden eines existierenden Datensatzes
Extraktion relevanter Aspekte
Visualisierung eines Netzwerks
Report, inkl. Metriken
Diskussion von Hintergrund und Ergebnis im Notebook (eine Geschichte zu den Daten erzählen)
→ Slide 22
18. Juni 2025: Social Network Analysis
↓ Slide 23
Grundlage: Graphen
↓ Slide 24
↓ Slide 25
Aufgabe 1: Exploration von Konzepten mit SocNetV
↓ Slide 26
Aufgabe 2: Exploration von Daten mit Gephi
-
-
Besprecht mit der Person neben Euch, welche Aspekte interessant sein könnten
Bereitet eine Visualisierung vor.
↓ Slide 27
Aufgabe 3: Aufbereiten von Daten für die Netzwerkanalyse (gemeinsam)
-
Schaut Euch die Daten in der JSON-Datei an
Wir erstellen gemeinsam ein Jupyter Notebook, das die JSON-Daten in GraphML konvertiert
↓ Slide 28
↓ Slide 29
↓ Slide 30
Aufgaben bis zum nächsten Mal
→ Slide 31
16. Juli 2025: Social Network Analysis: Hands-On
↓ Slide 32
Linktipps
-
Socioscan - Tool für SNA (noch nicht genauer angeschaut)
-
↓ Slide 33
↓ Slide 34
Review: NetworkX-Aufgaben
→ Slide 35
23. Juli 2025: Social Network Analysis: Hands-On (wirklich), Studienleistung
↓ Slide 36
Studienleistungen
Verpflichtende Abgabe bis 30.7.2025
Projekt 1: Ein Chatbot mit Besonderheit (Python)
Python-Script mit Angabe der Dependencies (requirements.txt)
Chatten
Nachrichten werden entweder an LLM (z.B. OpenAI) geschickt oder von ELiza-Grammatik interpretiert
irgendwas Spannendes! (Eastereggs, Animationen, etc., dokumentiert in README.md)
Code ist nicht grauenhaft
Projekt 2: Eine Analyse eines (Bot-)Netzwerks (Jupyter Notebook)
Sammeln von Daten über Zeeschuimer oder Verwenden eines existierenden Datensatzes
Extraktion relevanter Aspekte
Visualisierung eines Netzwerks
Report, inkl. Metriken
Diskussion von Hintergrund und Ergebnis im Notebook (eine Geschichte zu den Daten erzählen)
↓ Slide 37
Gemeinsam: Sammeln von SNA-Datensatz mit Zeeschuimer
Ziel: Übung mit den Werkzeugen
-
Welche Felder stecken in der JSON-Datei? (Tool-Tip:
jq)
neues Jupyter-Notebook zum Extrahieren der relevanten Informationen schreiben
Code für Visualisierung aus existierendem Notebook übernehmen
Am Ende der Übung: Geschichte dazu erzählen