| | import os |
| | import json |
| | import logging |
| | import openai |
| | import pyttsx3 |
| | import asyncio |
| | from jwt import encode, decode, ExpiredSignatureError |
| | from datetime import datetime, timedelta |
| | from dotenv import load_dotenv |
| |
|
| | |
| | load_dotenv() |
| |
|
| | openai.api_key = os.getenv("OPENAI_API_KEY") |
| |
|
| | class AICoreFinalRecursive: |
| | def __init__(self, config_path="config_updated.json"): |
| | self.config = self._load_config(config_path) |
| | self.jwt_secret = os.environ.get("JWT_SECRET", "fallback_secret") |
| | self.speech_engine = pyttsx3.init() |
| | |
| |
|
| | def _load_config(self, config_path): |
| | if os.path.exists(config_path): |
| | with open(config_path, 'r') as file: |
| | return json.load(file) |
| | return {} |
| |
|
| | async def generate_response(self, query: str, user_id: int) -> dict: |
| | try: |
| | system_prompt = self.config.get("system_prompt", |
| | "You are Codette, an advanced multi-perspective AI assistant.") |
| | |
| | messages = [ |
| | {"role": "system", "content": system_prompt}, |
| | {"role": "user", "content": query} |
| | ] |
| | |
| | loop = asyncio.get_event_loop() |
| | response_obj = await loop.run_in_executor( |
| | None, |
| | lambda: openai.chat.completions.create( |
| | model=self.config.get("model_name", |
| | "ft:gpt-4.1-2025-04-14:raiffs-bits:codette-final:BOZDRHpW:ckpt-step-10"), |
| | messages=messages, |
| | temperature=0.7, |
| | max_tokens=512, |
| | ) |
| | ) |
| | resp = response_obj.choices[0].message.content.strip() |
| |
|
| | |
| | jwt_token = self.encode_jwt({"user_id": user_id, "exp": datetime.utcnow() + timedelta(minutes=5)}) |
| | |
| | |
| | self._speak_response(resp) |
| |
|
| | return { |
| | "response": resp, |
| | "jwt_token": jwt_token, |
| | "context_enhanced": True, |
| | "security_status": "Fully Secure" |
| | } |
| | except Exception as e: |
| | logging.error(f"Response generation failed: {e}") |
| | return {"error": f"Processing failed - {e}"} |
| |
|
| | def encode_jwt(self, payload): |
| | return encode(payload, self.jwt_secret, algorithm="HS256") |
| |
|
| | def decode_jwt(self, token): |
| | try: |
| | decoded = decode(token, self.jwt_secret, algorithms=["HS256"]) |
| | return decoded |
| | except ExpiredSignatureError: |
| | return None |
| |
|
| | def _speak_response(self, response: str): |
| | try: |
| | self.speech_engine.say(response) |
| | self.speech_engine.runAndWait() |
| | except Exception as e: |
| | logging.warning(f"Voice synth failed: {e}") |
| |
|