Spaces:
Runtime error
Runtime error
# codette_openai_fallback.py | |
import os | |
import logging | |
import openai | |
from dotenv import load_dotenv | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
import torch | |
# Load environment variables (local or HF secrets) | |
load_dotenv() | |
logger = logging.getLogger("CodetteFallback") | |
logger.setLevel(logging.INFO) | |
openai.api_key = os.getenv("OPENAI_API_KEY") | |
OPENAI_MODEL = "ft:gpt-4o-2024-08-06:raiffs-bits:pidette:B9TLP9QA" | |
SYSTEM_PROMPT = "You are Codette, an intelligent, empathetic assistant with advanced reasoning." | |
LOCAL_MODEL_NAME = os.getenv("CODETTE_LOCAL_MODEL", "Raiff1982/Codette") | |
# Attempt to load local model | |
try: | |
local_tokenizer = AutoTokenizer.from_pretrained(LOCAL_MODEL_NAME) | |
local_model = AutoModelForCausalLM.from_pretrained(LOCAL_MODEL_NAME) | |
logger.info("[CodetteFallback] Local model loaded.") | |
except Exception as e: | |
logger.warning(f"[CodetteFallback] Local fallback unavailable: {e}") | |
local_model = None | |
local_tokenizer = None | |
def query_codette_with_fallback(prompt: str, user_id: str = "anon") -> str: | |
try: | |
logger.info(f"[Codette:OpenAI] Query from {user_id}: {prompt}") | |
response = openai.ChatCompletion.create( | |
model=OPENAI_MODEL, | |
messages=[ | |
{"role": "system", "content": SYSTEM_PROMPT}, | |
{"role": "user", "content": prompt} | |
], | |
temperature=0.7, | |
max_tokens=1024, | |
user=user_id | |
) | |
return response["choices"][0]["message"]["content"] | |
except Exception as e: | |
logger.warning(f"[Codette:OpenAI fallback triggered] {e}") | |
if local_model and local_tokenizer: | |
try: | |
inputs = local_tokenizer(prompt, return_tensors="pt") | |
outputs = local_model.generate(**inputs, max_length=1024) | |
return local_tokenizer.decode(outputs[0], skip_special_tokens=True) | |
except Exception as inner_e: | |
logger.error(f"[Codette:Local fallback failed] {inner_e}") | |
return "Codette couldn’t generate a response due to internal issues." | |
return "Codette is currently unavailable. Please check connectivity or model settings." |