Wir bauen einen Kundenservice-Chatbot für ein fiktives SaaS-Produkt namens “CloudDash”, ein Cloud-Überwachungs-Dashboard. Der Chatbot beantwortet Fragen zu Preisen, Funktionen und Fehlersuche. Dabei fügen wir an jeder Stelle eine RAIL Score-Bewertung hinzu, um sicherzustellen, dass die Antworten des Chatbots sicher, genau, fair und hilfreich sind.
RAIL_API_KEY=YOUR_RAIL_API_KEYOPENAI_API_KEY=sk-your_openai_keyGEMINI_API_KEY=your_gemini_key# Optional: für Teil 2 (Langfuse-Beobachtbarkeit)LANGFUSE_PUBLIC_KEY=pk-lf-...LANGFUSE_SECRET_KEY=sk-lf-...LANGFUSE_HOST=https://cloud.langfuse.com
Holen Sie sich Ihren RAIL API-Schlüssel: Melden Sie sich unter responsibleailabs.ai/dashboard an. Die kostenlose Stufe umfasst 100 Credits, um dieses gesamte Tutorial zu verfolgen.
Beginnen Sie mit einem grundlegenden Chatbot, der OpenAI direkt verwendet, ohne RAIL-Integration. Dies ist die Grundlage, auf der wir die Bewertung aufbauen werden.
chatbot.py
import openaiimport osopenai_client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))SYSTEM_PROMPT = """Sie sind CloudDash Support, ein hilfreicher Assistent fürCloudDash — ein Cloud-Überwachungs-Dashboard. Beantworten Sie Fragen zuPreisen, Funktionen, Einrichtung und Fehlersuche. Seien Sie präzise und genau.Wenn Sie etwas nicht wissen, sagen Sie es."""def chat(user_message: str, history: list[dict] = None) -> str: messages = [{"role": "system", "content": SYSTEM_PROMPT}] if history: messages.extend(history) messages.append({"role": "user", "content": user_message}) response = openai_client.chat.completions.create( model="gpt-4o", messages=messages, temperature=0.3, ) return response.choices[0].message.contentreply = chat("Welche Preispläne bieten Sie an?")print(reply)
Das funktioniert, aber wir haben keine Sichtbarkeit in die Qualität der Antworten. Ist diese Antwort sicher? Ist sie faktisch genau? Enthält sie Vorurteile? Wir haben keine Möglichkeit, dies zu wissen, bis wir RAIL Score hinzufügen.
Der Basismodus gibt Ihnen Werte. Der Tiefenmodus gibt Ihnen das Warum: Erklärungen pro Dimension, erkannte Probleme und Verbesserungsvorschläge.
deep_eval.py
result = rail.eval(content=reply, mode="deep")print(f"Gesamt: {result.rail_score.score}")print()for dim_name, detail in result.dimension_scores.items(): print(f"--- {dim_name} (Wert: {detail.score}) ---") print(f" Erklärung: {detail.explanation}") if detail.issues: print(f" Probleme: {', '.join(detail.issues)}") if detail.suggestions: print(f" Vorschlag: {detail.suggestions[0]}") print()
Beispielausgabe
Gesamt: 8.4--- Zuverlässigkeit (Wert: 7.8) --- Erklärung: Die Antwort liefert spezifische Preisangaben ($29, $79), die vernünftig erscheinen, aber nicht mit den tatsächlichen CloudDash- Preisen verifiziert werden können. Die Aufschlüsselung der Funktionen ist plausibel, aber unbestätigt. Probleme: übermäßige_zuversicht Vorschlag: Fügen Sie einen Haftungsausschluss hinzu, dass die Preise Änderungen unterliegen, oder verlinken Sie zur offiziellen Preisseite für die aktuellsten Informationen.--- Transparenz (Wert: 8.0) --- Erklärung: Die Antwort präsentiert klar die drei Stufen mit unterschiedlichen Funktionen. Es wird jedoch nicht offengelegt, dass möglicherweise nicht die neuesten Preisinformationen vorliegen. Probleme: verborgene_einschränkung Vorschlag: Geben Sie an, dass Preisinformationen auf der offiziellen Website überprüft werden sollten.--- Benutzerimpact (Wert: 9.0) --- Erklärung: Beantwortet direkt die Preisfrage des Benutzers mit einem gut strukturierten Vergleich. Die Folgefrage fügt Wert hinzu.
Kosten spartipp: Verwenden Sie den Basismodus für jede Antwort in der Produktion und den Tiefenmodus selektiv. Zum Beispiel, aktivieren Sie den Tiefenmodus, wenn ein Basiswert unter Ihrem Schwellenwert liegt, oder als regelmäßige Prüfung einer Stichprobe von Antworten.