main.py aktualisiert
This commit is contained in:
23
main.py
23
main.py
@@ -5,6 +5,7 @@ import subprocess
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import asyncio
|
import asyncio
|
||||||
import openai
|
import openai
|
||||||
|
import re
|
||||||
from google import genai
|
from google import genai
|
||||||
from google.genai import types
|
from google.genai import types
|
||||||
import json
|
import json
|
||||||
@@ -26,19 +27,27 @@ AI_PROVIDER = "ollama" # "openai", "google" oder "ollama"
|
|||||||
OPENAI_API_KEY = "dein-key"
|
OPENAI_API_KEY = "dein-key"
|
||||||
GOOGLE_API_KEY = "dein-key"
|
GOOGLE_API_KEY = "dein-key"
|
||||||
OLLAMA_BASE_URL = "http://x.x.x.x:11434/v1" # IP deines Ollama-Servers
|
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.
|
def get_system_prompt():
|
||||||
Du kannst Linux-Befehle generieren. Antworte präzise und hilfsbereit."""
|
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 ---
|
# --- 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":
|
if AI_PROVIDER == "openai":
|
||||||
client = openai.OpenAI(api_key=OPENAI_API_KEY)
|
client = openai.OpenAI(api_key=OPENAI_API_KEY)
|
||||||
response = client.chat.completions.create(
|
response = client.chat.completions.create(
|
||||||
model="gpt-4o",
|
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
|
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)
|
client = openai.OpenAI(base_url=OLLAMA_BASE_URL, api_key="ollama", timeout=20.0)
|
||||||
response = client.chat.completions.create(
|
response = client.chat.completions.create(
|
||||||
model="llama3", # Oder dein bevorzugtes Modell
|
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
|
return response.choices[0].message.content
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user