expand_knowledge_base.py aktualisiert

This commit is contained in:
2025-07-23 15:18:54 +00:00
parent 08ce38a2c4
commit 52c32bc15b

View File

@@ -5,8 +5,8 @@ import yaml
import logging
import time
import openai
import argparse # NEU: Für Kommandozeilen-Argumente
from config import Config, BRANCH_GROUP_MAPPING
import argparse
from config import Config
# --- Konfiguration ---
BASE_KNOWLEDGE_FILE = "marketing_wissen.yaml"
@@ -60,7 +60,6 @@ def main(branches_to_process=None):
"""Erweitert die Wissensbasis um die fehlenden Branchen und speichert die Recherche-Dossiers."""
logging.info("Starte Erweiterung der Wissensbasis...")
# ... (Code zum Laden der API-Keys und der Basis-Wissensdatei bleibt unverändert) ...
Config.load_api_keys()
openai.api_key = Config.API_KEYS.get('openai')
if not openai.api_key:
@@ -74,12 +73,10 @@ def main(branches_to_process=None):
logging.critical(f"FEHLER: Basis-Wissensdatei '{BASE_KNOWLEDGE_FILE}' nicht gefunden.")
return
all_branches = set(BRANCH_GROUP_MAPPING.keys())
all_branches = set(Config.BRANCH_GROUP_MAPPING.keys())
existing_branches = set(knowledge_base.get('Branchen', {}).keys())
# --- NEUE LOGIK ZUR BRANCHEN-AUSWAHL ---
if branches_to_process:
# Modus: Nur die übergebenen Branchen verarbeiten
target_branches = [b for b in branches_to_process if b in all_branches]
if not target_branches:
logging.error("Keine der angegebenen Branchen ist gültig. Bitte prüfen Sie die Schreibweise.")
@@ -87,7 +84,6 @@ def main(branches_to_process=None):
return
logging.info(f"Verarbeite die {len(target_branches)} explizit angegebenen Branchen...")
else:
# Modus: Alle fehlenden Branchen verarbeiten
target_branches = sorted(list(all_branches - existing_branches))
if not target_branches:
logging.info("Glückwunsch! Alle Branchen sind bereits in der Wissensbasis vorhanden.")
@@ -96,7 +92,8 @@ def main(branches_to_process=None):
logging.info(f"Zu verarbeitende Branchen: {', '.join(target_branches)}")
DOSSIER_FOLDER = "generated_dossiers"
# KORRIGIERTE ZEILE
DOSSIER_FOLDER = "industries"
os.makedirs(DOSSIER_FOLDER, exist_ok=True)
for branch in target_branches:
@@ -106,8 +103,6 @@ def main(branches_to_process=None):
logging.info(f"\n--- Verarbeite Branche: {branch} ---")
# Stufe 1: Recherche-Dossier erstellen
# ... (Rest der Logik innerhalb der Schleife bleibt unverändert) ...
logging.info(" -> Stufe 1: Generiere Recherche-Dossier...")
research_prompt = generate_research_prompt(branch)
dossier = call_openai_with_retry(research_prompt)
@@ -123,7 +118,6 @@ def main(branches_to_process=None):
time.sleep(2)
# Stufe 2: Informationen extrahieren
logging.info(" -> Stufe 2: Extrahiere strukturierte Daten aus dem Dossier...")
extraction_prompt = generate_extraction_prompt(dossier)
extracted_data_str = call_openai_with_retry(extraction_prompt, is_extraction=True)
@@ -139,7 +133,7 @@ def main(branches_to_process=None):
knowledge_base['Branchen'][branch] = extracted_data
logging.info(f" -> {branch} erfolgreich zur Wissensbasis hinzugefügt.")
except Exception as e:
logging.error(f" Fehler beim Parsen der extrahierten Daten für {branch}: {e}")
logging.error(f" -> Fehler beim Parsen der extrahierten Daten für {branch}: {e}")
time.sleep(2)
@@ -151,11 +145,10 @@ def main(branches_to_process=None):
logging.error(f"Fehler beim Speichern der finalen YAML-Datei: {e}")
if __name__ == "__main__":
# NEU: Argument Parser für die Kommandozeile
parser = argparse.ArgumentParser(description="Erweitert die Marketing-Wissensbasis um fehlende Branchen.")
parser.add_argument(
"--branches",
nargs='+', # Erlaubt mehrere Werte, z.B. --branches "Branche A" "Branche B"
nargs='+',
type=str,
help="Eine oder mehrere spezifische Branchen, die verarbeitet werden sollen. Bei Angabe werden nur diese bearbeitet."
)