Case Study
Eine kleine Symfony-Anwendung, um Symfonys brandneue offizielle AI-Komponente praktisch kennenzulernen: Ein Agent fasst beliebige Texte über die OpenAI-API (gpt-4o-mini) in drei Sätzen zusammen. Entstanden als Begleitcode zu einem deutschsprachigen Tutorial, das ich aufgenommen habe. Es ist ein kompaktes, ehrliches Demo statt einer Produktivanwendung, bei dem das neue AgentInterface end-to-end verdrahtet ist.
Meine Rolle
Ich habe das Projekt allein gebaut, um Symfonys neue AI-Integrationsschicht praktisch zu lernen, bevor ich sie in einem echten Projekt einsetze. Begleitcode zu einem deutschsprachigen YouTube-Tutorial, das ich aufgenommen habe. Produktionsthemen (Formular-Validierung, CSRF, Fehlerbehandlung, Streaming) habe ich bewusst weggelassen, da sie nicht der Punkt der Übung waren.
Ergebnis
Ein minimaler, funktionierender KI-Agent vom Formular über den Agent und OpenAI bis zu Twig, plus zwei dokumentierte Stolpersteine für den nächsten Entwickler (und mein zukünftiges Ich), der mit Symfony AI arbeitet.
Tech-Stack
- Backend: PHP 8.4, Symfony 8.1
- KI: Symfony AI Bundle v0.11.0 (ai-bundle, ai-agent, ai-open-ai-platform) mit OpenAI gpt-4o-mini
- Frontend: Twig, Symfony UX Turbo
Herausforderungen & Lösungen
1. Symfony AI ist ein Baukasten aus 70+ Paketen, nicht eines
Das ai-bundle allein reicht nicht. Dazu kommen die Agent-Komponente ai-agent (Agent, MessageBag) und eine separate Anbieter-Bridge (hier: ai-open-ai-platform). Der Vorteil: Ein späterer Anbieterwechsel (Anthropic, Gemini, ein lokales Ollama-Modell) bedeutet nur das Austauschen der Bridge, nicht das Umschreiben der eigenen Anwendungslogik.
2. Turbo schluckt die Antwort
Das Symfony-Webapp-Skeleton bringt Symfony UX Turbo mit, das nach einem Formular-POST einen Redirect erwartet. Ohne data-turbo="false" am <form> antwortet der Server zwar korrekt, im Browser erscheint aber nichts. Das erinnert mich daran, bei „die UI tut nichts" den Network-Tab statt nur die Server-Logs zu prüfen.