bugfix
This commit is contained in:
@@ -373,6 +373,87 @@ def retry_on_failure(func):
|
||||
# Ende Retry Decorator Block
|
||||
# ==============================================================================
|
||||
|
||||
# ==============================================================================
|
||||
# 3. GLOBALE HELPER FUNCTIONS (PART 2: Logging & Token Count)
|
||||
# (Teil von logisch 'utils.py')
|
||||
# ==============================================================================
|
||||
|
||||
# --- Token Count Funktion ---
|
||||
# Zaehlt Tokens via tiktoken oder schaetzt ueber Leerzeichen.
|
||||
# Der retry_on_failure Decorator ist hier nicht sinnvoll, da es eine lokale Berechnung ist.
|
||||
def token_count(text, model=None):
|
||||
"""Zaehlt Tokens via tiktoken oder schaetzt ueber Leerzeichen."""
|
||||
# Verwenden Sie logger, da das Logging jetzt konfiguriert ist (im Root Logger)
|
||||
if not text or not isinstance(text, str): return 0
|
||||
|
||||
current_model = model if model else getattr(Config, 'TOKEN_MODEL', 'gpt-3.5-turbo')
|
||||
|
||||
if tiktoken:
|
||||
try:
|
||||
# Cache encoding object per model
|
||||
if not hasattr(token_count, 'enc_cache'):
|
||||
token_count.enc_cache = {}
|
||||
if current_model not in token_count.enc_cache:
|
||||
token_count.enc_cache[current_model] = tiktoken.encoding_for_model(current_model)
|
||||
enc = token_count.enc_cache[current_model]
|
||||
return len(enc.encode(text))
|
||||
except Exception as e:
|
||||
# Logge Fehler auf Debug, da dies ein Fallback ist
|
||||
logger.debug(f"Fehler beim Token-Counting mit tiktoken fuer Modell '{current_model}': {e} - Fallback zur Schaetzung.")
|
||||
# Fallback zur Schaetzung
|
||||
return len(str(text).split()) # Sicherstellen, dass text ein String ist
|
||||
else:
|
||||
# Fallback Schaetzung
|
||||
return len(str(text).split()) # Sicherstellen, dass text ein String ist
|
||||
|
||||
|
||||
# --- Logging Helpers ---
|
||||
# Erstellt den Logdateinamen.
|
||||
# LOG_FILE ist global definiert und wird in main() gesetzt (Block 34)
|
||||
LOG_FILE = None # Initialisierung, falls noch nicht geschehen
|
||||
|
||||
def create_log_filename(mode):
|
||||
"""Erstellt einen zeitgestempelten Logdateinamen im LOG_DIR."""
|
||||
# Verwenden Sie logger, da das Logging jetzt konfiguriert ist (print am Anfang von main)
|
||||
log_dir_path = LOG_DIR # Nutzt die globale Konstante (Block 1)
|
||||
|
||||
# Erstelle das Log-Verzeichnis, falls es nicht existiert
|
||||
if not os.path.exists(log_dir_path):
|
||||
try:
|
||||
# exist_ok=True verhindert Fehler, wenn das Verzeichnis bereits existiert
|
||||
os.makedirs(log_dir_path, exist_ok=True)
|
||||
# Logge die Erstellung des Verzeichnisses
|
||||
logger.info(f"Log-Verzeichnis '{log_dir_path}' erstellt.")
|
||||
except Exception as e:
|
||||
# Logge Fehler auf Error-Level
|
||||
logger.error(f"FEHLER: Konnte Log-Verzeichnis '{log_dir_path}' nicht erstellen: {e}")
|
||||
# Versuche, die Datei im aktuellen Verzeichnis zu erstellen, wenn LOG_DIR fehlschlaegt
|
||||
log_dir_path = "." # Fallback Verzeichnis
|
||||
logger.warning(f"Versuche, Logdatei im aktuellen Verzeichnis '{log_dir_path}' zu erstellen.")
|
||||
|
||||
# Erstelle den Dateinamen mit Zeitstempel und Version
|
||||
try:
|
||||
now = datetime.now().strftime("%d-%m-%Y_%H-%M")
|
||||
# Sicherstellen, dass Config.VERSION verfuegbar ist (Block 1), Fallback falls nicht
|
||||
ver_short = getattr(Config, 'VERSION', 'unknown').replace(".", "")
|
||||
filename = f"{now}_{ver_short}_Modus{mode}.txt"
|
||||
# Gebe den vollstaendigen Pfad zurueck
|
||||
return os.path.join(log_dir_path, filename)
|
||||
except Exception as e_fallback:
|
||||
# Logge Fehler bei der Dateinamen-Erstellung
|
||||
logger.error(f"FEHLER: Konnte Logdateinamen auch im Fallback-Verzeichnis '{log_dir_path}' nicht erstellen: {e_fallback}")
|
||||
# Signalisiere Fehler durch Rueckgabe von None
|
||||
return None
|
||||
|
||||
|
||||
# debug_print ist nicht mehr notwendig, da wir das Standard-Logging nutzen.
|
||||
# Alle bisherigen Aufrufe von debug_print werden durch logger.debug, logger.info, logger.warning, logger.error, logger.critical ersetzt.
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# Ende Grundlegende Helfer Block
|
||||
# ==============================================================================
|
||||
|
||||
# ==============================================================================
|
||||
# GLOBALE HELPER FUNCTIONS (PART 2: Text, String & URL Utilities)
|
||||
# ==============================================================================
|
||||
|
||||
Reference in New Issue
Block a user