Ü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
- jeder beliebige Text-Editor
- Jetbrains PyCharm (umfangreiche IDE speziell für Python)
- repl.it (kollaborative browser-basierte IDE)
- weitere?
PEP 8 - Style Guide für Python
- PEP: Python Enhancement Proposal - ein Vorschlag, wie die Sprache weiterentwickelt werden soll
- PEP 8 – Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/)
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
- Link-Tipp: Vortrag von Raymond Hettinger: Beyond PEP 8 -- Best practices for beautiful intelligible code
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 Paketmanagerconda
- 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)- 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
- 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 Pythonuv init <Projektname>
- erzeugt Projektverzeichnis, initialisiert venv und Git.uv add <Package>
- fügt Paket zu Projekt hinzuuv run <script.py>
- führt Script in aktuellem venv ausuv pip <...>
/uv venv <...>
- wrappt pip/venv
Überblick: 21. Mai 2025 - Erste Chatbots
ELIZA
- Python-Quellcode: https://github.com/wadetb/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!