Spaces:
Sleeping
Sleeping
""" | |
RoutePilot - GNN-LLM Intelligent Selection System | |
Hugging Face Spaces Entry Point | |
This is the main entry point for the Hugging Face Spaces deployment. | |
It imports the necessary components from the existing application and | |
sets up the Gradio interface for deployment. | |
""" | |
import os | |
import sys | |
import gradio as gr | |
# Add the current directory to Python path for imports | |
sys.path.append(os.path.dirname(__file__)) | |
# Import the main application components | |
from demo import create_interface, initialize_nvidia_client, test_nvidia_api_connection | |
# Set up environment variables for Hugging Face Spaces | |
def setup_environment(): | |
"""Set up environment variables for Hugging Face Spaces deployment""" | |
# Check if we're running on Hugging Face Spaces | |
if os.getenv("SPACE_ID"): | |
print("π Running on Hugging Face Spaces") | |
# Check for NVIDIA API key | |
api_key = os.getenv("NVIDIA_API_KEY") | |
if not api_key: | |
print("β οΈ NVIDIA_API_KEY not set in Space secrets.") | |
print(" Please set NVIDIA_API_KEY in the Space Repository Secrets.") | |
print(" Some features may be limited without API access.") | |
else: | |
print("β NVIDIA_API_KEY found in Space secrets") | |
print(f" Key length: {len(api_key)} characters") | |
print(f" Key starts with: {api_key[:8]}...") | |
print(f" Key ends with: ...{api_key[-4:]}") | |
print(f" Key is all uppercase: {'Yes' if api_key.isupper() else 'No'}") | |
# Check for common API key patterns | |
if api_key.startswith('nvapi-'): | |
print(" β Key format appears correct (starts with 'nvapi-')") | |
elif api_key.startswith('nv-'): | |
print(" β Key format appears correct (starts with 'nv-')") | |
else: | |
print(" β οΈ Key format may be incorrect (should start with 'nvapi-' or 'nv-')") | |
# Set CUDA device for Spaces (usually limited resources) | |
os.environ["CUDA_VISIBLE_DEVICES"] = "0" | |
# Set memory optimization flags | |
os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:128" | |
else: | |
print("π Running locally") | |
# Check for local .env file | |
api_key = os.getenv("NVIDIA_API_KEY") | |
if not api_key: | |
print("βΉοΈ NVIDIA_API_KEY not found. For local development, create a .env file") | |
print(" or set the environment variable manually.") | |
def main(): | |
"""Main function to launch the application""" | |
# Set up environment | |
setup_environment() | |
# Reinitialize NVIDIA client after environment setup | |
print("π Reinitializing NVIDIA API client...") | |
# Import demo module and reinitialize client | |
import demo | |
print(f"π Initial client status: {'β Available' if demo.client is not None else 'β None'}") | |
print(f"π API key in environment: {'β Present' if os.getenv('NVIDIA_API_KEY') else 'β Missing'}") | |
if demo.client is None and os.getenv("NVIDIA_API_KEY"): | |
print("π Attempting to reinitialize client with environment variables...") | |
# Reinitialize the client and update the module variable | |
demo.client = initialize_nvidia_client() | |
print(f"π Client reinitialized: {'β Success' if demo.client is not None else 'β Failed'}") | |
elif demo.client is not None: | |
print("β Client already initialized") | |
else: | |
print("β No API key available for client initialization") | |
# Final client status check | |
print(f"π Final client status: {'β Available' if demo.client is not None else 'β None'}") | |
# Test API connection | |
if os.getenv("NVIDIA_API_KEY") and demo.client is not None: | |
print("π§ͺ Testing NVIDIA API connection...") | |
test_nvidia_api_connection() | |
# Create the Gradio interface | |
print("π― Creating RoutePilot interface...") | |
demo_interface = create_interface() | |
# Launch the application | |
# For Hugging Face Spaces, we don't need to specify server_name and port | |
# The platform handles this automatically | |
demo_interface.launch( | |
show_error=True, | |
debug=False, # Set to False for production | |
show_api=False | |
) | |
if __name__ == "__main__": | |
main() |