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