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