knowledge.py

Code Hygiene Score: 75

Issues 1

Zeile Typ Beschreibung
- coupling Klasse hat 16 Dependencies (max: 15)

Dependencies 16

Code

"""
Modulares Wissensextraktions-System für 3-Ebenen-Analyse.

HINWEIS: Dies ist ein Backward-Kompatibilitäts-Wrapper.
Die eigentliche Implementierung ist in knowledge/ Package.

Ebenen:
1. Seite (page): Detailanalyse pro Einzelseite
2. Abschnitt (section): Aggregation pro Kapitel/Unterkapitel
3. Dokument (document): Konsolidierte Gesamtsicht

Wissenstypen:
- Entitäten: Personen, Konzepte, Methoden, Organisationen
- Semantik: Bedeutung, Definition, Referenzen
- Ontologie: Wechselwirkungen zwischen Entitäten
- Taxonomie: Hierarchische Einordnung

Autor: KI-System Pipeline
"""

# Re-export alles aus dem knowledge Package
from db import db
from knowledge import (
    DEFAULT_MODELS,
    # Extractors
    EntityExtractor,
    # Main Classes
    KnowledgeExtractor,
    # Models
    KnowledgeLevel,
    KnowledgeStorage,
    KnowledgeType,
    LLMService,
    ModelConfig,
    OntologyExtractor,
    SemanticExtractor,
    TaxonomyExtractor,
    get_model_config,
    process_document_knowledge,
    # Functions
    store_knowledge,
)

__all__ = [
    "KnowledgeLevel",
    "KnowledgeType",
    "ModelConfig",
    "DEFAULT_MODELS",
    "KnowledgeExtractor",
    "LLMService",
    "KnowledgeStorage",
    "EntityExtractor",
    "SemanticExtractor",
    "OntologyExtractor",
    "TaxonomyExtractor",
    "store_knowledge",
    "get_model_config",
    "process_document_knowledge",
]


# CLI Interface
if __name__ == "__main__":
    import sys

    if len(sys.argv) < 2:
        print("Verwendung: python knowledge.py <document_id> [provider] [model]")
        print("  provider: ollama (default) oder anthropic")
        print("  model: gemma3:27b-it-qat (ollama) oder claude-3-haiku-20240307 (anthropic)")
        sys.exit(1)

    doc_id = int(sys.argv[1])
    provider = sys.argv[2] if len(sys.argv) > 2 else "ollama"
    model = sys.argv[3] if len(sys.argv) > 3 else None

    if not db.connect():
        print("Datenbankverbindung fehlgeschlagen")
        sys.exit(1)

    print(f"Starte Wissensextraktion für Dokument {doc_id}")
    print(f"Provider: {provider}, Model: {model or 'default'}")

    results = process_document_knowledge(doc_id, provider, model)

    print("\nErgebnisse:")
    print(f"  Seiten analysiert: {len(results['pages'])}")
    print(f"  Abschnitte analysiert: {len(results['sections'])}")
    if results["document"]:
        print(f"  Dokument-Entitäten: {results['document']['entities']}")
        print(f"  Dokument-Relationen: {results['document']['ontology']}")

    db.disconnect()
← Übersicht