fix: JSON-Wrapping bei Beschreibung generieren bereinigen

call_claude erzwingt bei tools=None JSON-Output per System-Prompt.
Haiku wrapped den generierten Text dann in ein JSON-Objekt.
Fix: JSON parsen und erstes String-Feld extrahieren.
Dieser Commit ist enthalten in:
Claude Dev
2026-03-27 23:56:28 +01:00
Ursprung 2c3c3b256a
Commit 702ae3cfcf

Datei anzeigen

@@ -204,11 +204,27 @@ async def enhance_description(
try: try:
result, usage = await call_claude(prompt, tools=None, model=CLAUDE_MODEL_FAST) result, usage = await call_claude(prompt, tools=None, model=CLAUDE_MODEL_FAST)
# call_claude erzwingt bei tools=None JSON-Output —
# Haiku wrapped den Text dann in ein JSON-Objekt
text = result.strip()
try:
import json as _json
parsed = _json.loads(text)
if isinstance(parsed, dict):
# Erstes String-Feld extrahieren (description, text, content etc.)
for val in parsed.values():
if isinstance(val, str) and len(val) > 20:
text = val
break
except (ValueError, TypeError):
pass # Kein JSON — text direkt verwenden
_enhance_logger.info( _enhance_logger.info(
f"Beschreibung generiert fuer \"{data.title[:50]}\": " f"Beschreibung generiert fuer \"{data.title[:50]}\": "
f"{usage.input_tokens}in/{usage.output_tokens}out" f"{usage.input_tokens}in/{usage.output_tokens}out"
) )
return {"description": result.strip()} return {"description": text}
except Exception as e: except Exception as e:
_enhance_logger.error(f"Beschreibung generieren fehlgeschlagen: {e}") _enhance_logger.error(f"Beschreibung generieren fehlgeschlagen: {e}")
raise HTTPException(status_code=500, detail="Beschreibung konnte nicht generiert werden") raise HTTPException(status_code=500, detail="Beschreibung konnte nicht generiert werden")