From 630ce77b5f3be3fc864ac817d3e1cdac63f07634 Mon Sep 17 00:00:00 2001 From: Debanjum Date: Wed, 12 Nov 2025 17:20:06 -0800 Subject: [PATCH] Improve agent update/create safety check. Make reason field optional Issue --- When agent personality/instructions are safe, we do not require the safety agent to give a reason. The safety check agent was told this in the prompt but it was not reflected in the json schema being used. Latest openai library started throwing error if response doesn't match requested json schema. This broke creating/updating agents when using openai models as safety agent. Fix --- Make reason field optional. Also put send_message_to_model_wrapper in try/catch for more readable error stacktrace. --- src/khoj/routers/helpers.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/khoj/routers/helpers.py b/src/khoj/routers/helpers.py index 4cad0dd9..b0d649ad 100644 --- a/src/khoj/routers/helpers.py +++ b/src/khoj/routers/helpers.py @@ -322,15 +322,15 @@ async def acheck_if_safe_prompt(system_prompt: str, user: KhojUser = None, lax: class SafetyCheck(BaseModel): safe: bool - reason: str + reason: Optional[str] = "" with timer("Chat actor: Check if safe prompt", logger): - response = await send_message_to_model_wrapper( - safe_prompt_check, response_type="json_object", response_schema=SafetyCheck, fast_model=True, user=user - ) - - response = response.text.strip() try: + response = await send_message_to_model_wrapper( + safe_prompt_check, response_type="json_object", response_schema=SafetyCheck, fast_model=True, user=user + ) + + response = response.text.strip() response = json.loads(clean_json(response)) is_safe = str(response.get("safe", "true")).lower() == "true" if not is_safe: