Mit Capturfy halten Autohäuser und andere Betriebe die Momente fest, in denen ihre Kunden etwas Neues bekommen, zum Beispiel die Übergabe eines Autos. Der Verkäufer macht ein Foto, und mit Einwilligung des Kunden entstehen daraus Bewertungsbitten und Beiträge für Instagram. Die Beiträge entstehen in unserem „Studio“.
Auf Instagram laufen Reels am besten. Ein gutes Reel zu schneiden ist aber Arbeit: Man muss eine Reihenfolge finden, jedes Foto ins Hochformat bringen, ohne jemandem den Kopf abzuschneiden, Kennzeichen verpixeln, das Logo an den Anfang und das Ende setzen, Musik leise ein- und ausblenden und zu jedem Bild eine kurze Zeile schreiben. Im Autohaus hat dafür niemand Zeit.
Mein erster Entwurf war ein klassischer Editor mit Zeitleiste. Beim Durchklicken war klar, dass er für jemanden, der zwischen zwei Kundenterminen schnell einen Beitrag machen will, zu kompliziert ist. Also habe ich die Richtung gedreht: Die Zeitleiste bleibt als Anzeige, bedient wird sie vom Assistenten. Man drückt auf „Schnitt vorschlagen“ und sieht live, welcher Schritt gerade läuft.
So ist der Agent aufgebaut
Der Agent startet mit kurzen Grundregeln und sechs Grundwerkzeugen. Alles Weitere steckt in Fähigkeiten, die er erst lädt, wenn er sie braucht. Jede Fähigkeit bringt ihre eigenen Regeln und Werkzeuge mit, „Zuschneiden“ zum Beispiel nur die beiden Werkzeuge für den Ausschnitt. Anfangs hatte das Modell alle Werkzeuge gleichzeitig, und ab etwa 18 Werkzeugen lieferte es nur noch Zeichensalat.
Fähigkeiten, nur bei Bedarf geladen. Jede bringt ihre Werkzeuge mit.
Helfer
Für Storys, Beiträge und Karussells kommen auf diese Weise nur neue Fähigkeiten dazu. Der Agent selbst bleibt derselbe.
Das Modell muss sehen und handeln können
Eine Vorgabe stand vor jedem Test fest: Die Fotos zeigen echte Kunden, deshalb werden sie nur in der EU verarbeitet. Wir nutzen dafür vor allem offene Modelle, die ein deutscher Anbieter in der EU betreibt. Zum Vergleich lief GPT-4o in einem europäischen Azure-Rechenzentrum. Zum Modell geht nur eine verkleinerte Fassung der Fotos, und der Anbieter speichert sie nicht.
Für diese Aufgabe braucht ein Modell zwei Fähigkeiten gleichzeitig. Es muss Bilder verstehen und es muss zuverlässig Werkzeuge aufrufen, also zum Beispiel „schneide Foto 3 so zu“ oder „decke diesen Bereich ab“, statt nur darüber zu schreiben. Ich habe mehrere Modelle mit denselben echten Fotos und acht Eingaben getestet, die ich selbst so getippt hatte, etwa „mega“, „was kannst du noch?“ oder „stell den BMW nach vorne“.
| Modell | Bilder | Werkzeuge | Zuschnitt und Kennzeichen |
|---|---|---|---|
| DeepSeek V4 Pro | lehnt Bilder ab | nicht getestet | nicht möglich |
| GLM-5.3 | lehnt Bilder ab | gut und schnell | nicht möglich |
| GPT-4o | ja | sehr zuverlässig | schnitt auf drei von vier Fotos eine Person oder die Übergabe ab, Kennzeichen daneben markiert |
| Kimi K3 | ja | zuverlässig, richtig eingestellt | Kunden auf vier von vier Fotos im Bild, Kennzeichen exakt gefunden |
Es wurde Kimi K3. Spannender als die Wahl war allerdings die Einstellung. Ohne Nachdenken antwortete das Modell in ein bis drei Sekunden, hat aber einmal behauptet, den BMW nach vorne gestellt zu haben, ohne ein einziges Werkzeug aufzurufen. Mit vollem Nachdenken traf es die besten Entscheidungen, brauchte dafür aber bis zu 50 Sekunden, und manchmal landete das englische Denkprotokoll direkt in der Antwort an den Nutzer.
Funktioniert hat eine Mischung aus drei Dingen. Das Modell denkt nur wenig nach, jede Antwort muss über ein Werkzeug laufen (auch die Antwort an den Nutzer ist ein Werkzeug), und im Prompt steht die Regel, dass es nie eine Änderung behaupten darf, die es nicht per Werkzeug gemacht hat. Damit waren sechs von sechs Antworten richtig, bei zwei bis sieben Sekunden.
Die seltsamste Falle: Sobald in der Beschreibung eines Werkzeugs Grenzen wie „mindestens 1“ oder „höchstens 30 Zeichen“ standen, lieferte das Modell bei unserem Anbieter nur noch Zeichensalat, bis das Token-Limit nach rund 70 Sekunden erreicht war. Gefunden habe ich das eher zufällig. Heute sichert ein automatischer Test ab, dass keine solche Grenze mehr hineinrutscht.
Die Abwägung: offene Modelle in der EU
Offene Modelle bei einem europäischen Anbieter zu betreiben war eine bewusste Entscheidung, und sie hat zwei Seiten. Dafür spricht, dass die Daten in der EU bleiben und der Vertrag zur Auftragsverarbeitung mit einem deutschen Unternehmen geschlossen wird. Außerdem hänge ich nicht an einem einzigen Hersteller. Die Gewichte offener Modelle sind frei verfügbar, deshalb kann ich den Anbieter wechseln oder ein Modell im Zweifel selbst betreiben.
Der Preis dafür ist mehr eigene Arbeit. Ein kleinerer Anbieter ist bei großen Modellen öfter ausgelastet als die großen Clouds, jedes Modell hat Eigenheiten wie die Falle oben, und die Dokumentation ist dünner. Was bei einem großen Anbieter jemand anderes getestet hat, muss ich selbst prüfen. Deshalb gibt es für jede Änderung eine feste Testreihe mit echten Fotos. Für Capturfy überwiegt der Vorteil klar, weil unsere Kunden die Fotos ihrer eigenen Kunden nicht einfach an beliebige Dienste weitergeben dürfen.
Der erste Bau: ein großer Aufruf, der kaum fertig wurde
In der ersten Fassung bekam der Agent alle Fotos auf einmal, dazu alle Werkzeuge, und sollte das ganze Reel selbst planen. Von drei Testläufen kamen ein oder zwei durch, und die brauchten zwischen einer und neun Minuten. Große Anfragen mit vielen Bildern beantwortete der Anbieter oft mit „Kapazität erschöpft“, kleine gingen problemlos durch.
Die Lösung war, dem Agenten weniger zuzutrauen. Heute läuft ein Schnittvorschlag in vier Phasen:
- Feste SchritteLogo vorn und hinten, jedes Bild mindestens drei Sekunden, Musik aus der Auswahl. Das ist Code, kein Modell.
- Ein Aufruf je FotoDas Modell sieht nur dieses eine Foto und entscheidet Zuschnitt, Abdeckung und die kleine Zeile.
- Blinde KontrolleEin zweiter Aufruf prüft das fertig gerenderte Bild, ohne den Plan zu kennen.
- TexteTitel und Bildunterschrift schreibt ein günstigeres Textmodell als Unteragent.
Nach dem Umbau liefen fünf von fünf Testläufen in sieben bis neun Sekunden durch. Mit der Kontrolle, die ich im nächsten Abschnitt beschreibe, sind es heute 22 bis 29 Sekunden, und jeder Lauf wird fertig.
Was eine feste Regel ist, bleibt Code. Das Modell bekommt nur die Entscheidungen, für die man wirklich Augen braucht.
Der Agent prüft sich selbst, aber blind
Das erste Feedback aus dem Team war deutlich: Am Rand waren Personen angeschnitten, und die Logo-Karte am Ende wirkte verloren. Auf dem Papier waren die Zuschnitte plausibel. Im fertigen Bild, mit Titelzeile und Textzeile darüber, sah es anders aus.
Deshalb rendert der Dienst jedes Bild jetzt genau so, wie es später im Reel erscheint, und lässt es prüfen. Den Prüfer habe ich bewusst blind gemacht. Er ist ein eigener Aufruf, sieht nur das fertige Bild, kennt die Absicht nicht und darf nichts ändern. Er meldet nur, wie viele Menschen zu sehen sind, wie viele Köpfe vollständig im Bild sind, ob ein Kennzeichen lesbar ist und ob das Motiv in der Mitte steht. Ein Prüfer, der den Plan kennt, sieht eher das, was er sehen will.
Sind weniger ganze Köpfe als Menschen im Bild, gilt das Bild als fehlerhaft. Dann korrigiert der Dienst in Stufen: Zuerst verschiebt er den Ausschnitt, und wenn das nicht reicht, zeigt er das ganze Foto auf einer ruhigen Fläche in der Markenfarbe. Nach höchstens drei Runden ist Schluss.
Dabei habe ich gelernt, wie viel an einzelnen Wörtern hängt. Zuerst habe ich nach vollständigen „Gesichtern“ gefragt. Damit war jeder Kunde, der sich gerade zum Auto umdreht, ein Fehler. Mit „Köpfen“ stimmte es. Angeschnittene Ränder meldet das Modell auch bei einer Schulter, deshalb nutze ich sie nur noch als Hinweis für die Richtung und nicht als Fehler.
Kleinigkeiten, die trotzdem Tage gekostet haben
- Mac ist nicht Linux. Die Überblendungen zwischen den Fotos liefen lokal auf dem Mac, auf dem Server aber nicht. Die Linux-Fassung von ffmpeg verlangt, dass die Bildrate nach dem Umrechnen der Zeitstempel neu gesetzt wird. Seitdem teste ich Videoschritte im selben Container, in dem sie auch auf dem Server laufen.
- Eine Vorschau, die nie fertig wurde. Mit Musik blieb die Vorschau bei 15 Prozent stehen. Die Kombination aus „Ton auffüllen“ und „beim kürzesten Strom aufhören“ endet unter Linux nie. Eine fest vorgegebene Länge hat das gelöst. Außerdem ignorierte ffmpeg das normale Beenden-Signal, sodass die Zeitlimits den Prozess jetzt hart beenden.
- Unschärfe als Füllung sieht billig aus. Querformate und das Logo standen anfangs auf einer unscharfen Kopie des Fotos. Heute stehen sie auf einer ruhigen Fläche, deren Farbe der Dienst aus den vier Ecken des Logos liest.
- Falsche Angaben legen das Modell lahm. Stand bei einem Foto „Audi A4“, obwohl ein anderes Auto zu sehen war, dachte das Modell bis zum Limit nach und lieferte nach 8.000 Tokens keine Antwort. Jetzt versucht es der Dienst in diesem Fall ein zweites Mal ohne die Angabe.
Schneller durch Parallelität, sparsamer durch Arbeitsteilung
Alle Fotos werden gleichzeitig zugeschnitten, der Prüfer sieht sich bis zu drei Bilder parallel an, und die Fotos laden schon, während die festen Schritte laufen. Damit der Anbieter nicht überlastet wird, laufen höchstens vier Aufrufe gleichzeitig. Hier steckte die nächste Falle: Ich hatte diese Drossel zuerst innerhalb des Zeitlimits eingebaut. Aufrufe, die in der Warteschlange standen, liefen deshalb ab, bevor sie überhaupt gestartet waren, und die erste parallele Fassung brauchte 101 Sekunden. Die Drossel gehört vor das Zeitlimit.
Ein großes Modell, das Bilder ansieht, ist deutlich teurer als ein kleines Textmodell. Würde der Agent jeden Beitrag komplett mit dem großen Modell bauen, kostete ein Beitrag ein Vielfaches dessen, was er heute kostet. Deshalb teile ich die Arbeit auf. Das große Modell übernimmt nur die Bildarbeit, bei der es wirklich besser ist. Titel und Bildunterschrift schreibt ein kleineres offenes Textmodell, das der Agent als Werkzeug aufruft und das bei Texten kaum schlechter abschneidet. Beim Reel macht das wenig aus, weil die Bildarbeit überwiegt. Bei Formaten mit viel Text lohnt sich die Aufteilung deutlich mehr.
Wenn der Anbieter ausgelastet ist
Ab und zu ist das Modell beim Anbieter ausgelastet. Naheliegend wäre, automatisch auf GPT-4o auszuweichen. Ich habe mich dagegen entschieden, weil GPT-4o weder sauber zuschneiden noch Kennzeichen zuverlässig abdecken kann. Der Dienst versucht es jetzt selbst noch einmal, und wenn das auch nicht klappt, bittet er den Nutzer ehrlich, es in ein paar Minuten erneut zu versuchen. Ein kurzes Warten ist besser als ein schlechteres Reel, das niemand bemerkt, bis es online ist.
Die wichtigsten Learnings
- Klein anfangen und iterieren. Der erste Entwurf war ein klickbarer Prototyp ganz ohne Modell, danach kam ein Agent für ein einziges Format. Jede Runde mit echten Eingaben hat Fehler gezeigt, die auf dem Papier niemand gesehen hätte.
- Nicht alles gehört ins Modell. Feste Regeln wie „Logo an den Anfang“ sind Code. Das Modell bekommt nur die Entscheidungen, für die man Augen oder Urteilsvermögen braucht.
- Fähigkeiten und Werkzeuge bei Bedarf laden statt eines festen Prompts. Der Agent startet mit wenigen Grundregeln und lädt eine Fähigkeit wie „Zuschneiden“ oder „Abdecken“ erst, wenn er sie braucht, zusammen mit den passenden Werkzeugen. So bleibt der Prompt kurz, und neue Fähigkeiten kommen dazu, ohne dass die bestehenden angefasst werden.
- Kleine Aufrufe schlagen einen großen. Ein Aufruf je Foto ist schneller, günstiger und fällt seltener aus als ein Aufruf mit allen Bildern.
- Das Ergebnis prüfen, nicht den Plan. Kontrolliert wird das fertig gerenderte Bild, und zwar von einem Prüfer, der die Absicht nicht kennt.
- Mit echten Eingaben testen. Benchmarks sagen wenig über den eigenen Anwendungsfall. Eine feste Testreihe mit echten Fotos und echten Eingaben läuft nach jeder Änderung.
- Wörter im Prompt sind Logik. „Köpfe“ und „Gesichter“ führen zu verschiedenen Ergebnissen.
- EU-konform heißt mehr eigene Arbeit, und die lohnt sich. Offene Modelle bei einem europäischen Anbieter brauchen mehr Tests, halten die Daten aber in der EU und machen unabhängig von einem einzelnen Hersteller.
Wie es weitergeht
Der Reel-Assistent läuft gerade in unserer Testumgebung. Im Studio gibt es heute noch zwei Assistenten: den Agenten mit Werkzeugen für Reels und einen reinen Textassistenten für Storys, Beiträge und Karussells. Das Ziel ist ein einziger Studio-Agent für alle Formate, der je nach Aufgabe die passenden Fähigkeiten, Werkzeuge und Erinnerungen lädt und einfache Aufgaben wie das Texten an günstigere Unteragenten abgibt. Der Texter ist der erste dieser Unteragenten.
Dieselben Fragen stellen sich übrigens bei jedem Agenten, den ein Unternehmen heute in Copilot Studio baut: Was bleibt ein fester Ablauf, zum Beispiel in Power Automate? Wo braucht es wirklich ein Modell? Und wer prüft das Ergebnis, bevor es rausgeht?