2.9 KiB
2.9 KiB
Module Structure - serviceAi
Übersicht
Das mainServiceAi.py Modul wurde in mehrere Submodule aufgeteilt, um die Übersichtlichkeit zu verbessern.
Modulstruktur
Hauptmodul
- mainServiceAi.py (~800 Zeilen)
- Initialisierung (
__init__,create,ensureAiObjectsInitialized) - Public API (
callAiPlanning,callAiContent) - Routing zu Submodulen
- Helper-Methoden
- Initialisierung (
Submodule
-
subJsonResponseHandling.py (bereits vorhanden)
- JSON Response Merging
- Section Merging
- Fragment Detection
-
subResponseParsing.py (~200 Zeilen)
ResponseParser.extractSectionsFromResponse()- Extrahiert Sections aus AI-ResponsesResponseParser.shouldContinueGeneration()- Entscheidet ob Generation fortgesetzt werden sollResponseParser._isStuckInLoop()- Loop-DetectionResponseParser.extractDocumentMetadata()- Extrahiert MetadatenResponseParser.buildFinalResultFromSections()- Baut finales JSON
-
subDocumentIntents.py (~300 Zeilen)
DocumentIntentAnalyzer.clarifyDocumentIntents()- Analysiert Dokument-IntentsDocumentIntentAnalyzer.resolvePreExtractedDocument()- Löst pre-extracted Dokumente aufDocumentIntentAnalyzer._buildIntentAnalysisPrompt()- Baut Intent-Analyse-Prompt
-
subContentExtraction.py (~600 Zeilen)
ContentExtractor.extractAndPrepareContent()- Extrahiert und bereitet Content vorContentExtractor.extractTextFromImage()- Vision AI für BilderContentExtractor.processTextContentWithAi()- AI-Verarbeitung von TextContentExtractor._isBinary()- Helper für Binary-Check
-
subStructureGeneration.py (~200 Zeilen)
StructureGenerator.generateStructure()- Generiert Dokument-StrukturStructureGenerator._buildStructurePrompt()- Baut Struktur-Prompt
-
subStructureFilling.py (~400 Zeilen)
StructureFiller.fillStructure()- Füllt Struktur mit ContentStructureFiller._buildSectionGenerationPrompt()- Baut Section-Generation-PromptStructureFiller._findContentPartById()- Helper für ContentPart-SucheStructureFiller._needsAggregation()- Entscheidet ob Aggregation nötig
-
subAiCallLooping.py (~400 Zeilen)
AiCallLooper.callAiWithLooping()- Haupt-Looping-LogikAiCallLooper._defineKpisFromPrompt()- KPI-Definition
Verwendung
Alle Submodule werden über das Hauptmodul AiService verwendet:
# Initialisierung
aiService = await AiService.create(serviceCenter)
# Submodule werden automatisch initialisiert
# aiService.responseParser
# aiService.intentAnalyzer
# aiService.contentExtractor
# etc.
Migration
Die öffentliche API bleibt unverändert. Interne Methoden wurden in Submodule verschoben:
_extractSectionsFromResponse→responseParser.extractSectionsFromResponse_clarifyDocumentIntents→intentAnalyzer.clarifyDocumentIntents_extractAndPrepareContent→contentExtractor.extractAndPrepareContent- etc.