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