daqc commited on
Commit
9ec6c08
·
verified ·
1 Parent(s): 54223c5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -12
app.py CHANGED
@@ -146,12 +146,25 @@ def create_model_with_api_key(hf_token: str, model_id: str = None) -> InferenceC
146
  if not model_id:
147
  model_id = "Qwen/Qwen2.5-Coder-32B-Instruct"
148
 
149
- return InferenceClientModel(
150
- model_id=model_id,
151
- hf_token=hf_token,
152
- temperature=0.1,
153
- max_tokens=4000,
154
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
  def create_tools_with_model(model: InferenceClientModel):
157
  """Create tools with the provided model."""
@@ -224,16 +237,69 @@ def get_user_session(request: gr.Request) -> str:
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."""
@@ -318,12 +384,14 @@ class GradioUI:
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,12 +535,14 @@ User Query: """
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():
 
146
  if not model_id:
147
  model_id = "Qwen/Qwen2.5-Coder-32B-Instruct"
148
 
149
+ # Store original token
150
+ original_token = os.environ.get("HF_TOKEN")
151
+
152
+ try:
153
+ # Set the token in environment for this session
154
+ os.environ["HF_TOKEN"] = hf_token
155
+
156
+ # Create model without explicit token parameter
157
+ model = InferenceClientModel(
158
+ model_id=model_id,
159
+ )
160
+
161
+ return model
162
+ finally:
163
+ # Restore original token
164
+ if original_token:
165
+ os.environ["HF_TOKEN"] = original_token
166
+ elif "HF_TOKEN" in os.environ:
167
+ del os.environ["HF_TOKEN"]
168
 
169
  def create_tools_with_model(model: InferenceClientModel):
170
  """Create tools with the provided model."""
 
237
  def get_stable_session_id(request: gr.Request) -> str:
238
  """Get a stable session ID that persists across requests."""
239
  if not request:
240
+ logger.warning("No request object, using random session ID")
241
+ return f"random_{str(uuid.uuid4())[:8]}"
242
 
243
  # Use a combination of client info for more stable sessions
244
  client_ip = getattr(request.client, 'host', 'unknown') if request.client else 'unknown'
245
  user_agent = request.headers.get("user-agent", "unknown")
246
 
247
+ # Add additional uniqueness factors
248
+ accept_language = request.headers.get("accept-language", "unknown")
249
+ accept_encoding = request.headers.get("accept-encoding", "unknown")
250
+
251
+ # Create a more unique session ID
252
  import hashlib
253
+ session_data = f"{client_ip}:{user_agent}:{accept_language}:{accept_encoding}"
254
+ session_hash = hashlib.md5(session_data.encode()).hexdigest()
255
+ session_id = f"user_{session_hash[:16]}"
256
+
257
+ logger.info(f"Generated session ID: {session_id}")
258
+ logger.info(f"Session data: {session_data}")
259
+
260
+ return session_id
261
+
262
+ def get_unique_session_id(request: gr.Request) -> str:
263
+ """Get a truly unique session ID for each request."""
264
+ if not request:
265
+ return f"unique_{str(uuid.uuid4())[:8]}"
266
+
267
+ # Use timestamp + client info for uniqueness
268
+ import time
269
+ timestamp = int(time.time() * 1000) # milliseconds
270
+ client_ip = getattr(request.client, 'host', 'unknown') if request.client else 'unknown'
271
+ user_agent = request.headers.get("user-agent", "unknown")
272
+
273
+ # Create a unique session ID
274
+ import hashlib
275
+ session_data = f"{timestamp}:{client_ip}:{user_agent}"
276
+ session_hash = hashlib.md5(session_data.encode()).hexdigest()
277
+ session_id = f"unique_{session_hash[:16]}"
278
+
279
+ logger.info(f"Generated unique session ID: {session_id}")
280
+
281
+ return session_id
282
+
283
+ def get_persistent_session_id(request: gr.Request) -> str:
284
+ """Get a persistent session ID that stays the same for the same client."""
285
+ if not request:
286
+ return f"persistent_{str(uuid.uuid4())[:8]}"
287
+
288
+ # Use only client info for persistence (no timestamp)
289
+ client_ip = getattr(request.client, 'host', 'unknown') if request.client else 'unknown'
290
+ user_agent = request.headers.get("user-agent", "unknown")
291
+ accept_language = request.headers.get("accept-language", "unknown")
292
+
293
+ # Create a persistent session ID
294
+ import hashlib
295
+ session_data = f"{client_ip}:{user_agent}:{accept_language}"
296
+ session_hash = hashlib.md5(session_data.encode()).hexdigest()
297
+ session_id = f"persistent_{session_hash[:16]}"
298
+
299
+ logger.info(f"Generated persistent session ID: {session_id}")
300
+ logger.info(f"Session data: {session_data}")
301
+
302
+ return session_id
303
 
304
  def get_session_data(session_id: str) -> dict:
305
  """Get session data for a specific user."""
 
384
  def interact_with_agent(self, prompt, messages, request: gr.Request):
385
  """Handle agent interaction with proper session management."""
386
  # Get unique session ID for this user
387
+ session_id = get_persistent_session_id(request)
388
  session_data = get_session_data(session_id)
389
 
390
  logger.info(f"Processing request for session {session_id}...")
391
  logger.info(f"Request client: {request.client.host if request and request.client else 'unknown'}")
392
  logger.info(f"Request user-agent: {request.headers.get('user-agent', 'unknown')[:50] if request else 'unknown'}")
393
+ logger.info(f"All active sessions: {list(user_sessions.keys())}")
394
+ logger.info(f"Session data for {session_id}: {session_data}")
395
 
396
  # Check if we have a valid agent for this session
397
  if not session_data.get("agent"):
 
535
  def setup_api_key(self, api_key: str, max_steps: int, request: gr.Request) -> str:
536
  """Setup API key for the user's session."""
537
  # Get unique session ID for this user
538
+ session_id = get_persistent_session_id(request)
539
  session_data = get_session_data(session_id)
540
 
541
  logger.info(f"Setting up API key for session {session_id}...")
542
  logger.info(f"Setup request client: {request.client.host if request and request.client else 'unknown'}")
543
  logger.info(f"Setup request user-agent: {request.headers.get('user-agent', 'unknown')[:50] if request else 'unknown'}")
544
+ logger.info(f"All active sessions before setup: {list(user_sessions.keys())}")
545
+ logger.info(f"Session data before setup: {session_data}")
546
 
547
  # Check if API key is provided from interface
548
  if api_key and api_key.strip():