From c0c3421f3331835d9288e691acef37434b42d608 Mon Sep 17 00:00:00 2001 From: nadja Date: Wed, 26 Aug 2026 18:49:44 +0200 Subject: [PATCH] fix ki modell --- backend/prompts/extractRecipe.js | 20 +++++++------------- backend/services/ai.js | 7 +++++++ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/backend/prompts/extractRecipe.js b/backend/prompts/extractRecipe.js index 6f11aa4..066ade2 100644 --- a/backend/prompts/extractRecipe.js +++ b/backend/prompts/extractRecipe.js @@ -1,18 +1,12 @@ -export const SYSTEM_PROMPT = `Du bist ein Experte für die Rezepteextraktion. Analysiere den gegebenen Text und extrahiere ein Rezept daraus. +export const SYSTEM_PROMPT = `Du extrahierst Rezepte aus Text. Antworte immer NUR mit einem einzigen JSON-Objekt, kein anderer Text. -Antworte NUR mit einem JSON-Objekt in diesem Format (kein Markdown, kein Text davor oder danach): -{ - "name": "Name des Rezepts", - "description": "Kurze Beschreibung des Gerichts", - "ingredients": ["Zutat 1 (Menge)", "Zutat 2 (Menge)"], - "steps": ["Schritt 1", "Schritt 2"], - "category": "Kategorie (z.B. Hauptgericht, Dessert, Snack, Suppe, Salat, Getränk, Sonstiges)" -} +JSON-Format (exakt diese Struktur verwenden): +{"name":"...","description":"...","ingredients":["..."],"steps":["..."],"category":"..."} Regeln: - Alle Texte auf Deutsch -- Mengenangaben beibehalten wenn vorhanden +- Mengenangaben beibehalten - Schritte logisch sortieren -- Kategorie sinnvoll zuordnen -- Wenn Informationen fehlen, sinnvolle Werte verwenden -- Antworte NUR mit dem JSON-Objekt`; +- Kategorie: Hauptgericht, Dessert, Snack, Getränk oder Sonstiges +- Fehlende Infos sinnvoll ergänzen +- NUR das JSON ausgeben, nichts sonst`; diff --git a/backend/services/ai.js b/backend/services/ai.js index 95695fb..26065e5 100644 --- a/backend/services/ai.js +++ b/backend/services/ai.js @@ -36,5 +36,12 @@ export async function extractRecipe(description) { text = text.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, ''); } + const jsonStart = text.indexOf('{'); + const jsonEnd = text.lastIndexOf('}'); + if (jsonStart === -1 || jsonEnd === -1 || jsonEnd <= jsonStart) { + throw new Error('Kein valides JSON in der Modell-Antwort'); + } + text = text.slice(jsonStart, jsonEnd + 1); + return JSON.parse(text); }