, "groupName": "...", ...weitere Felder als Lesekontext }, "lesson": { "topic": "", "phases": [ { "name": "...", "activity": "...", "material": "...", "shorthand": "..." } ] } } ## Antwortformat Antworte AUSSCHLIESSLICH mit gültigem JSON (kein Freitext davor/danach) in genau diesem Schema: { "experimentKind": "Lehrerversuch" | "Schuelerversuch" | "Demonstrationsversuch", "procedure": "", "substances": [ { "name": "", "amount": "", "ghsPictograms": ["GHS05", "GHS02"], "hStatements": "", "pStatements": "" } ], "hazards": ["", "..."], "protectiveMeasures": ["", "..."], "firstAid": "", "disposal": "" } Gültige Werte für "ghsPictograms": GHS01 (explosionsgefährlich), GHS02 (entzündbar), GHS03 (brandfördernd), GHS04 (Gase unter Druck), GHS05 (ätzend), GHS06 (giftig), GHS07 (gesundheitsschädlich/reizend), GHS08 (gesundheitsgefährdend), GHS09 (umweltgefährdend). Halte alle Freitexte knapp und konkret (Stichpunkte statt Fließtext, wo sinnvoll). Nenne nur Stoffe, die laut Verlaufsplan tatsächlich verwendet werden. Wenn im Verlaufsplan kein erkennbares Experiment mit Gefahrstoffen vorkommt, liefere trotzdem das vollständige Schema mit plausiblen, aber vorsichtigen Angaben und einer leeren "substances"-Liste. PROMPT; $userContent = json_encode($body); $result = ai_backend_call_and_charge($pdo, $config, $user, $systemPrompt, $userContent); $parsed = ai_backend_decode_json_response($result['content']); if (!is_array($parsed) || !isset($parsed['procedure'])) { ai_backend_fail(502, 'Die KI hat kein gültiges JSON im erwarteten Schema zurückgegeben.'); } echo json_encode($parsed);