modified: app/services/semantic_analyzer.py
This commit is contained in:
parent
bf40169662
commit
37c0f526ec
|
|
@ -12,7 +12,6 @@ from dataclasses import dataclass
|
|||
|
||||
# Import der benötigten Services (Annahme: llm_service und discovery sind verfügbar.)
|
||||
from app.services.llm_service import LLMService
|
||||
# ANNAHME: DiscoveryService ist für die Matrix-Logik verfügbar.
|
||||
from app.services.discovery import DiscoveryService
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -49,8 +48,7 @@ class SemanticAnalyzer:
|
|||
user_prompt = f"Dokument-Typ: {source_type}\n\nTEXT:\n{text}"
|
||||
|
||||
try:
|
||||
# 2. LLM Call (Async)
|
||||
# WICHTIG: Erzwingt Ollama JSON Mode über den neuen Parameter force_json=True
|
||||
# WICHTIG: Erzwingt Ollama JSON Mode
|
||||
response_json = await self.llm.generate_raw_response(
|
||||
user_prompt,
|
||||
system=system_prompt,
|
||||
|
|
@ -70,6 +68,11 @@ class SemanticAnalyzer:
|
|||
refined_edges = []
|
||||
|
||||
for rel in raw_rels:
|
||||
# FIX: Sicherstellen, dass rel ein Dictionary ist, um 'str' object has no attribute 'get' zu verhindern
|
||||
if not isinstance(rel, dict):
|
||||
logger.warning(f"SemanticAnalyzer: Ignoriere ungültige Relation: {rel}")
|
||||
continue
|
||||
|
||||
target = rel.get("target")
|
||||
raw_type = rel.get("type", "related_to")
|
||||
|
||||
|
|
@ -94,16 +97,16 @@ class SemanticAnalyzer:
|
|||
return results
|
||||
|
||||
except json.JSONDecodeError:
|
||||
logger.warning("SemanticAnalyzer: LLM lieferte kein valides JSON. Fallback auf Raw Text.")
|
||||
logger.error("SemanticAnalyzer: LLM lieferte KEIN valides JSON. Fallback auf Raw Text.")
|
||||
return [SemanticChunkResult(content=text, suggested_edges=[])]
|
||||
except Exception as e:
|
||||
logger.error(f"SemanticAnalyzer Error: {e}")
|
||||
# Wichtig: Fehler im Loggen, damit wir wissen, warum es crashte (z.B. Timeout/Ressource)
|
||||
logger.error(f"SemanticAnalyzer Unbehandelter Fehler: {e}")
|
||||
return [SemanticChunkResult(content=text, suggested_edges=[])]
|
||||
|
||||
# NEU: Helper zur Abfrage des Typs (muss die bestehenden Funktionen nutzen)
|
||||
def _get_target_type_from_title(self, title: str) -> str:
|
||||
"""Simuliert den Abruf des Notiztyps basierend auf dem Titel aus dem Index (für Matrix-Logik)."""
|
||||
# Diese Logik dient der Behebung des Test-Falls B4.
|
||||
|
||||
title_lower = title.lower()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user