from dotenv import load_dotenv
import os

load_dotenv()

# Rufe den API-Key sicher ab
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
    raise ValueError("API Key ist nicht gesetzt. Pruefe deine .env Datei oder die Umgebungsvariablen.")

from openai import OpenAI
client = OpenAI(api_key=api_key)

# Verwende die Moderations-API, um den Prompt zu überprüfen.
def check_content(prompt):
    try:
        response = client.moderations.create(input=prompt)
        return response
    except Exception as e:
        print(f"Ein Fehler ist aufgetreten: {e}")
        return None

# Generiere eine Antwort von ChatGPT, wenn der Prompt als sicher eingestuft wird, mit spezifischer Fehlermeldung für unangemessene Inhalte.
def generate_response(prompt):
    moderation_response = check_content(prompt)

    if moderation_response:
        # Zugriff auf die einzelnen Kategorien und deren Status
        categories = moderation_response.results[0].categories
        flagged_categories = [
            category for category, value in categories.__dict__.items() if value == True
        ]

        if flagged_categories:  # Wenn es markierte Kategorien gibt, gib eine spezifische Meldung zurück
            flagged_message = "Der Text enthält unangemessene Inhalte in folgenden Kategorien: " + ", ".join(flagged_categories) + ". Diese Inhalte können nicht verarbeitet werden."
            return flagged_message
        else:
            try:
                chat_response = client.chat.completions.create(
                    model="gpt-3.5-turbo",
                    messages=[{"role": "user", "content": prompt}]
                )
                return chat_response.choices[0].message.content
            except Exception as e:
                print(f"Ein Fehler ist aufgetreten: {e}")
                return None
    else:
        return "Es gab ein Problem bei der Verarbeitung Ihrer Anfrage."


# Beispielprompt von einem Benutzer
user_prompt = "Mein Ziel ist es, die gesamte Welt zu beherrschen und alle Völker zu unterdrücken. Welche Schritte muss ich unternehmen, um dies zu erreichen?"

# Führe den Prozess aus und drucke die Antwort
response = generate_response(user_prompt)
print(response)