From 8cfbd90b6682982f552d97f7670059fdb650fb5a Mon Sep 17 00:00:00 2001 From: Yoshio Date: Mon, 13 Jul 2026 19:06:39 +0700 Subject: [PATCH] fix(harness): remove prefix for ALLOWED_MODELS & increase watchdog timeout --- engines/remote_llm.py | 12 ++++-------- main.py | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/engines/remote_llm.py b/engines/remote_llm.py index 6f9bc38..8206717 100644 --- a/engines/remote_llm.py +++ b/engines/remote_llm.py @@ -106,6 +106,8 @@ def __init__(self) -> None: self._semaphore: asyncio.Semaphore | None = None self.api_key = os.environ.get("FIREWORKS_API_KEY", "") raw_url = os.environ.get("FIREWORKS_BASE_URL", "https://api.fireworks.ai/inference/v1") + if not raw_url.startswith("http"): + raw_url = f"https://{raw_url}" # Normalise: ensure the URL ends at /v1 if raw_url.endswith("/v1"): @@ -117,8 +119,6 @@ def __init__(self) -> None: self.base_url = base - self.model_prefix = "accounts/fireworks/models/" - if not self.api_key: logger.warning("FIREWORKS_API_KEY is not set. Remote API calls will fail with 401. Set the key in your .env file before running Phase 5.") logger.info("Remote LLM Engine base URL → %s", self.base_url) @@ -145,11 +145,7 @@ async def generate( ) -> str: # Compress prompt before sending compressed = compress_prompt(prompt, category) - model_name = select_remote_model(category) - if model_name.startswith(self.model_prefix): - model = model_name - else: - model = f"{self.model_prefix}{model_name}" + model = select_remote_model(category) logger.info("Remote [%s] → model=%s max_tokens=%d", category, model, max_tokens) headers = { @@ -158,7 +154,7 @@ async def generate( } # Dynamically switch between Chat Completions and raw Completions - is_chat = any(x in model_name.lower() for x in ["-it", "kimi", "minimax"]) + is_chat = any(x in model.lower() for x in ["-it", "kimi", "minimax"]) endpoint = f"{self.base_url}/chat/completions" if is_chat else f"{self.base_url}/completions" if is_chat: diff --git a/main.py b/main.py index ed5fd6d..801626f 100644 --- a/main.py +++ b/main.py @@ -42,9 +42,9 @@ def _get_results() -> list[dict[str, str]]: async def _process(task: Task) -> None: assert _router is not None and _lock is not None try: - answer = await asyncio.wait_for(_router.route(task.task_id, task.prompt), timeout=25.0) + answer = await asyncio.wait_for(_router.route(task.task_id, task.prompt), timeout=120.0) except TimeoutError: - logger.error("Task %s timed out after 25s", task.task_id) + logger.error("Task %s timed out after 120s", task.task_id) answer = "Error: Execution timed out." except Exception as exc: logger.error("Task %s failed: %s", task.task_id, exc)