|
|
|
|
|
""" |
|
|
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() |
|
|
|