helpers.py aktualisiert

This commit is contained in:
2025-07-20 05:35:57 +00:00
parent 82ccd46c7f
commit 018b8acbdc

View File

@@ -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):