Encapsulates all operations for interacting with the AI Studio page.
| 44 | |
| 45 | |
| 46 | class PageController( |
| 47 | ParameterController, |
| 48 | InputController, |
| 49 | ChatController, |
| 50 | ResponseController, |
| 51 | ThinkingController, |
| 52 | FunctionCallingController, |
| 53 | BaseController, |
| 54 | ): |
| 55 | """Encapsulates all operations for interacting with the AI Studio page.""" |
| 56 | |
| 57 | def __init__(self, page: AsyncPage, logger, req_id: str): |
| 58 | self.page = page |
| 59 | self.logger = logger |
| 60 | self.req_id = req_id |
| 61 | |
| 62 | async def _check_disconnect(self, check_client_disconnected: Callable, stage: str): |
| 63 | if check_client_disconnected(stage): |
| 64 | raise ClientDisconnectedError( |
| 65 | f"[{self.req_id}] Client disconnected at stage: {stage}" |
| 66 | ) |
| 67 | |
| 68 | async def adjust_parameters( |
| 69 | self, |
| 70 | request_params: Dict[str, Any], |
| 71 | page_params_cache: Dict[str, Any], |
| 72 | params_cache_lock: asyncio.Lock, |
| 73 | model_id_to_use: Optional[str], |
| 74 | parsed_model_list: List[Dict[str, Any]], |
| 75 | check_client_disconnected: Callable, |
| 76 | is_streaming: bool = True, |
| 77 | ): |
| 78 | self.logger.info(f"[{self.req_id}] Adjusting parameters...") |
| 79 | await self._check_disconnect( |
| 80 | check_client_disconnected, "Start Parameter Adjustment" |
| 81 | ) |
| 82 | temp = request_params.get("temperature", DEFAULT_TEMPERATURE) |
| 83 | await self._adjust_temperature( |
| 84 | temp, page_params_cache, params_cache_lock, check_client_disconnected |
| 85 | ) |
| 86 | max_tokens = request_params.get("max_output_tokens", DEFAULT_MAX_OUTPUT_TOKENS) |
| 87 | await self._adjust_max_tokens( |
| 88 | max_tokens, |
| 89 | page_params_cache, |
| 90 | params_cache_lock, |
| 91 | model_id_to_use, |
| 92 | parsed_model_list, |
| 93 | check_client_disconnected, |
| 94 | ) |
| 95 | stop = request_params.get("stop", DEFAULT_STOP_SEQUENCES) |
| 96 | await self._adjust_stop_sequences( |
| 97 | stop, page_params_cache, params_cache_lock, check_client_disconnected |
| 98 | ) |
| 99 | top_p = request_params.get("top_p", DEFAULT_TOP_P) |
| 100 | await self._adjust_top_p(top_p, check_client_disconnected) |
| 101 | await self._ensure_tools_panel_expanded(check_client_disconnected) |
| 102 | |
| 103 | # Force disable URL context if function calling is active |
no outgoing calls