gateway/modules/services/serviceAi/README_MODULE_STRUCTURE.md
2025-12-25 23:51:47 +01:00

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

Submodule

  1. subJsonResponseHandling.py (bereits vorhanden)

    • JSON Response Merging
    • Section Merging
    • Fragment Detection
  2. subResponseParsing.py (~200 Zeilen)

    • ResponseParser.extractSectionsFromResponse() - Extrahiert Sections aus AI-Responses
    • ResponseParser.shouldContinueGeneration() - Entscheidet ob Generation fortgesetzt werden soll
    • ResponseParser._isStuckInLoop() - Loop-Detection
    • ResponseParser.extractDocumentMetadata() - Extrahiert Metadaten
    • ResponseParser.buildFinalResultFromSections() - Baut finales JSON
  3. subDocumentIntents.py (~300 Zeilen)

    • DocumentIntentAnalyzer.clarifyDocumentIntents() - Analysiert Dokument-Intents
    • DocumentIntentAnalyzer.resolvePreExtractedDocument() - Löst pre-extracted Dokumente auf
    • DocumentIntentAnalyzer._buildIntentAnalysisPrompt() - Baut Intent-Analyse-Prompt
  4. subContentExtraction.py (~600 Zeilen)

    • ContentExtractor.extractAndPrepareContent() - Extrahiert und bereitet Content vor
    • ContentExtractor.extractTextFromImage() - Vision AI für Bilder
    • ContentExtractor.processTextContentWithAi() - AI-Verarbeitung von Text
    • ContentExtractor._isBinary() - Helper für Binary-Check
  5. subStructureGeneration.py (~200 Zeilen)

    • StructureGenerator.generateStructure() - Generiert Dokument-Struktur
    • StructureGenerator._buildStructurePrompt() - Baut Struktur-Prompt
  6. subStructureFilling.py (~400 Zeilen)

    • StructureFiller.fillStructure() - Füllt Struktur mit Content
    • StructureFiller._buildSectionGenerationPrompt() - Baut Section-Generation-Prompt
    • StructureFiller._findContentPartById() - Helper für ContentPart-Suche
    • StructureFiller._needsAggregation() - Entscheidet ob Aggregation nötig
  7. subAiCallLooping.py (~400 Zeilen)

    • AiCallLooper.callAiWithLooping() - Haupt-Looping-Logik
    • AiCallLooper._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:

  • _extractSectionsFromResponseresponseParser.extractSectionsFromResponse
  • _clarifyDocumentIntentsintentAnalyzer.clarifyDocumentIntents
  • _extractAndPrepareContentcontentExtractor.extractAndPrepareContent
  • etc.