LejobuildYT commited on
Commit
5f581ea
·
verified ·
1 Parent(s): f4702bf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -83
app.py CHANGED
@@ -3,144 +3,118 @@
3
  import requests
4
  import random
5
  import json
6
- from huggingface_hub import InferenceClient # Importiere den Client für die API
7
  import torch
8
 
 
9
  class QuasiKI:
10
  def __init__(self, max_feedback=2):
11
- self.memory = [] # Gedächtnis für getroffene Entscheidungen
12
- self.intentions = [] # Liste aktueller Ziele
13
- self.quantum_randomness = [] # Speicher für Quanten-Zufallszahlen
14
- self.max_feedback = max_feedback # Anzahl der Prompter für Feedback
15
-
16
- # Hugging Face Client zum Online-Laden des Modells und Tokenizers
17
- self.client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
18
- print("Zephyr-7b-beta Modell erfolgreich über die Hugging Face API geladen!")
 
 
 
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
- print("Failed to fetch quantum randomness. Using fallback randomness.")
30
- self.quantum_randomness = [random.randint(0, 255) for _ in range(10)]
31
  except Exception as e:
32
- print(f"Error fetching quantum randomness: {e}")
33
  self.quantum_randomness = [random.randint(0, 255) for _ in range(10)]
34
 
35
  def process_input(self, user_input):
36
- """Verarbeitet die Eingabe und generiert eine Antwort."""
37
- self.reflect()
 
38
 
39
- # Wenn der Nutzer eine Suche durchführt
40
  if user_input.lower().startswith("suche nach"):
41
  query = user_input[10:].strip()
42
- print(f"Suche im Web nach: {query}")
43
- results = self.search_web(query)
44
- if results:
45
- response = "Hier sind die besten Ergebnisse:\n"
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
- # KI bewertet ihre eigene Antwort
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
- """Generiert eine Antwort basierend auf dem Zephyr-Modell."""
61
- # Anfrage an Hugging Face API zur Generierung einer Antwort
62
- response = self.client.chat_completion([
63
- {"role": "user", "content": input_text}
64
- ])
65
- return response['choices'][0]['message']['content'].strip()
66
-
67
- def self_evaluate_response(self, response):
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
- total_feedback += feedback_scores.get(feedback, 0)
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("Keine vergangenen Aktionen zum Lernen verfügbar.")
101
  return
102
 
103
- # Letzte Aktion aktualisieren
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("Feedback neutral. Kein Lernen nötig.")
112
 
113
  def save_memory(self, filename="memory.json"):
114
- """Speichert das Gedächtnis in einer Datei."""
115
- with open(filename, "w") as f:
116
- json.dump(self.memory, f)
117
- print("Gedächtnis wurde gespeichert.")
 
 
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 wurde geladen.")
125
  except FileNotFoundError:
126
- print("Keine gespeicherte Erinnerung gefunden.")
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
- # Gedächtnis laden, falls vorhanden
 
 
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
- print("Beende das System. Bis bald!")
139
- ai.save_memory() # Gedächtnis speichern vor Beenden
140
  break
141
 
142
  response = ai.process_input(user_input)
143
  print(f"AI: {response}")
144
 
145
- feedback_score = ai.collect_feedback()
146
- ai.learn(feedback_score)
 
 
 
 
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}")