Anthony Liang commited on
Commit
5b0b6a3
·
1 Parent(s): 8dba63e
Files changed (1) hide show
  1. app.py +36 -13
app.py CHANGED
@@ -71,29 +71,54 @@ PREDEFINED_DATASETS = [
71
  # Global server state
72
  _server_state = {
73
  "server_url": None,
74
- "base_url": "http://40.119.56.66", # Default base URL
75
  }
76
 
77
 
78
  def discover_available_models(
79
  base_url: str = "http://40.119.56.66", port_range: tuple = (8000, 8010)
80
  ) -> List[Tuple[str, str]]:
81
- """Discover available models by pinging ports in the specified range.
 
 
 
82
 
83
  Returns:
84
  List of tuples: [(server_url, model_name), ...]
85
  """
 
 
 
 
86
  available_models = []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  start_port, end_port = port_range
88
-
89
  for port in range(start_port, end_port + 1):
90
- server_url = f"{base_url.rstrip('/')}:{port}"
91
  try:
92
- # Check health endpoint
93
  health_url = f"{server_url}/health"
94
  health_response = requests.get(health_url, timeout=2.0)
95
  if health_response.status_code == 200:
96
- # Try to get model info for model name
97
  try:
98
  model_info_url = f"{server_url}/model_info"
99
  model_info_response = requests.get(model_info_url, timeout=2.0)
@@ -102,13 +127,10 @@ def discover_available_models(
102
  model_name = model_info_data.get("model_path", f"Model on port {port}")
103
  available_models.append((server_url, model_name))
104
  else:
105
- # Health check passed but no model info, use port as name
106
  available_models.append((server_url, f"Model on port {port}"))
107
- except:
108
- # Health check passed but couldn't get model info
109
  available_models.append((server_url, f"Model on port {port}"))
110
  except requests.exceptions.RequestException:
111
- # Port not available, continue
112
  continue
113
 
114
  return available_models
@@ -676,9 +698,10 @@ with demo:
676
 
677
  base_url_input = gr.Textbox(
678
  label="Base Server URL",
679
- placeholder="http://40.119.56.66",
680
- value="http://40.119.56.66",
681
  interactive=True,
 
682
  )
683
 
684
  discover_btn = gr.Button("🔍 Discover Models", variant="primary", size="lg")
@@ -688,7 +711,7 @@ with demo:
688
  choices=[],
689
  value=None,
690
  interactive=True,
691
- info="Models will be discovered on ports 8000-8010",
692
  )
693
 
694
  server_status = gr.Markdown("Click 'Discover Models' to find available models")
 
71
  # Global server state
72
  _server_state = {
73
  "server_url": None,
74
+ "base_url": "https://robometer.a.pinggy.link", # Default: Pinggy tunnel or use http://HOST for port scan
75
  }
76
 
77
 
78
  def discover_available_models(
79
  base_url: str = "http://40.119.56.66", port_range: tuple = (8000, 8010)
80
  ) -> List[Tuple[str, str]]:
81
+ """Discover available models by pinging the base URL as-is, or ports in the specified range.
82
+
83
+ If base_url is a full URL (e.g. https://robometer.a.pinggy.link), it is tried as-is first.
84
+ Otherwise we try base_url:8000, base_url:8001, ... up to end_port.
85
 
86
  Returns:
87
  List of tuples: [(server_url, model_name), ...]
88
  """
89
+ base_url = base_url.strip().rstrip("/")
90
+ if not base_url:
91
+ return []
92
+
93
  available_models = []
94
+ # Try base_url as-is first (for Pinggy/tunnel URLs like https://robometer.a.pinggy.link)
95
+ try:
96
+ health_url = f"{base_url}/health"
97
+ health_response = requests.get(health_url, timeout=5.0)
98
+ if health_response.status_code == 200:
99
+ try:
100
+ model_info_url = f"{base_url}/model_info"
101
+ model_info_response = requests.get(model_info_url, timeout=5.0)
102
+ if model_info_response.status_code == 200:
103
+ model_info_data = model_info_response.json()
104
+ model_name = model_info_data.get("model_path", base_url)
105
+ available_models.append((base_url, model_name))
106
+ else:
107
+ available_models.append((base_url, base_url))
108
+ except Exception:
109
+ available_models.append((base_url, base_url))
110
+ return available_models
111
+ except requests.exceptions.RequestException:
112
+ pass
113
+
114
+ # Port scan: base_url is a host (e.g. http://40.119.56.66), try ports in range
115
  start_port, end_port = port_range
 
116
  for port in range(start_port, end_port + 1):
117
+ server_url = f"{base_url}:{port}"
118
  try:
 
119
  health_url = f"{server_url}/health"
120
  health_response = requests.get(health_url, timeout=2.0)
121
  if health_response.status_code == 200:
 
122
  try:
123
  model_info_url = f"{server_url}/model_info"
124
  model_info_response = requests.get(model_info_url, timeout=2.0)
 
127
  model_name = model_info_data.get("model_path", f"Model on port {port}")
128
  available_models.append((server_url, model_name))
129
  else:
 
130
  available_models.append((server_url, f"Model on port {port}"))
131
+ except Exception:
 
132
  available_models.append((server_url, f"Model on port {port}"))
133
  except requests.exceptions.RequestException:
 
134
  continue
135
 
136
  return available_models
 
698
 
699
  base_url_input = gr.Textbox(
700
  label="Base Server URL",
701
+ placeholder="https://robometer.a.pinggy.link or http://40.119.56.66",
702
+ value="https://robometer.a.pinggy.link",
703
  interactive=True,
704
+ info="Full URL (e.g. Pinggy tunnel) or host; discovery tries URL as-is first, then ports 8000-8010",
705
  )
706
 
707
  discover_btn = gr.Button("🔍 Discover Models", variant="primary", size="lg")
 
711
  choices=[],
712
  value=None,
713
  interactive=True,
714
+ info="Click Discover to find the eval server (single URL or ports 8000-8010)",
715
  )
716
 
717
  server_status = gr.Markdown("Click 'Discover Models' to find available models")