Zweistufige KI-Pipeline: Wie man die Kosten für die Generierung halbiert
Muster zur Aufteilung von LLM-Anfragen in ein schnelles Modell für die Extraktion und ein hochwertiges Modell für die Generierung. Ein reales Beispiel aus
87 $ pro Monat für Chat-Zusammenfassung. Logs geprüft – Pro-Modell verbraucht 80 % der Tokens für die Themensuche in JSON. In zwei Schritte aufgeteilt. Jetzt 35 $.
Problem
Ich erstelle einen Bot für Zusammenfassungen von Chats. 200-400 Nachrichten pro Tag. Ergebnis: strukturierte Übersicht mit Ressourcen, Lösungen, Tools.
Erste Version: alles in Pro. Es extrahiert Themen und schreibt den Text. Funktioniert, aber die Rechnung für Januar:
- 80-120.000 Tokens Input (abhängig von der Chat-Aktivität)
- 2,5-3,5 $ pro Zusammenfassung
- 30 Zusammenfassungen → 87 $
Pro schreibt ausgezeichnet. Aber 2 $/1M Tokens, um die benötigten Felder in JSON zu finden und zu gruppieren? Teuer.
Lösung
Zwei Schritte statt einem:
Schritt 1 (Flash): Finde alle Themen in den Nachrichten, gib JSON zurück. Schritt 2 (Pro): Hier sind 12 Themen – schreibe daraus eine Zusammenfassung.
Flash kostet 0,50 $/1M – viermal günstiger als Pro. Erledigt die Extraktion problemlos. Strukturierte Ausgabe über Pydantic garantiert das Format – Gemini API unterstützt response_schema seit November 2025.
Pro erhält eine fertige Liste von 10-15 Themen anstelle von Hunderten von Nachrichten. Der Kontext wurde von 100.000 auf 8-12.000 Tokens reduziert.
Implementierung
Claude Code auf Opus 4.5 geschrieben:
Teile die Digest-Generierung in zwei Schritte auf. Schritt 1: Flash extrahiert Themen aus Nachrichten und gibt JSON mit Kategorien (resource, solution, insight, tool) zurück. Schritt 2: Pro erhält die fertigen Themen und schreibt den endgültigen Text. Verwende Pydantic-Schema für strukturierte Ausgabe.
Agent hat gemacht:
- Erstellt
TopicsResponse-Schema mit Feldern category, title, summary, url - Konfiguriert Gemini API mit
response_schema– JSON ist garantiert valide - Teilt
DigestGeneratorin_extract_topics()und die finale Generierung auf
Retry mit Eskalation
Flash schneidet bei großen Eingaben manchmal JSON ab. Ich habe um das Hinzufügen von Wiederholungsversuchen gebeten:
Füge eine Eskalation der Limits beim Abschneiden hinzu: 16K → 32K → 65K Token. Bei TokenLimitExceeded – wiederholen Sie den Vorgang mit einem höheren Limit.
Innerhalb eines Monats (31 Digests) wurde der Wiederholungsversuch zweimal ausgelöst. Beide Male reichten 32K.
Ergebnis
| Metrik | Vorher | Nachher |
|---|---|---|
| Pro-Token | 80-120K | 8-12K |
| Kosten/Zusammenfassung | $2.5-3.5 | $1.0-1.2 |
| Januar 2026 | $87 | $35 |
Bonus: Pro schreibt sauberer mit vorbereiteten Daten. Ohne Rauschen aus 300 Nachrichten – weniger "Füllmaterial" im Ergebnis.
Wann anwenden
Das Muster funktioniert, wenn:
- Extraktion von Generierung getrennt ist – zuerst finden, dann schreiben
- Eingabedaten groß sind – Hunderte von Dokumenten, Logs, Chats
- Struktur bekannt ist – beschreibbar mit einem Pydantic-Modell
Nicht geeignet für die Zusammenfassung (der gesamte Kontext wird benötigt) und kurze Anfragen (der Overhead lohnt sich nicht).
Quellen
- OverFill: Two-Stage Models for Efficient LLM Decoding – akademischer Ansatz zur Trennung von Prefill und Decode
- xRouter: Cost-Aware LLM Orchestration – RL zur Auswahl des passenden Modells für die Aufgabe
- The Economics of RAG: Cost Optimization – Strategien zur Kostenoptimierung in RAG