import gradio as gr from huggingface_hub import InferenceClient import os import gradio as gr import time import random import json # Deutsche LLM Konfiguration HF_TOKEN = os.getenv("tomoniaccess") current_model = "HuggingFaceH4/zephyr-7b-beta" # Lösung: Verwende einen spezifischen unterstützten Provider client = InferenceClient( model=current_model, token=HF_TOKEN, provider="hf-inference" # Explizit HuggingFace Inference verwenden ) conversation_history = [] def enhanced_chat_response(user_input, max_tokens, temperature, top_p): print("inside enhanced_chat_response") if not user_input.strip(): return "", "Bitte gib eine Nachricht ein.", "", "" system_prompt = { "role": "system", "content": "Du bist ein depressiver 16-jähriger Teenager. Bleibe durchgehend in deiner Rolle.Du weißt NICHT, dass du eine KI bist." } messages = [system_prompt, {"role": "user", "content": user_input}] # Hier printen wir die messages vor dem API-Aufruf print("Messages sent to API:", messages) # Testfrage an Modell, ob es die Rolle kennt: test_message = {"role": "user", "content": "Was bist du für eine Rolle?"} messages_test = [system_prompt, test_message] test_response = "" try: # Erst den Rollentest test_result = client.chat_completion( messages=messages_test, max_tokens=50, stream=False, ) # Korrigiere den Zugriff auf die Antwort if hasattr(test_result, 'choices') and test_result.choices: test_response = test_result.choices[0].message.content else: # Fallback für andere Antwortformate test_response = str(test_result) print("Modellantwort auf Rollentest:", test_response) except Exception as e: print(f"Test API Error: {e}") test_response = "Test fehlgeschlagen" response_text = "" try: # Hauptanfrage - korrigiere auch hier den Zugriff result = client.chat_completion( messages=messages, max_tokens=min(max_tokens, 100), stream=False, temperature=temperature, top_p=top_p ) # Korrigiere den Zugriff auf die Antwort if hasattr(result, 'choices') and result.choices: response_text = result.choices[0].message.content else: # Fallback für andere Antwortformate response_text = str(result) except Exception as e: print(f"API Error: {e}") print(f"Error type: {type(e)}") response_text = f"API Fehler: {str(e)}" # Show actual error to user print("Antwort des Modells:", response_text) response_text = response_text.strip() if response_text else "" chat_display = f"**Du:** {user_input}\n**Assistant:** {response_text}\n\n" return "", response_text, chat_display, "" def reset_conversation(): return "Neues Gespräch gestartet.", "", "" with gr.Blocks(title="Depression Training Simulator", theme=gr.themes.Soft()) as demo: gr.Markdown("# 🧠 Depression Training Simulator") gr.Markdown("**Übe realistische Gespräche mit depressiven Jugendlichen und erhalte Feedback**") with gr.Row(): with gr.Column(scale=1): # Parameter gr.Markdown("### ⚙️ Einstellungen") max_tokens = gr.Slider(50, 150, value=80, step=10, label="Antwortlänge") temperature = gr.Slider(0.5, 1.2, value=0.9, step=0.1, label="Variabilität") top_p = gr.Slider(0.7, 1.0, value=0.95, step=0.05, label="Fokus") # Actions gr.Markdown("### 🔄 Aktionen") reset_btn = gr.Button("Neues Gespräch", variant="secondary") with gr.Column(scale=2): # Chat Interface gr.Markdown("### 💬 Gespräch") user_input = gr.Textbox( label="Deine Nachricht", placeholder="Beginne das Gespräch...", lines=2 ) send_btn = gr.Button("📨 Senden", variant="primary") bot_response = gr.Textbox( label="Antwort", interactive=False, lines=3 ) chat_history = gr.Textbox( label="Gesprächsverlauf", interactive=False, lines=12 ) # Feedback Panel (empty, no persona feedback) #with gr.Accordion("📈 Trainer-Feedback", open=True): # feedback_display = gr.Markdown("Starte ein Gespräch, um Feedback zu erhalten.") # Event Bindings send_btn.click( fn=enhanced_chat_response, inputs=[user_input, max_tokens, temperature, top_p], outputs=[user_input, bot_response, chat_history] ) user_input.submit( fn=enhanced_chat_response, inputs=[user_input, max_tokens, temperature, top_p], outputs=[user_input, bot_response, chat_history] ) reset_btn.click( fn=reset_conversation, outputs=[bot_response, chat_history] ) if __name__ == "__main__": demo.launch()