CarFinanceAgent / chatbot /llm /json_utils.py
emreceniklioglu
Initial commit: LangGraph multi-agent car finance chatbot
49102bb
Raw
History Blame Contribute Delete
889 Bytes
"""LLM JSON cevaplarını güvenli parse etme yardımcıları.
LLM'ler bazen ```json ... ``` markdown code fence ile sarar veya
JSON öncesi/sonrası açıklama metni ekler. Bu helper bu varyasyonları temizler.
"""
import json
import re
_FENCE_RE = re.compile(r"^```(?:json)?\s*|\s*```$", re.IGNORECASE | re.MULTILINE)
def parse_llm_json(text: str) -> dict | None:
"""LLM cevabından JSON dict çıkar; başarısızsa None döner."""
if not text:
return None
s = text.strip()
# Markdown code fence'i kaldır
s = _FENCE_RE.sub("", s).strip()
# Direkt dene
try:
return json.loads(s)
except Exception:
pass
# İlk { ... } bloğunu yakalamayı dene
match = re.search(r"\{[\s\S]*\}", s)
if match:
try:
return json.loads(match.group())
except Exception:
return None
return None