diff --git a/main.py b/main.py index 4b73f52..6dab940 100644 --- a/main.py +++ b/main.py @@ -92,53 +92,37 @@ def get_system_prompt(): async def get_ai_response(user_input, system_prompt): global chat_history - - # 1. Die neue User-Nachricht dem Gedächtnis hinzufügen chat_history.append({"role": "user", "content": user_input}) - - # 2. Gedächtnis auf die letzten 30 Nachrichten begrenzen chat_history = chat_history[-30:] - ai_msg = "" try: - if AI_PROVIDER == "openai" or AI_PROVIDER == "ollama": + # Kombinierte Logik für OpenAI, Ollama und NVIDIA (alle nutzen das OpenAI SDK) + if AI_PROVIDER in ["openai", "ollama", "nvidia"]: messages = [{"role": "system", "content": system_prompt}] + chat_history - # Sicherstellen, dass die URL für Ollama korrekt endet if AI_PROVIDER == "ollama": url = OLLAMA_BASE_URL if not url.endswith('/v1') and not url.endswith('/v1/'): url = url.rstrip('/') + '/v1' key = "ollama" model_to_use = OLLAMA_MODEL - else: - url = None # Benutzt Standard OpenAI URL + elif AI_PROVIDER == "nvidia": + url = "https://integrate.api.nvidia.com/v1" + key = NVIDIA_API_KEY + model_to_use = NVIDIA_MODEL + else: # openai + url = None key = OPENAI_API_KEY model_to_use = OPENAI_MODEL - client = openai.OpenAI(base_url=url, api_key=key) - response = client.chat.completions.create( + # WICHTIG: Hier .AsyncOpenAI nutzen, da die Funktion async ist + client = openai.AsyncOpenAI(base_url=url, api_key=key) + response = await client.chat.completions.create( model=model_to_use, messages=messages ) ai_msg = response.choices[0].message.content - - elif AI_PROVIDER == "nvidia": - if not NVIDIA_API_KEY: - return "Fehler: NVIDIA_API_KEY fehlt!" - - # NVIDIA nutzt ebenfalls das OpenAI Interface - client = openai.OpenAI( - base_url="https://integrate.api.nvidia.com/v1", - api_key=NVIDIA_API_KEY - ) - messages = [{"role": "system", "content": system_prompt}] + chat_history - response = client.chat.completions.create( - model=NVIDIA_MODEL, - messages=messages - ) - ai_msg = response.choices[0].message.content elif AI_PROVIDER == "google": # Für Google Gemini @@ -382,7 +366,7 @@ async def get_settings(): "provider": AI_PROVIDER, "google_model": GOOGLE_MODEL, "openai_model": OPENAI_MODEL, - "mvidia_model": NVIDIA_MODEL, + "nvidia_model": NVIDIA_MODEL, "ollama_model": OLLAMA_MODEL, "ollama_base_url": OLLAMA_BASE_URL # URL ans Frontend schicken }