Überspringen und zum Inhalt gehen →

30-Tage-DSPy-Challenge

In den nächsten 30 Tagen werde ich DSPy lernen. Ich werde alle wichtigen Aspekte des DSPy-Frameworks kennenlernen und meine Erfahrungen hier teilen. Dabei werde ich von den Grundlagen bis hin zu fortgeschrittenen Techniken an jedem Tag eine Mischung aus Theorie und praktischen Übungen auf dieser Webseite veröffentlichen. Mal sehen, ob DSPy sein Versprechen „The framework for programming—not prompting—language models“ hält und wirklich ein Game changer ist. Mit knapp 30.000 Stars auf GitHub und ca. 2.000.000 Downloads pro Monat erwarte ich schon etwas …

Tag 1: Was ist DSPy?

Theorie: Kernidee von DSPy: „Programming, not Prompting“ versehenen und lernen, wie DSPy die Entwicklung von LLM-Anwendungen durch einen programmatischen Ansatz vereinfacht und von traditionellem Prompt Engineering abhebt.

Praxis: Einrichten der Entwicklungsumgebung. Installation von DSPy und Konfiguration eines Language Models (LM). Ich werde hier Qwen/Qwen3-VL-4B-Instruct-GGUF verwenden, da es mit llama.cpp kompatibel ist und auf meiner RTX 3080 laufen sollte.

Tag 2: Ein erstes DSPy-Programm

Theorie: Grundlegende Struktur eines DSPy-Programms kennenlernen.

Praxis: Erstellen eines einfachen Programms, das eine Frage entgegennimmt und eine Antwort mit dspy.Predict generiert.

Tag 3: Signaturen – Das Herzstück des Programms

Theorie: Verstehen, wie Signaturen in DSPy funktionieren. Definieren von Ein- und Ausgabestruktur der LLM-Aufrufe. Lernen, wie man Signaturen mit Docstrings zur Steuerung des Modellverhaltens einsetzt.

Praxis: Definieren einer eigenen Signatur für eine Übersetzungsaufgabe (z. B. von Deutsch nach Englisch).

Tag 4: Module – Die Bausteine für komplexe Aufgaben

Theorie: Die integrierten Module wie dspy.Predict und dspy.ChainOfThought verstehen und nachvollziehen, wie sie wiederverwendbare Logik kapseln.

Praxis: Erstellen eines Programms, das zwei Module miteinander verkettet, um eine mehrstufige Aufgabe zu lösen.

Tag 5: Chain of Thought – Zeit zum Denken

Theorie: Verstehen, warum ChainOfThought die Leistung von LLMs bei komplexen Aufgaben verbessern kann, indem man das Modell anleitet, schrittweise zu denken.

Praxis: Implementierung einer Chain-of-Thought-Logik, um eine einfache Logikfrage zu lösen.

Tag 6: Dein erstes kleines Projekt – Ein Zitat-Generator

Praxis: Kombination von dem bisher erlernten Wissen und erstellen eines Zitat-Generators. Thema vorgeben und das Modell ein passendes Zitat im Stil einer berühmten Persönlichkeit generieren lassen.

Tag 7: Wochenrückblick und Vertiefung

Theorie: Wiederholung die Konzepte der Woche: Signaturen, Module und ChainOfThought.

Praxis: Experimentieren mit verschiedenen Formulierungen in den Signaturen und beobachten der Auswirkungen auf die Modellausgaben.

Tag 8: Datensätze und Beispiele in DSPy

Theorie: Die Rolle von Beispieldaten (Examples) in DSPy für die Optimierung verstehen.

Praxis: Erstellen eines kleinen Trainings- und Evaluationsdatensatz für eine Klassifizierungsaufgabe (z. B. Sentiment-Analyse).

Tag 9: Einführung in Teleprompter – Die Magie der Optimierung

Theorie: Lernen, was Teleprompter (oder Optimizer) in DSPy sind und wie sie Prompts automatisch verbessern.

Praxis: BootstrapFewShot-Optimizer auf das Programm von Tag 8 anwenden.

Tag 10: Der BootstrapFewShot-Optimizer im Detail

Theorie: Verstehen, wie BootstrapFewShot Demonstrationen (Beispiele) für Few-Shot-Prompting generiert.

Praxis: Analysieren der vom Optimizer erstellten Prompts im Vergleich mit manuell erstellten Prompts.

Tag 11: Metriken zur Evaluierung der Modelle

Theorie: Lernen, wie man eigene Evaluationsmetriken in DSPy definiert.

Praxis: Implementieren einer Metrik, die die Genauigkeit (Accuracy) für die Klassifizierungsaufgabe berechnet.

Tag 12: Eigene Module erstellen

Theorie: Verstehen, wie man durch das Erstellen eigener Module komplexe, wiederverwendbare Logik in DSPy abbilden kann.

Praxis: Erstellen eines eigenen Moduls, das eine Signatur für die Zusammenfassung von Texten enthält.

Tag 13: Projekt – Optimierung eines Text-Klassifikators

Praxis: Entwicklung und Optimierung eines DSPy-Programms, das Kundenfeedback in die Kategorien positiv, negativ oder neutral einordnet. Dabei werden ein Datensatz, ein Optimizer und eine Evaluationsmetrik eingesetzt.

Tag 14: Wochenrückblick und Vertiefung

Theorie: Wiederholen der Konzepte der Optimierung und Evaluation.

Praxis: Experimentieren mit der Anzahl der Beispiele, die BootstrapFewShot generiert, und messen der Auswirkungen auf die Leistung.

Tag 15: Was ist Retrieval Augmented Generation (RAG)?

Theorie: Architektur und die Vorteile von RAG-Systemen verstehen.

Praxis: Einrichten eines einfaches Retrieval Models (RM) in DSPy, z. B. mit einer kleinen Sammlung von Textdokumenten.

Tag 16: Aufbau einer einfachen RAG-Pipeline

Praxis: Bauen eines DSPy-Programms, das eine Frage entgegennimmt, relevante Informationen aus deinem Dokumenten-Korpus abruft und die Antwort auf Basis dieser Informationen generiert.

Tag 17: Optimierung deiner RAG-Pipeline

Theorie: Techniken zur Verbesserung von RAG-Systemen verstehen.

Praxis: Optimizer nutzen, um die Prompts in deiner RAG-Pipeline zu verbessern und die Qualität der Antworten zu steigern.

Tag 18: Multi-Hop-Fragen beantworten

Theorie: Verstehen, was Multi-Hop-Fragen sind und warum sie eine Herausforderung darstellen.

Praxis: Erweitern der RAG-Pipeline, um Fragen zu beantworten, die Informationen aus mehreren Dokumenten erfordern.

Tag 19: Umgang mit widersprüchlichen Informationen

Theorie: Strategien, wie ein RAG-System mit widersprüchlichen Informationen aus verschiedenen Quellen umgehen kann finden.

Praxis: Modifizieren der Pipeline, so dass sie auf mögliche Widersprüche in den abgerufenen Informationen hinweist.

Tag 20: Projekt – RAG-System für deine eigenen Daten

Praxis: Erstellen eines RAG-Systems, das Fragen zu einem Thema der Wahl beantworten kann (z. B. deine eigenen Notizen, eine Projektdokumentation oder Wikipedia-Artikel zu einem bestimmten Thema).

Tag 21: Wochenrückblick und Vertiefung

Theorie: Wiederholen der Komponenten einer RAG-Pipeline in DSPy.

Praxis: Testen desc RAG-System mit komplexen Fragen und Analyse der „Gedankengänge“ des Modells.

Tag 22: Agenten mit dspy.ReAct

Theorie: Kennenlernen des ReAct-Frameworks (Reasoning and Acting) und wie es LLMs ermöglicht, Werkzeuge zu benutzen.

Praxis: Bauen eines einfachen Agenten, der eine Rechenaufgabe mithilfe eines Taschenrechner-Tools löst.

Tag 23: Strukturierten Output erzeugen (JSON-Extraktion)

Theorie: Verstehen, wie man DSPy nutzen kann, um strukturierte Daten (z. B. JSON) aus unstrukturiertem Text zu extrahieren.

Praxis: Schreiben eines Programms, das aus einer Produktbeschreibung den Produktnamen, den Preis und die wichtigsten Merkmale extrahiert und als JSON ausgibt.

Tag 24: DSPy Assertions – Constraints für verlässliche Ausgaben

Theorie: Erfahren, wie man mit dspy.Assert Annahmen über die Modellausgaben definieren und das Modell zur Selbstkorrektur zwingen kann.

Praxis: Dem JSON-Extraktionsprogramm eine Assertion hinzufügen, die sicherstellt, dass der Preis immer eine Zahl ist.

Tag 25: Das kompilierte Programm – Von der Entwicklung zur Produktion

Theorie: Den compile-Prozess, der dein Programm in eine optimierte, produktionsreife Pipeline verwandelt, kennenlernen.

Praxis: Kompilieren des optimiertes RAG-System testen der Performance.

Tag 26-30: Projekte mit DSPy umsetzen

SQL-Query-Generator: Ein Programm, das natürliche Sprache in SQL-Abfragen übersetzt.

Diese 30 Tage Challenge habe ich mit Hilfe von Google AI Studio erstellt. Ich plane pro Tag ca. 1-2 Stunden und werde auch wieder Google AI Studio verwenden um mir als Experte für Fragen und Tipps zur Verfügung zu stehen. Das habe ich bei der 30 Tage scikit-learn Challenge auch schon so gemacht und es hat gut funktioniert.


Die Jupyter Notebooks liegen unter: https://github.com/msoftware/DSPy

Veröffentlicht in Allgemein