Initialize vLLM-backed agents and validate endpoints.
()
| 153 | |
| 154 | |
| 155 | def load_models() -> None: |
| 156 | """Initialize vLLM-backed agents and validate endpoints.""" |
| 157 | global _CRAWLER_AGENT, _SELECTOR_AGENT, _MODEL_LOAD_ERROR |
| 158 | |
| 159 | try: |
| 160 | if PASA_INFERENCE_BACKEND != "vllm": |
| 161 | raise RuntimeError( |
| 162 | f"Unsupported PASA_INFERENCE_BACKEND={PASA_INFERENCE_BACKEND!r}. " |
| 163 | "This server expects vLLM backend." |
| 164 | ) |
| 165 | |
| 166 | if not DEFAULT_CRAWLER_PATH: |
| 167 | raise RuntimeError('PASA_CRAWLER_PATH is required.') |
| 168 | if not DEFAULT_SELECTOR_PATH: |
| 169 | raise RuntimeError('PASA_SELECTOR_PATH is required.') |
| 170 | if not os.path.exists(DEFAULT_CRAWLER_PATH): |
| 171 | raise FileNotFoundError(f"CRAWLER model path not found: {DEFAULT_CRAWLER_PATH}") |
| 172 | if not os.path.exists(DEFAULT_SELECTOR_PATH): |
| 173 | raise FileNotFoundError(f"SELECTOR model path not found: {DEFAULT_SELECTOR_PATH}") |
| 174 | if not os.path.exists(DEFAULT_PROMPTS_PATH): |
| 175 | raise FileNotFoundError(f"PROMPTS path not found: {DEFAULT_PROMPTS_PATH}") |
| 176 | |
| 177 | logger.info("=" * 70) |
| 178 | logger.info("🚀 Starting PASA vLLM backend initialization") |
| 179 | logger.info(f"GPU (expected): {os.getenv('PASA_GPU_ID', '1')}") |
| 180 | logger.info(f"CRAWLER vLLM: {PASA_VLLM_CRAWLER_URL} (model={PASA_VLLM_CRAWLER_MODEL_NAME})") |
| 181 | logger.info(f"SELECTOR vLLM: {PASA_VLLM_SELECTOR_URL} (model={PASA_VLLM_SELECTOR_MODEL_NAME})") |
| 182 | |
| 183 | _CRAWLER_AGENT = VLLMAgent( |
| 184 | base_url=PASA_VLLM_CRAWLER_URL, |
| 185 | model_name=PASA_VLLM_CRAWLER_MODEL_NAME, |
| 186 | tokenizer_path=DEFAULT_CRAWLER_PATH, |
| 187 | use_chat_template=True, |
| 188 | request_timeout=PASA_VLLM_REQUEST_TIMEOUT, |
| 189 | logprobs=PASA_VLLM_LOGPROBS, |
| 190 | ) |
| 191 | _SELECTOR_AGENT = VLLMAgent( |
| 192 | base_url=PASA_VLLM_SELECTOR_URL, |
| 193 | model_name=PASA_VLLM_SELECTOR_MODEL_NAME, |
| 194 | tokenizer_path=None, |
| 195 | use_chat_template=False, |
| 196 | request_timeout=PASA_VLLM_REQUEST_TIMEOUT, |
| 197 | logprobs=PASA_VLLM_LOGPROBS, |
| 198 | ) |
| 199 | |
| 200 | _CRAWLER_AGENT.ensure_ready() |
| 201 | _SELECTOR_AGENT.ensure_ready() |
| 202 | |
| 203 | logger.info("✅ PASA vLLM backend is ready") |
| 204 | logger.info("=" * 70) |
| 205 | |
| 206 | except Exception as e: |
| 207 | _MODEL_LOAD_ERROR = str(e) |
| 208 | logger.error(f"❌ Failed to initialize PASA vLLM backend: {e}") |
| 209 | logger.error(traceback.format_exc()) |
| 210 | raise |
| 211 | |
| 212 |
no test coverage detected