expand_knowledge_base.py aktualisiert
This commit is contained in:
@@ -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."
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user