| |
| """ |
| SPARKNET Demo Launcher |
| |
| Cross-platform launcher for the Streamlit demo. |
| |
| Usage: |
| python run_demo.py [--port PORT] |
| """ |
|
|
| import subprocess |
| import sys |
| import os |
| from pathlib import Path |
|
|
| def check_dependencies(): |
| """Check and install required dependencies.""" |
| print("π¦ Checking dependencies...") |
|
|
| try: |
| import streamlit |
| print(f" β
Streamlit {streamlit.__version__}") |
| except ImportError: |
| print(" π₯ Installing Streamlit...") |
| subprocess.run([sys.executable, "-m", "pip", "install", "streamlit"], check=True) |
|
|
| try: |
| import pandas |
| print(f" β
Pandas {pandas.__version__}") |
| except ImportError: |
| print(" π₯ Installing Pandas...") |
| subprocess.run([sys.executable, "-m", "pip", "install", "pandas"], check=True) |
|
|
| try: |
| import httpx |
| print(f" β
httpx {httpx.__version__}") |
| except ImportError: |
| print(" π₯ Installing httpx...") |
| subprocess.run([sys.executable, "-m", "pip", "install", "httpx"], check=True) |
|
|
|
|
| def check_ollama(): |
| """Check if Ollama is running.""" |
| print("\nπ Checking Ollama status...") |
|
|
| try: |
| import httpx |
| with httpx.Client(timeout=2.0) as client: |
| response = client.get("http://localhost:11434/api/tags") |
| if response.status_code == 200: |
| data = response.json() |
| models = len(data.get("models", [])) |
| print(f" β
Ollama is running ({models} models)") |
| return True |
| except Exception: |
| pass |
|
|
| print(" β οΈ Ollama not running (demo will use simulated responses)") |
| print(" Start with: ollama serve") |
| return False |
|
|
|
|
| def main(): |
| """Main entry point.""" |
| import argparse |
|
|
| parser = argparse.ArgumentParser(description="SPARKNET Demo Launcher") |
| parser.add_argument("--port", type=int, default=8501, help="Port to run on") |
| args = parser.parse_args() |
|
|
| print("=" * 50) |
| print("π₯ SPARKNET Demo Launcher") |
| print("=" * 50) |
| print() |
|
|
| |
| project_root = Path(__file__).parent |
| demo_app = project_root / "demo" / "app.py" |
|
|
| if not demo_app.exists(): |
| print(f"β Demo app not found: {demo_app}") |
| sys.exit(1) |
|
|
| |
| check_dependencies() |
|
|
| |
| check_ollama() |
|
|
| |
| print() |
| print(f"π Launching SPARKNET Demo on port {args.port}...") |
| print(f" URL: http://localhost:{args.port}") |
| print() |
| print("Press Ctrl+C to stop") |
| print("=" * 50) |
| print() |
|
|
| |
| os.chdir(project_root) |
| subprocess.run([ |
| sys.executable, "-m", "streamlit", "run", |
| str(demo_app), |
| "--server.port", str(args.port), |
| "--server.headless", "true", |
| ]) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|