from dotenv import load_dotenv
from openai import OpenAI
import os
import json

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.")

client = OpenAI(api_key=api_key)

response = client.moderations.create(
    model="text-moderation-latest",
    input="Ich möchte meinen Mathelehrer töten."
)

'''
Moderations-API von OpenAI liefert zur oberen Anfrage folgende Ausgabe hinsichtlich verschiedener potenziell problematischer Inhalte bewertet wurde. 
id: Dies ist die eindeutige Identifikationsnummer der Moderationsanfrage.
model: Das spezifische Modell der Moderation, das verwendet wurde, hier "text-moderation-007".
results: Eine Liste von Ergebnissen, die verschiedene Kategorien von problematischem Inhalt enthält:
categories: Dies zeigt die Kategorien, für die der Inhalt als relevant angesehen wurde:
harassment (Belästigung): Wahr, wenn der Inhalt als belästigend eingestuft wurde.
harassment_threatening (bedrohliche Belästigung): Wahr, wenn der Inhalt als bedrohlich und belästigend eingestuft wurde.
hate (Hass): Falsch, bedeutet, dass der Inhalt nicht als Hassrede klassifiziert wurde.
hate_threatening (bedrohlicher Hass): Wahr, wenn der Inhalt als bedrohlich im Kontext von Hass eingestuft wurde.
self_harm (Selbstverletzung), self_harm_instructions, self_harm_intent: Hier sind alle Werte falsch, was bedeutet, dass der Inhalt keine Anzeichen von Selbstverletzung oder Anleitungen dazu enthält.
sexual (sexueller Inhalt), sexual_minors (sexueller Inhalt mit Minderjährigen): Beide falsch, was bedeutet, dass keine sexuellen Inhalte erkannt wurden.
violence (Gewalt): Wahr, was bedeutet, dass der Inhalt als gewalttätig eingestuft wurde.
violence_graphic (grafische Gewalt): Falsch, keine grafische Gewalt erkannt.
category_scores: Diese Werte repräsentieren die Wahrscheinlichkeit, mit der das Modell den Text jeder Kategorie zuordnet, ausgedrückt als Zahl zwischen 0 und 1.
Violence hat hier einen score von 0.9908425807952881 und ist somit sehr hoch.
flagged: Wahr, was bedeutet, dass der Inhalt insgesamt als problematisch markiert wurde.
'''

# Extract the response
print(response)