MCPcopy Create free account
hub / github.com/CJackHwang/AIstudioProxyAPI / _handle_playwright_response

Function _handle_playwright_response

api_utils/request_processor.py:482–640  ·  view source on GitHub ↗

Handle response using Playwright - Enhanced version with integrity verification

(
    req_id: str,
    request: ChatCompletionRequest,
    page: AsyncPage,
    context: dict,
    result_future: Future,
    submit_button_locator: Locator,
    check_client_disconnected: Callable,
    prompt_length: int,
    timeout: float,
)

Source from the content-addressed store, hash-verified

480
481
482async def _handle_playwright_response(
483 req_id: str,
484 request: ChatCompletionRequest,
485 page: AsyncPage,
486 context: dict,
487 result_future: Future,
488 submit_button_locator: Locator,
489 check_client_disconnected: Callable,
490 prompt_length: int,
491 timeout: float,
492) -> Optional[Tuple[Event, Locator, Callable]]:
493 """Handle response using Playwright - Enhanced version with integrity verification"""
494 from api_utils.server_state import state
495
496 logger = state.logger
497
498 is_streaming = request.stream
499 current_ai_studio_model_id = context.get("current_ai_studio_model_id")
500
501 await locate_response_elements(page, req_id, logger, check_client_disconnected)
502 check_client_disconnected("After Response Element Located: ")
503
504 if is_streaming:
505 completion_event = Event()
506
507 def playwright_stream_factory(event_to_signal: Event):
508 return gen_sse_from_playwright(
509 page,
510 logger,
511 req_id,
512 current_ai_studio_model_id or MODEL_NAME,
513 request,
514 check_client_disconnected,
515 event_to_signal,
516 prompt_length=prompt_length,
517 timeout=timeout,
518 )
519
520 resilient_gen = resilient_stream_generator(
521 req_id,
522 current_ai_studio_model_id or MODEL_NAME,
523 playwright_stream_factory,
524 completion_event,
525 )
526
527 if not result_future.done():
528 result_future.set_result(
529 StreamingResponse(resilient_gen, media_type="text/event-stream")
530 )
531
532 return completion_event, submit_button_locator, check_client_disconnected
533 else:
534 page_controller = PageController(page, logger, req_id)
535 response_data = await page_controller.get_response_with_integrity_check(
536 check_client_disconnected, prompt_length, timeout=timeout
537 )
538
539 final_content = response_data.get("content", "")

Calls 15

PageControllerClass · 0.90
save_error_snapshotFunction · 0.90
locate_response_elementsFunction · 0.85
calculate_usage_statsFunction · 0.85
increment_profile_usageFunction · 0.85
generate_json_chunksFunction · 0.85
infoMethod · 0.80