main.py aktualisiert
This commit is contained in:
23
main.py
23
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: <EXECUTE target="IP_ADRESSE">befehl</EXECUTE> .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. <EXECUTE target="192.168.1.10">ping -c 4 192.168.1.10</EXECUTE>"""
|
||||
|
||||
# --- 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user