Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,144 +3,118 @@
|
|
3 |
import requests
|
4 |
import random
|
5 |
import json
|
6 |
-
from huggingface_hub import InferenceClient
|
7 |
import torch
|
8 |
|
|
|
9 |
class QuasiKI:
|
10 |
def __init__(self, max_feedback=2):
|
11 |
-
self.memory = []
|
12 |
-
self.intentions = []
|
13 |
-
self.quantum_randomness = []
|
14 |
-
self.max_feedback = max_feedback
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
19 |
|
20 |
def fetch_quantum_randomness(self):
|
21 |
-
"""Lädt echte Quanten-Zufallszahlen von einer API."""
|
22 |
try:
|
23 |
response = requests.get("https://qrng.anu.edu.au/API/jsonI.php?length=10&type=uint8")
|
24 |
if response.status_code == 200:
|
25 |
data = response.json()
|
26 |
self.quantum_randomness = data.get("data", [])
|
27 |
-
print(f"Quantum randomness fetched: {self.quantum_randomness}")
|
28 |
else:
|
29 |
-
|
30 |
-
self.quantum_randomness = [random.randint(0, 255) for _ in range(10)]
|
31 |
except Exception as e:
|
32 |
-
print(f"
|
33 |
self.quantum_randomness = [random.randint(0, 255) for _ in range(10)]
|
34 |
|
35 |
def process_input(self, user_input):
|
36 |
-
|
37 |
-
|
|
|
38 |
|
39 |
-
# Wenn der Nutzer eine Suche durchführt
|
40 |
if user_input.lower().startswith("suche nach"):
|
41 |
query = user_input[10:].strip()
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
for i, result in enumerate(results, 1):
|
47 |
-
response += f"{i}. {result['title']} - {result['link']}\n"
|
48 |
-
else:
|
49 |
-
response = "Keine Ergebnisse gefunden oder ein Fehler ist aufgetreten."
|
50 |
-
else:
|
51 |
-
# Generiere Antwort mit Hugging Face Modell
|
52 |
-
response = self.generate_response(user_input)
|
53 |
|
54 |
-
|
55 |
-
self_evaluation = self.self_evaluate_response(response)
|
56 |
-
self.memory.append({"input": user_input, "response": response, "success": None, "self_eval": self_evaluation})
|
57 |
-
return response
|
58 |
|
59 |
def generate_response(self, input_text):
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
"""Bewertet die Antwort der KI selbstständig."""
|
69 |
-
# Dummy-Logik: Bewertungen können angepasst werden
|
70 |
-
if "suche" in response.lower():
|
71 |
-
return "gut"
|
72 |
-
elif len(response.split()) > 5:
|
73 |
-
return "kreativ"
|
74 |
-
else:
|
75 |
-
return "unkreativ"
|
76 |
|
77 |
def collect_feedback(self):
|
78 |
-
"""Sammelt Feedback von mehreren Promptern."""
|
79 |
feedback_scores = {"sehr gut": 2, "gut": 1, "schlecht": -1, "sehr schlecht": -2}
|
80 |
total_feedback = 0
|
81 |
-
|
82 |
for i in range(1, self.max_feedback + 1):
|
83 |
feedback = input(f"Nutzer {i} Feedback (sehr gut, gut, schlecht, sehr schlecht): ").strip().lower()
|
84 |
-
|
85 |
-
|
|
|
|
|
86 |
return total_feedback
|
87 |
|
88 |
-
def reflect(self):
|
89 |
-
"""Reflektiert über vergangene Aktionen."""
|
90 |
-
if not self.memory:
|
91 |
-
print("Ich habe noch nichts gelernt.")
|
92 |
-
else:
|
93 |
-
print("Selbstreflexion:")
|
94 |
-
for entry in self.memory[-5:]: # Nur die letzten 5 Erinnerungen anzeigen
|
95 |
-
print(f"- Eingabe: {entry['input']} -> Antwort: {entry['response']} (Erfolg: {entry.get('success')}, Selbstbewertung: {entry.get('self_eval')})")
|
96 |
-
|
97 |
def learn(self, feedback_score):
|
98 |
-
"""Lernt basierend auf Feedback."""
|
99 |
if not self.memory:
|
100 |
-
print("
|
101 |
return
|
102 |
|
103 |
-
|
104 |
if feedback_score > 0:
|
105 |
-
self.memory[-1]["success"] = True
|
106 |
print("Ich habe gelernt, dass meine Entscheidung erfolgreich war.")
|
107 |
elif feedback_score < 0:
|
108 |
-
self.memory[-1]["success"] = False
|
109 |
print("Ich werde meine Strategie anpassen.")
|
110 |
else:
|
111 |
-
print("
|
112 |
|
113 |
def save_memory(self, filename="memory.json"):
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
|
|
|
|
118 |
|
119 |
def load_memory(self, filename="memory.json"):
|
120 |
-
"""Lädt das Gedächtnis aus einer Datei."""
|
121 |
try:
|
122 |
with open(filename, "r") as f:
|
123 |
self.memory = json.load(f)
|
124 |
-
print("Gedächtnis
|
125 |
except FileNotFoundError:
|
126 |
-
print("
|
127 |
|
128 |
-
# Hauptprogramm
|
129 |
-
if __name__ == "__main__":
|
130 |
-
ai = QuasiKI(max_feedback=3) # Hier Anzahl der Feedback-Prompter einstellen
|
131 |
-
ai.fetch_quantum_randomness() # Starte mit Quanten-Zufallszahlen
|
132 |
|
133 |
-
|
|
|
|
|
134 |
ai.load_memory()
|
|
|
135 |
while True:
|
136 |
user_input = input("\nWas möchtest du sagen? (oder 'exit' zum Beenden): ")
|
137 |
if user_input.lower() == "exit":
|
138 |
-
|
139 |
-
|
140 |
break
|
141 |
|
142 |
response = ai.process_input(user_input)
|
143 |
print(f"AI: {response}")
|
144 |
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
3 |
import requests
|
4 |
import random
|
5 |
import json
|
6 |
+
from huggingface_hub import InferenceClient
|
7 |
import torch
|
8 |
|
9 |
+
|
10 |
class QuasiKI:
|
11 |
def __init__(self, max_feedback=2):
|
12 |
+
self.memory = []
|
13 |
+
self.intentions = []
|
14 |
+
self.quantum_randomness = []
|
15 |
+
self.max_feedback = max_feedback
|
16 |
+
|
17 |
+
try:
|
18 |
+
self.client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
19 |
+
print("Zephyr-7b-beta Modell erfolgreich geladen!")
|
20 |
+
except Exception as e:
|
21 |
+
print(f"Fehler beim Laden des Modells: {e}")
|
22 |
+
self.client = None
|
23 |
|
24 |
def fetch_quantum_randomness(self):
|
|
|
25 |
try:
|
26 |
response = requests.get("https://qrng.anu.edu.au/API/jsonI.php?length=10&type=uint8")
|
27 |
if response.status_code == 200:
|
28 |
data = response.json()
|
29 |
self.quantum_randomness = data.get("data", [])
|
|
|
30 |
else:
|
31 |
+
raise ValueError("Ungültige Antwort der API.")
|
|
|
32 |
except Exception as e:
|
33 |
+
print(f"Fehler beim Abrufen von Quanten-Zufallszahlen: {e}")
|
34 |
self.quantum_randomness = [random.randint(0, 255) for _ in range(10)]
|
35 |
|
36 |
def process_input(self, user_input):
|
37 |
+
user_input = user_input.strip()
|
38 |
+
if not user_input:
|
39 |
+
return "Bitte gib eine gültige Eingabe ein."
|
40 |
|
|
|
41 |
if user_input.lower().startswith("suche nach"):
|
42 |
query = user_input[10:].strip()
|
43 |
+
if not query:
|
44 |
+
return "Bitte gib etwas ein, wonach ich suchen soll."
|
45 |
+
print(f"Suche nach: {query}")
|
46 |
+
return "Die Websuche ist vorübergehend deaktiviert."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
+
return self.generate_response(user_input)
|
|
|
|
|
|
|
49 |
|
50 |
def generate_response(self, input_text):
|
51 |
+
if not self.client:
|
52 |
+
return "Das Modell ist derzeit nicht verfügbar."
|
53 |
+
|
54 |
+
try:
|
55 |
+
response = self.client.chat_completion([{"role": "user", "content": input_text}])
|
56 |
+
return response['choices'][0]['message']['content'].strip()
|
57 |
+
except Exception as e:
|
58 |
+
return f"Fehler beim Generieren der Antwort: {e}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
def collect_feedback(self):
|
|
|
61 |
feedback_scores = {"sehr gut": 2, "gut": 1, "schlecht": -1, "sehr schlecht": -2}
|
62 |
total_feedback = 0
|
|
|
63 |
for i in range(1, self.max_feedback + 1):
|
64 |
feedback = input(f"Nutzer {i} Feedback (sehr gut, gut, schlecht, sehr schlecht): ").strip().lower()
|
65 |
+
if feedback in feedback_scores:
|
66 |
+
total_feedback += feedback_scores[feedback]
|
67 |
+
else:
|
68 |
+
print(f"Ungültiges Feedback: '{feedback}'. Überspringe.")
|
69 |
return total_feedback
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
def learn(self, feedback_score):
|
|
|
72 |
if not self.memory:
|
73 |
+
print("Kein Gedächtnis zum Lernen verfügbar.")
|
74 |
return
|
75 |
|
76 |
+
self.memory[-1]["success"] = feedback_score > 0
|
77 |
if feedback_score > 0:
|
|
|
78 |
print("Ich habe gelernt, dass meine Entscheidung erfolgreich war.")
|
79 |
elif feedback_score < 0:
|
|
|
80 |
print("Ich werde meine Strategie anpassen.")
|
81 |
else:
|
82 |
+
print("Kein spezifisches Lernen nötig.")
|
83 |
|
84 |
def save_memory(self, filename="memory.json"):
|
85 |
+
try:
|
86 |
+
with open(filename, "w") as f:
|
87 |
+
json.dump(self.memory, f)
|
88 |
+
print("Gedächtnis gespeichert.")
|
89 |
+
except Exception as e:
|
90 |
+
print(f"Fehler beim Speichern des Gedächtnisses: {e}")
|
91 |
|
92 |
def load_memory(self, filename="memory.json"):
|
|
|
93 |
try:
|
94 |
with open(filename, "r") as f:
|
95 |
self.memory = json.load(f)
|
96 |
+
print("Gedächtnis geladen.")
|
97 |
except FileNotFoundError:
|
98 |
+
print("Kein gespeichertes Gedächtnis gefunden.")
|
99 |
|
|
|
|
|
|
|
|
|
100 |
|
101 |
+
if __name__ == "__main__":
|
102 |
+
ai = QuasiKI(max_feedback=3)
|
103 |
+
ai.fetch_quantum_randomness()
|
104 |
ai.load_memory()
|
105 |
+
|
106 |
while True:
|
107 |
user_input = input("\nWas möchtest du sagen? (oder 'exit' zum Beenden): ")
|
108 |
if user_input.lower() == "exit":
|
109 |
+
ai.save_memory()
|
110 |
+
print("Bis bald!")
|
111 |
break
|
112 |
|
113 |
response = ai.process_input(user_input)
|
114 |
print(f"AI: {response}")
|
115 |
|
116 |
+
try:
|
117 |
+
feedback_score = ai.collect_feedback()
|
118 |
+
ai.learn(feedback_score)
|
119 |
+
except Exception as e:
|
120 |
+
print(f"Fehler beim Sammeln von Feedback: {e}")
|