daqc commited on
Commit
54223c5
·
verified ·
1 Parent(s): 1239b2c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -5
app.py CHANGED
@@ -204,15 +204,37 @@ document_inspection_tool = None
204
  def get_user_session(request: gr.Request) -> str:
205
  """Get or create a unique session ID for the user."""
206
  if not request:
 
207
  return str(uuid.uuid4())
208
 
209
  # Try to get session from headers or create new one
210
  session_id = request.headers.get("x-session-id")
211
  if not session_id:
212
- session_id = str(uuid.uuid4())
 
 
 
 
 
 
 
213
 
214
  return session_id
215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  def get_session_data(session_id: str) -> dict:
217
  """Get session data for a specific user."""
218
  with session_lock:
@@ -296,10 +318,12 @@ class GradioUI:
296
  def interact_with_agent(self, prompt, messages, request: gr.Request):
297
  """Handle agent interaction with proper session management."""
298
  # Get unique session ID for this user
299
- session_id = get_user_session(request)
300
  session_data = get_session_data(session_id)
301
 
302
- logger.info(f"Processing request for session {session_id[:8]}...")
 
 
303
 
304
  # Check if we have a valid agent for this session
305
  if not session_data.get("agent"):
@@ -443,10 +467,12 @@ User Query: """
443
  def setup_api_key(self, api_key: str, max_steps: int, request: gr.Request) -> str:
444
  """Setup API key for the user's session."""
445
  # Get unique session ID for this user
446
- session_id = get_user_session(request)
447
  session_data = get_session_data(session_id)
448
 
449
- logger.info(f"Setting up API key for session {session_id[:8]}...")
 
 
450
 
451
  # Check if API key is provided from interface
452
  if api_key and api_key.strip():
 
204
  def get_user_session(request: gr.Request) -> str:
205
  """Get or create a unique session ID for the user."""
206
  if not request:
207
+ logger.warning("No request object, using random session ID")
208
  return str(uuid.uuid4())
209
 
210
  # Try to get session from headers or create new one
211
  session_id = request.headers.get("x-session-id")
212
  if not session_id:
213
+ # Use client IP and user agent as a more stable identifier
214
+ client_ip = request.client.host if hasattr(request, 'client') and request.client else "unknown"
215
+ user_agent = request.headers.get("user-agent", "unknown")
216
+ # Create a hash-based session ID for more stability
217
+ import hashlib
218
+ session_hash = hashlib.md5(f"{client_ip}:{user_agent}".encode()).hexdigest()
219
+ session_id = f"session_{session_hash[:8]}"
220
+ logger.info(f"Created stable session ID {session_id} for client {client_ip}")
221
 
222
  return session_id
223
 
224
+ def get_stable_session_id(request: gr.Request) -> str:
225
+ """Get a stable session ID that persists across requests."""
226
+ if not request:
227
+ return "default_session"
228
+
229
+ # Use a combination of client info for more stable sessions
230
+ client_ip = getattr(request.client, 'host', 'unknown') if request.client else 'unknown'
231
+ user_agent = request.headers.get("user-agent", "unknown")
232
+
233
+ # Create a stable session ID
234
+ import hashlib
235
+ session_hash = hashlib.md5(f"{client_ip}:{user_agent}".encode()).hexdigest()
236
+ return f"user_{session_hash[:12]}"
237
+
238
  def get_session_data(session_id: str) -> dict:
239
  """Get session data for a specific user."""
240
  with session_lock:
 
318
  def interact_with_agent(self, prompt, messages, request: gr.Request):
319
  """Handle agent interaction with proper session management."""
320
  # Get unique session ID for this user
321
+ session_id = get_stable_session_id(request)
322
  session_data = get_session_data(session_id)
323
 
324
+ logger.info(f"Processing request for session {session_id}...")
325
+ logger.info(f"Request client: {request.client.host if request and request.client else 'unknown'}")
326
+ logger.info(f"Request user-agent: {request.headers.get('user-agent', 'unknown')[:50] if request else 'unknown'}")
327
 
328
  # Check if we have a valid agent for this session
329
  if not session_data.get("agent"):
 
467
  def setup_api_key(self, api_key: str, max_steps: int, request: gr.Request) -> str:
468
  """Setup API key for the user's session."""
469
  # Get unique session ID for this user
470
+ session_id = get_stable_session_id(request)
471
  session_data = get_session_data(session_id)
472
 
473
+ logger.info(f"Setting up API key for session {session_id}...")
474
+ logger.info(f"Setup request client: {request.client.host if request and request.client else 'unknown'}")
475
+ logger.info(f"Setup request user-agent: {request.headers.get('user-agent', 'unknown')[:50] if request else 'unknown'}")
476
 
477
  # Check if API key is provided from interface
478
  if api_key and api_key.strip():