From 297bc4bfb90bda3a11f35403b7c9b000537696c3 Mon Sep 17 00:00:00 2001 From: Manmohan Sharma Date: Wed, 22 Apr 2026 15:05:52 -0700 Subject: [PATCH] fix(serve): strip system-prompt prefix before classifying user query --- modal/serve.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modal/serve.py b/modal/serve.py index 536b6a46..2df9763f 100644 --- a/modal/serve.py +++ b/modal/serve.py @@ -264,8 +264,14 @@ class Inference: if msg.get("role") == "user": last_user = msg.get("content", "") break + # chat-api inlines the system prompt into the first user message as + # "{SYS_PROMPT}\n\n{actual_user_question}". Strip the sys prefix for + # the classifier so Tavily gets a clean query. + query_for_classify = last_user + if "\n\n" in query_for_classify: + query_for_classify = query_for_classify.rsplit("\n\n", 1)[-1].strip() try: - needs_search, rewritten = self._needs_web_search(last_user) + needs_search, rewritten = self._needs_web_search(query_for_classify) except Exception: needs_search, rewritten = False, "" if needs_search and rewritten: