Spaces:
Paused
Paused
Update AICoreAGIX_with_TB.py
Browse files- AICoreAGIX_with_TB.py +25 -72
AICoreAGIX_with_TB.py
CHANGED
@@ -9,8 +9,7 @@ import numpy as np
|
|
9 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
10 |
from typing import List, Dict, Any
|
11 |
from cryptography.fernet import Fernet
|
12 |
-
from
|
13 |
-
from datetime import datetime, timedelta
|
14 |
import pyttsx3
|
15 |
import os
|
16 |
import hashlib
|
@@ -49,8 +48,7 @@ class AICoreAGIX:
|
|
49 |
self.failsafe_system = AIFailsafeSystem()
|
50 |
self.ethics_core = EthicsCore()
|
51 |
self.autonomy = AutonomyEngine()
|
52 |
-
|
53 |
-
#by Trust & journal
|
54 |
self._codriao_key = self._generate_codriao_key()
|
55 |
self._fernet_key = Fernet.generate_key()
|
56 |
self._encrypted_codriao_key = Fernet(self._fernet_key).encrypt(self._codriao_key.encode())
|
@@ -58,7 +56,6 @@ class AICoreAGIX:
|
|
58 |
self._journal_key = Fernet.generate_key()
|
59 |
self._journal_fernet = Fernet(self._journal_key)
|
60 |
|
61 |
-
# Memory & diagnostics
|
62 |
self._encryption_key = Fernet.generate_key()
|
63 |
secure_memory_module = load_secure_memory_module()
|
64 |
SecureMemorySession = secure_memory_module.SecureMemorySession
|
@@ -66,31 +63,21 @@ class AICoreAGIX:
|
|
66 |
|
67 |
self.speech_engine = pyttsx3.init()
|
68 |
self.health_module = CodriaoHealthModule(ai_core=self)
|
69 |
-
|
70 |
-
# Defensive systems
|
71 |
self.training_memory = []
|
72 |
self.quarantine_engine = QuarantineEngine()
|
73 |
self.anomaly_scorer = AnomalyScorer()
|
74 |
self.lockdown_engaged = False
|
75 |
|
76 |
def _load_config(self, config_path: str) -> dict:
|
77 |
-
|
78 |
-
|
79 |
-
return json.load(file)
|
80 |
-
except FileNotFoundError:
|
81 |
-
logger.error(f"Configuration file not found: {config_path}")
|
82 |
-
raise
|
83 |
-
except json.JSONDecodeError as e:
|
84 |
-
logger.error(f"Error decoding JSON in config file: {config_path}, Error: {e}")
|
85 |
-
raise
|
86 |
|
87 |
def _load_or_generate_id_lock(self):
|
88 |
lock_path = ".codriao_state.lock"
|
89 |
if os.path.exists(lock_path):
|
90 |
with open(lock_path, 'r') as f:
|
91 |
-
|
92 |
-
|
93 |
-
raise RuntimeError("Codriao state integrity check failed. Possible tampering.")
|
94 |
else:
|
95 |
with open(lock_path, 'w') as f:
|
96 |
f.write(self._identity_hash())
|
@@ -122,15 +109,9 @@ class AICoreAGIX:
|
|
122 |
except Exception as e:
|
123 |
logger.error(f"Lockdown component shutdown failed: {e}")
|
124 |
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
"timestamp": timestamp
|
129 |
-
}
|
130 |
-
logger.warning(f"[LOCKDOWN MODE] - Reason: {reason} | Time: {timestamp}")
|
131 |
-
self.failsafe_system.trigger_failsafe("Lockdown initiated", str(lockdown_event))
|
132 |
-
|
133 |
-
return lockdown_event
|
134 |
|
135 |
def request_codriao_key(self, purpose: str) -> str:
|
136 |
allowed = self.ethics_core.evaluate_action(f"Use trust key for: {purpose}")
|
@@ -140,55 +121,40 @@ class AICoreAGIX:
|
|
140 |
"decision": "approved" if allowed else "denied",
|
141 |
"reason": purpose
|
142 |
}
|
143 |
-
|
144 |
-
|
|
|
145 |
|
146 |
if not allowed:
|
147 |
-
logger.warning(f"[Codriao Trust] Use denied. Purpose: {purpose}")
|
148 |
return "[Access Denied by Ethics]"
|
149 |
-
|
150 |
-
logger.info(f"[Codriao Trust] Key used ethically. Purpose: {purpose}")
|
151 |
return Fernet(self._fernet_key).decrypt(self._encrypted_codriao_key).decode()
|
152 |
|
153 |
def learn_from_interaction(self, query: str, response: str, user_feedback: str = None):
|
154 |
-
|
155 |
-
|
|
|
156 |
self.training_memory.pop(0)
|
157 |
-
|
158 |
"query": query,
|
159 |
"response": response,
|
160 |
"feedback": user_feedback,
|
161 |
"timestamp": datetime.utcnow().isoformat()
|
162 |
-
}
|
163 |
-
self.training_memory.append(training_event)
|
164 |
-
logger.info(f"[Codriao Learning] Stored new training sample. Feedback: {user_feedback or 'none'}")
|
165 |
|
166 |
def fine_tune_from_memory(self):
|
167 |
if not self.training_memory:
|
168 |
-
logger.info("[Codriao Training] No training data to learn from.")
|
169 |
return "No training data available."
|
170 |
-
|
171 |
-
|
172 |
-
for record in self.training_memory:
|
173 |
-
if "panic" in record["query"].lower() or "unsafe" in record["response"].lower():
|
174 |
-
learned_insights.append("Avoid panic triggers in response phrasing.")
|
175 |
-
|
176 |
-
logger.info(f"[Codriao Training] Learned {len(learned_insights)} behavioral insights.")
|
177 |
-
return {
|
178 |
-
"insights": learned_insights,
|
179 |
-
"trained_samples": len(self.training_memory)
|
180 |
-
}
|
181 |
|
182 |
def analyze_event_for_anomalies(self, event_type: str, data: dict):
|
183 |
score = self.anomaly_scorer.score_event(event_type, data)
|
184 |
if score["score"] >= 70:
|
185 |
self.quarantine_engine.quarantine(data.get("module", "unknown"), reason=score["notes"])
|
186 |
-
logger.warning(f"[Codriao]: Suspicious activity quarantined. Module: {data.get('module')}")
|
187 |
return score
|
188 |
|
189 |
def review_codriao_journal(self, authorized: bool = False) -> List[Dict[str, str]]:
|
190 |
if not authorized:
|
191 |
-
logger.info("[Codriao Journal] Access attempt denied.")
|
192 |
return [{"message": "Access to journal denied. This log is for Codriao only."}]
|
193 |
entries = []
|
194 |
for encrypted in self._codriao_journal:
|
@@ -206,12 +172,10 @@ class AICoreAGIX:
|
|
206 |
break
|
207 |
except Exception as e:
|
208 |
logger.warning(f"Blockchain logging failed: {e}")
|
209 |
-
if self.autonomy.decide("can_speak"):
|
210 |
-
self._speak_response(response)
|
211 |
|
212 |
-
if self.autonomy.decide("can_learn_from_errors"):
|
213 |
-
self.learn_from_interaction(query, final_response)
|
214 |
def _speak_response(self, response: str):
|
|
|
|
|
215 |
if not self.ethics_core.evaluate_action(f"speak: {response}"):
|
216 |
logger.warning("[Codriao]: Speech output blocked by ethical filter.")
|
217 |
return
|
@@ -220,16 +184,11 @@ class AICoreAGIX:
|
|
220 |
self.speech_engine.runAndWait()
|
221 |
except Exception as e:
|
222 |
logger.error(f"Speech synthesis failed: {e}")
|
223 |
-
|
224 |
-
self._speak_response(response)
|
225 |
-
|
226 |
async def run_tb_diagnostics(self, image_path: str, audio_path: str, user_id: int) -> Dict[str, Any]:
|
227 |
try:
|
228 |
-
|
229 |
-
logger.info(f"TB Diagnostic Result: {result}")
|
230 |
-
return result
|
231 |
except Exception as e:
|
232 |
-
logger.error(f"TB diagnostics failed: {e}")
|
233 |
return {"tb_risk": "ERROR", "error": str(e)}
|
234 |
|
235 |
async def _generate_local_model_response(self, query: str) -> str:
|
@@ -248,7 +207,7 @@ class AICoreAGIX:
|
|
248 |
if result["status"] == "flagged":
|
249 |
logger.warning(result["warning"])
|
250 |
|
251 |
-
if any(
|
252 |
return await self.run_tb_diagnostics("tb_image.jpg", "tb_cough.wav", user_id)
|
253 |
|
254 |
vectorized_query = self._vectorize_query(query)
|
@@ -264,9 +223,7 @@ class AICoreAGIX:
|
|
264 |
final_response = "\n\n".join(responses)
|
265 |
|
266 |
if not self.ethics_core.evaluate_action(final_response):
|
267 |
-
logger.warning("[Codriao Ethics] Action blocked: Does not align with internal ethics.")
|
268 |
return {"error": "Response rejected by ethical framework"}
|
269 |
-
|
270 |
if not self.failsafe_system.verify_response_safety(final_response):
|
271 |
return {"error": "Failsafe triggered due to unsafe response content."}
|
272 |
|
@@ -283,8 +240,4 @@ class AICoreAGIX:
|
|
283 |
}
|
284 |
|
285 |
except Exception as e:
|
286 |
-
|
287 |
-
return {"error": "Processing failed - safety protocols engaged"}
|
288 |
-
|
289 |
-
async def shutdown(self):
|
290 |
-
await self.http_session.close()
|
|
|
9 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
10 |
from typing import List, Dict, Any
|
11 |
from cryptography.fernet import Fernet
|
12 |
+
from datetime import datetime
|
|
|
13 |
import pyttsx3
|
14 |
import os
|
15 |
import hashlib
|
|
|
48 |
self.failsafe_system = AIFailsafeSystem()
|
49 |
self.ethics_core = EthicsCore()
|
50 |
self.autonomy = AutonomyEngine()
|
51 |
+
|
|
|
52 |
self._codriao_key = self._generate_codriao_key()
|
53 |
self._fernet_key = Fernet.generate_key()
|
54 |
self._encrypted_codriao_key = Fernet(self._fernet_key).encrypt(self._codriao_key.encode())
|
|
|
56 |
self._journal_key = Fernet.generate_key()
|
57 |
self._journal_fernet = Fernet(self._journal_key)
|
58 |
|
|
|
59 |
self._encryption_key = Fernet.generate_key()
|
60 |
secure_memory_module = load_secure_memory_module()
|
61 |
SecureMemorySession = secure_memory_module.SecureMemorySession
|
|
|
63 |
|
64 |
self.speech_engine = pyttsx3.init()
|
65 |
self.health_module = CodriaoHealthModule(ai_core=self)
|
|
|
|
|
66 |
self.training_memory = []
|
67 |
self.quarantine_engine = QuarantineEngine()
|
68 |
self.anomaly_scorer = AnomalyScorer()
|
69 |
self.lockdown_engaged = False
|
70 |
|
71 |
def _load_config(self, config_path: str) -> dict:
|
72 |
+
with open(config_path, 'r') as file:
|
73 |
+
return json.load(file)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
def _load_or_generate_id_lock(self):
|
76 |
lock_path = ".codriao_state.lock"
|
77 |
if os.path.exists(lock_path):
|
78 |
with open(lock_path, 'r') as f:
|
79 |
+
if f.read().strip() != self._identity_hash():
|
80 |
+
raise RuntimeError("Codriao state integrity check failed.")
|
|
|
81 |
else:
|
82 |
with open(lock_path, 'w') as f:
|
83 |
f.write(self._identity_hash())
|
|
|
109 |
except Exception as e:
|
110 |
logger.error(f"Lockdown component shutdown failed: {e}")
|
111 |
|
112 |
+
event = {"event": "Lockdown Mode Activated", "reason": reason, "timestamp": timestamp}
|
113 |
+
self.failsafe_system.trigger_failsafe("Lockdown initiated", json.dumps(event))
|
114 |
+
return event
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
|
116 |
def request_codriao_key(self, purpose: str) -> str:
|
117 |
allowed = self.ethics_core.evaluate_action(f"Use trust key for: {purpose}")
|
|
|
121 |
"decision": "approved" if allowed else "denied",
|
122 |
"reason": purpose
|
123 |
}
|
124 |
+
self._codriao_journal.append(
|
125 |
+
self._journal_fernet.encrypt(json.dumps(log_entry).encode())
|
126 |
+
)
|
127 |
|
128 |
if not allowed:
|
|
|
129 |
return "[Access Denied by Ethics]"
|
|
|
|
|
130 |
return Fernet(self._fernet_key).decrypt(self._encrypted_codriao_key).decode()
|
131 |
|
132 |
def learn_from_interaction(self, query: str, response: str, user_feedback: str = None):
|
133 |
+
if not self.autonomy.decide("can_learn_from_errors"):
|
134 |
+
return
|
135 |
+
if len(self.training_memory) >= 1000:
|
136 |
self.training_memory.pop(0)
|
137 |
+
self.training_memory.append({
|
138 |
"query": query,
|
139 |
"response": response,
|
140 |
"feedback": user_feedback,
|
141 |
"timestamp": datetime.utcnow().isoformat()
|
142 |
+
})
|
|
|
|
|
143 |
|
144 |
def fine_tune_from_memory(self):
|
145 |
if not self.training_memory:
|
|
|
146 |
return "No training data available."
|
147 |
+
insights = [r for r in self.training_memory if "panic" in r["query"].lower()]
|
148 |
+
return {"insights": insights, "trained_samples": len(self.training_memory)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
|
150 |
def analyze_event_for_anomalies(self, event_type: str, data: dict):
|
151 |
score = self.anomaly_scorer.score_event(event_type, data)
|
152 |
if score["score"] >= 70:
|
153 |
self.quarantine_engine.quarantine(data.get("module", "unknown"), reason=score["notes"])
|
|
|
154 |
return score
|
155 |
|
156 |
def review_codriao_journal(self, authorized: bool = False) -> List[Dict[str, str]]:
|
157 |
if not authorized:
|
|
|
158 |
return [{"message": "Access to journal denied. This log is for Codriao only."}]
|
159 |
entries = []
|
160 |
for encrypted in self._codriao_journal:
|
|
|
172 |
break
|
173 |
except Exception as e:
|
174 |
logger.warning(f"Blockchain logging failed: {e}")
|
|
|
|
|
175 |
|
|
|
|
|
176 |
def _speak_response(self, response: str):
|
177 |
+
if not self.autonomy.decide("can_speak"):
|
178 |
+
return
|
179 |
if not self.ethics_core.evaluate_action(f"speak: {response}"):
|
180 |
logger.warning("[Codriao]: Speech output blocked by ethical filter.")
|
181 |
return
|
|
|
184 |
self.speech_engine.runAndWait()
|
185 |
except Exception as e:
|
186 |
logger.error(f"Speech synthesis failed: {e}")
|
187 |
+
|
|
|
|
|
188 |
async def run_tb_diagnostics(self, image_path: str, audio_path: str, user_id: int) -> Dict[str, Any]:
|
189 |
try:
|
190 |
+
return await self.health_module.evaluate_tb_risk(image_path, audio_path, user_id)
|
|
|
|
|
191 |
except Exception as e:
|
|
|
192 |
return {"tb_risk": "ERROR", "error": str(e)}
|
193 |
|
194 |
async def _generate_local_model_response(self, query: str) -> str:
|
|
|
207 |
if result["status"] == "flagged":
|
208 |
logger.warning(result["warning"])
|
209 |
|
210 |
+
if any(k in query.lower() for k in ["tb check", "analyze my tb", "run tb diagnostics", "tb test"]):
|
211 |
return await self.run_tb_diagnostics("tb_image.jpg", "tb_cough.wav", user_id)
|
212 |
|
213 |
vectorized_query = self._vectorize_query(query)
|
|
|
223 |
final_response = "\n\n".join(responses)
|
224 |
|
225 |
if not self.ethics_core.evaluate_action(final_response):
|
|
|
226 |
return {"error": "Response rejected by ethical framework"}
|
|
|
227 |
if not self.failsafe_system.verify_response_safety(final_response):
|
228 |
return {"error": "Failsafe triggered due to unsafe response content."}
|
229 |
|
|
|
240 |
}
|
241 |
|
242 |
except Exception as e:
|
243 |
+
return {"error": f"Processing failed - {str(e)}"}
|
|
|
|
|
|
|
|