diff --git a/helpers.py b/helpers.py index 1a769e92..c7c63114 100644 --- a/helpers.py +++ b/helpers.py @@ -787,43 +787,36 @@ def call_openai_chat(prompt, temperature=0.3, model=None): raise e +@retry_on_failure def summarize_website_content(raw_text, company_name_for_context="einem Unternehmen"): """ - Erstellt eine Zusammenfassung eines Website-Rohtextes ueber OpenAI. - - Args: - raw_text (str): Der rohe Textinhalt der Website. - - Returns: - str: Die generierte Zusammenfassung oder ein Fehlerwert ("k.A.", etc.). + Fasst den Rohtext einer Website mit OpenAI zusammen. + Nutzt nun den Firmennamen für besseren Kontext. """ logger = logging.getLogger(__name__) - if not raw_text or str(raw_text).strip() == "" or str(raw_text).strip().lower() in ["k.a.", "k.a. (nur cookie-banner erkannt)", "k.a. (fehler)"]: - logger.debug("summarize_website_content skipped: No valid raw text provided.") - return "k.A." - - max_raw_length = 3000 - if len(str(raw_text)) > max_raw_length: - logger.debug(f"Kuerze Rohtext fuer Zusammenfassung von {len(str(raw_text))} auf {max_raw_length} Zeichen.") - raw_text = str(raw_text)[:max_raw_length] + if not raw_text or len(raw_text) < 100 or raw_text.lower().strip().startswith('k.a.'): + logger.debug(f"Überspringe Website-Zusammenfassung für '{company_name_for_context}', Text zu kurz oder 'k.A.'.") + return "k.A. (Text zu kurz)" + # NEUER, KONTEXTBEZOGENER PROMPT prompt = ( - "Du bist ein KI-Assistent, der Webinhalte analysiert.\n" - "Fasse den folgenden Text einer Unternehmenswebsite praegnant zusammen. " - "Konzentriere dich dabei auf:\n" - "- Haupttaetigkeitsfeld des Unternehmens\n" - "- Wichtigste Produkte und/oder Dienstleistungen\n" - "- Zielgruppe (falls erkennbar)\n\n" - f"Website-Text:\n```\n{raw_text}\n```\n\n" - "Zusammenfassung (max. 100 Woerter):" + f"Du bist ein Wirtschaftsanalyst. Deine Aufgabe ist es, den Kern eines Unternehmens zu erfassen.\n" + f"Fasse den folgenden Rohtext der Website für das Unternehmen '{company_name_for_context}' prägnant zusammen.\n" + "Konzentriere dich ausschließlich auf die folgenden drei Punkte:\n" + "- Was ist das Haupttätigkeitsfeld?\n" + "- Was sind die wichtigsten Produkte und/oder Dienstleistungen?\n" + "- Wer ist die primäre Zielgruppe (z.B. B2B, B2C, spezifische Industrien)?\n\n" + "Website-Text:\n" + f"```\n{raw_text[:4000]}\n```\n\n" # Längenlimit leicht erhöht + "Zusammenfassung (max. 100 Wörter):" ) - + try: - summary = call_openai_chat(prompt, temperature=0.2) - return summary if summary and summary.strip() else "k.A. (Keine Zusammenfassung erhalten)" + summary = call_openai_chat(prompt, temperature=0.2, model="gpt-4o-mini") + return summary if summary else "k.A. (Zusammenfassung fehlgeschlagen)" except Exception as e: - logger.error(f"FEHLER bei Website Zusammenfassung nach Retries: {e}") - return f"k.A. (Fehler Zusammenfassung: {str(e)[:50]}...)" + logger.error(f"Fehler bei der Website-Zusammenfassung für {company_name_for_context}: {e}") + return "FEHLER (API-Fehler bei Zusammenfassung)" @retry_on_failure def summarize_wikipedia_article(full_text, company_name):