From d6c175db00e1acaab2b6faffea619ee45c5fca36 Mon Sep 17 00:00:00 2001 From: "info@pi-farm.de" Date: Wed, 4 Mar 2026 16:52:59 +0000 Subject: [PATCH] main.py aktualisiert --- main.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) 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