From d089955435fc7212d3a14a331803ac8dece8d3b1 Mon Sep 17 00:00:00 2001 From: "info@pi-farm.de" Date: Thu, 5 Mar 2026 10:24:15 +0000 Subject: [PATCH] main.py aktualisiert --- main.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/main.py b/main.py index 385d8b9..c6cb1ff 100644 --- a/main.py +++ b/main.py @@ -13,6 +13,10 @@ from fastapi import FastAPI, WebSocket, BackgroundTasks, Request, Form, WebSocke from fastapi.responses import RedirectResponse from fastapi.templating import Jinja2Templates from fastapi.staticfiles import StaticFiles +from dotenv import load_dotenv + +# Lade Umgebungsvariablen aus der .env Datei +load_dotenv() app = FastAPI() static_path = os.path.join(os.path.dirname(__file__), "static") @@ -23,12 +27,16 @@ SSH_KEY = os.path.expanduser("~/.ssh/id_rsa") DB_PATH = "cluster.db" chat_history = [] -# --- KI KONFIGURATION --- -AI_PROVIDER = "google" # "openai", "google" oder "ollama" -OPENAI_API_KEY = "dein-key" -GOOGLE_API_KEY = "dein-key" -OLLAMA_BASE_URL = "http://x.x.x.x:11434/v1" # IP deines Ollama-Servers +# --- KI KONFIGURATION (Werte aus .env laden) --- +AI_PROVIDER = os.getenv("AI_PROVIDER", "google").lower() +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") +GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY", "") +OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://127.0.0.1:11434/v1") +# Modelle aus .env laden (mit Standardwerten als Fallback) +GOOGLE_MODEL = os.getenv("GOOGLE_MODEL", "gemini-2.5-flash") +OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o") +OLLAMA_MODEL = os.getenv("OLLAMA_MODEL", "llama3") def get_system_prompt(): conn = get_db() @@ -48,7 +56,7 @@ async def get_ai_response(user_input, system_prompt): # 1. Die neue User-Nachricht dem Gedächtnis hinzufügen chat_history.append({"role": "user", "content": user_input}) - # 2. Gedächtnis auf die letzten 10 Nachrichten begrenzen + # 2. Gedächtnis auf die letzten 30 Nachrichten begrenzen chat_history = chat_history[-30:] ai_msg = "" @@ -59,16 +67,20 @@ async def get_ai_response(user_input, system_prompt): messages = [{"role": "system", "content": system_prompt}] + chat_history url = OLLAMA_BASE_URL if AI_PROVIDER == "ollama" else None key = "ollama" if AI_PROVIDER == "ollama" else OPENAI_API_KEY + model_to_use = OLLAMA_MODEL if AI_PROVIDER == "ollama" else OPENAI_MODEL client = openai.OpenAI(base_url=url, api_key=key) response = client.chat.completions.create( - model="gpt-4o" if AI_PROVIDER == "openai" else "llama3", + model=model_to_use, messages=messages ) ai_msg = response.choices[0].message.content elif AI_PROVIDER == "google": # Für Google Gemini + if not GOOGLE_API_KEY: + return "Fehler: GOOGLE_API_KEY fehlt in der .env Datei!" + client = genai.Client(api_key=GOOGLE_API_KEY) # Wir müssen unser Array in das spezielle Google-Format umwandeln @@ -83,7 +95,7 @@ async def get_ai_response(user_input, system_prompt): # Chat MIT dem übersetzten Gedächtnis starten chat = client.chats.create( - model='gemini-2.5-flash', + model=GOOGLE_MODEL, config=types.GenerateContentConfig(system_instruction=system_prompt), history=google_history ) @@ -101,9 +113,6 @@ async def get_ai_response(user_input, system_prompt): return ai_msg -# return "Fehler: Kein KI-Provider konfiguriert." - - # --- DATENBANK INITIALISIERUNG --- def init_db(): conn = sqlite3.connect(DB_PATH)