| import os | |
| from supabase import create_client, Client | |
| from langchain_openai import ChatOpenAI | |
| # --- Environment Variables --- | |
| VERIFY_TOKEN = os.getenv("VERIFY_TOKEN", "") | |
| PHONE_NUMBER_ID = os.getenv("PHONE_NUMBER_ID", "") | |
| WHATSAPP_API_TOKEN = os.getenv("WHATSAPP_API_TOKEN", "") | |
| OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") | |
| SUPABASE_URL = os.getenv("SUPABASE_URL", "") | |
| SUPABASE_KEY = os.getenv("SUPABASE_KEY", "") | |
| # --- Supabase Client Setup --- | |
| supabase: Client = None | |
| if SUPABASE_URL and SUPABASE_KEY and SUPABASE_URL.strip() and SUPABASE_KEY.strip(): | |
| try: | |
| supabase = create_client(SUPABASE_URL, SUPABASE_KEY) | |
| print("Supabase client initialized successfully") | |
| except Exception as e: | |
| print(f"Warning: Failed to initialize Supabase client: {e}") | |
| supabase = None | |
| else: | |
| print("Warning: Supabase credentials not set. Database functionality will be limited.") | |
| # --- OpenAI Client Setup --- | |
| llm = ChatOpenAI(openai_api_key=OPENAI_API_KEY, model="gpt-4o-mini") | |
| # Lightweight LLM for simple extraction tasks (persona, classification, etc.) | |
| llm_light = ChatOpenAI( | |
| openai_api_key=OPENAI_API_KEY, | |
| model="gpt-4.1-nano", | |
| temperature=0.1, # Lower temperature for more consistent extraction | |
| max_tokens=200 # Lower token limit for simple tasks | |
| ) | |
| # Initialize LLM only if API key is available | |
| if not OPENAI_API_KEY: | |
| print("Warning: OPENAI_API_KEY not set. AI functionality will be limited.") |