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:
@@ -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")
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren