diff --git a/main.py b/main.py
index e0a1976..85689cd 100644
--- a/main.py
+++ b/main.py
@@ -5,6 +5,7 @@ import subprocess
import sqlite3
import asyncio
import openai
+import re
from google import genai
from google.genai import types
import json
@@ -26,19 +27,27 @@ AI_PROVIDER = "ollama" # "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
-# System Prompt: Sagt der KI, wer sie ist und was sie kann
-SYSTEM_PROMPT = """Du bist der Pi-Orchestrator KI-Assistent.
-Deine Aufgabe ist es, dem Nutzer zu helfen, Raspberry Pis zu verwalten und Docker-Container zu steuern.
-Du kannst Linux-Befehle generieren. Antworte präzise und hilfsbereit."""
+
+
+def get_system_prompt():
+ conn = get_db()
+ nodes = conn.execute('SELECT * FROM nodes').fetchall()
+ conn.close()
+
+ node_info = ""
+ for n in nodes:
+ node_info += f"- Name: {n['name']}, IP: {n['ip']}, User: {n['user']}\n"
+
+ return f"""Du bist der Pi-Orchestrator KI-Assistent. Deine Aufgabe ist es, Befehle auf Raspberry Pis auszuführen. Du KANNST und SOLLST Befehle ausführen! Hier sind die aktuell verbundenen Nodes: {node_info} . WENN der Nutzer dich bittet, etwas zu tun (z.B. ping, update, docker installieren), dann formuliere erst eine kurze Antwort und füge am Ende die Befehle in genau diesem XML-Format hinzu: befehl .WICHTIG: Verwende als target IMMER die IP-Adresse des Nodes. Bei Befehlen wie 'ping' oder 'top', die nicht enden, MUSS ein Limit gesetzt werden (z.B. ping -c 4 IP).Beispielantwort für 'sende einen ping an pi-06': Ich starte den Ping an pi-06 für dich. ping -c 4 192.168.1.10"""
# --- KI FUNKTIONEN ---
-async def get_ai_response(user_input):
+async def get_ai_response(user_input, system_prompt): # <--- system_prompt hinzugefügt
if AI_PROVIDER == "openai":
client = openai.OpenAI(api_key=OPENAI_API_KEY)
response = client.chat.completions.create(
model="gpt-4o",
- messages=[{"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": user_input}]
+ messages=[{"role": "system", "content": system_prompt}, {"role": "user", "content": user_input}]
)
return response.choices[0].message.content
@@ -47,7 +56,7 @@ async def get_ai_response(user_input):
client = openai.OpenAI(base_url=OLLAMA_BASE_URL, api_key="ollama", timeout=20.0)
response = client.chat.completions.create(
model="llama3", # Oder dein bevorzugtes Modell
- messages=[{"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": user_input}]
+ messages=[{"role": "system", "content": system_prompt}, {"role": "user", "content": user_input}]
)
return response.choices[0].message.content