Übung zum Seminar "Mensch und Bot"

Dr. Raphael Wimmer

Sommersemester 2025

Ü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

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)

Python IDEs

PEP 8 - Style Guide für Python

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

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

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)

Paketmanagement mit conda

  • Anaconda: Python-Distribution für Scientific Computing (multi-platform)
  • Minimale Distribution: miniconda
  • conda: package manager für Anaconda (Intro)
  • pip und conda können parallel eingesetzt werden (1, 2)
  • Alternative: Mamba
  • 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

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
  • Viele IDEs unterstützen venv (VS Code, PyCharm)
  • Conda: conda create --name myenv / conda activate myenv

uv - die eierlegende Wollmilchsau

  • Tool für gängiges Python-Projektmanagement (Doku
  • sehr schnell (Rust, Caching)
  • Wrapper für viele gängige Aktionen:
    • uv python install <Version> - installiert Python
    • uv init <Projektname> - erzeugt Projektverzeichnis, initialisiert venv und Git.
    • uv add <Package> - fügt Paket zu Projekt hinzu
    • uv run <script.py> - führt Script in aktuellem venv aus
    • uv pip <...> / uv venv <...> - wrappt pip/venv

Überblick: 21. Mai 2025 - Erste Chatbots

ELIZA

  • Eure Aufgaben:
    • Code zum Laufen bringen
    • Etwas an den Antworten ändern
    • Ausgeben, was unter der Haube passiert (optional)

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

Überblick: 4. Juni 2025 - openai, llm, flask

Simon Willison's llm Python module

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

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 -

Unser neuer ChatBot mit Web und KI

Wir vibe-coden einen ChatBot mit Web-Interface und OpenAI-Backend

  • Flask: simples Python Web-Framework
  • Wir fragen ChatGPT (oder via llm) nach einer simplen Chat-Anwendung in Flask
  • Wie prompten wir? Was ist unser Ziel?
  • Nächste Schritte: ChatGPT-API-Call generieren lassen, in Flask einbauen

11. Juni 2025 - Studienleistung, Social Bots

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)
    • Anforderungen: TODO!

18. Juni 2025: Social Network Analysis

Grundlage: Graphen

Grafische Tools zur Social Network Analysis

Aufgabe 1: Exploration von Konzepten mit SocNetV

  • Installiert SocNetV
  • Ladet den Krackhardt-Datensatz (Control Panel → Auto Create → Famous Datasets → Krackhardt)
  • Exploriert die verschiedenen Visualisierungen und Metriken

Aufgabe 2: Exploration von Daten mit Gephi

  • Installiert Gephi
  • Ladet Euch einen der Beispiel-Datensätze für Gephi herunter (z.B. den trump-Datensatz)
  • Besprecht mit der Person neben Euch, welche Aspekte interessant sein könnten
  • Bereitet eine Visualisierung vor.

Aufgabe 3: Aufbereiten von Daten für die Netzwerkanalyse (gemeinsam)

  • Ladet den TwiBot20-Beispieldatensatz von GitHub herunter
  • Schaut Euch die Daten in der JSON-Datei an
  • Wir erstellen gemeinsam ein Jupyter Notebook, das die JSON-Daten in GraphML konvertiert

Weiterführende Links

Datensätze

Aufgaben bis zum nächsten Mal

16. Juli 2025: Social Network Analysis: Hands-On

Linktipps

Aktuelle Themen

Review: NetworkX-Aufgaben

  • bis heute: Aufgaben aus Jupyter Notebook erledigen
  • wie lange habt Ihr gebraucht?
  • gemeinsames Review

Gemeinsam: Sammeln von SNA-Datensatz mit Zeeschuimer

  • Ziel: Übung mit den Werkzeugen
  • Kleinen Datensatz mit zeeschuimer sammeln
  • 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