main.py aktualisiert
This commit is contained in:
31
main.py
31
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)
|
||||
|
||||
Reference in New Issue
Block a user