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." |