From ed339fbc6fc32d89a9bd34f1a6e68ab5fa74bbce Mon Sep 17 00:00:00 2001 From: Mary Freitas Date: Tue, 30 Jun 2026 09:32:59 -0300 Subject: [PATCH] bypassing annoying bedrock error message --- app/constants.py | 2 ++ app/routers/websocket.py | 9 +++++++-- app/services/agent/middleware/ui_tools.py | 12 ++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/constants.py b/app/constants.py index 1dd64688..5156c7c0 100644 --- a/app/constants.py +++ b/app/constants.py @@ -3,3 +3,5 @@ ) INTERRUPT_CANCEL_REPLY = "Previous tool canceled by the user." + +BEDROCK_TOOL_ERROR_MESSAGE = "toolConfig field must be defined" \ No newline at end of file diff --git a/app/routers/websocket.py b/app/routers/websocket.py index b5b76bbd..4ccc505a 100644 --- a/app/routers/websocket.py +++ b/app/routers/websocket.py @@ -19,6 +19,7 @@ from ..services.auth import get_user_id from ..constants import CONTEXT_PARAMETERS_SUFFIX +from ..constants import BEDROCK_TOOL_ERROR_MESSAGE router = APIRouter() @@ -104,6 +105,7 @@ async def websocket_endpoint(websocket: WebSocket, thread_id: str = None, llm: B base_config["callbacks"] = [langfuse_handler] while True: + is_bedrock_tool_error = False try: request = await websocket.receive_text() request_id = str(uuid.uuid4()) @@ -127,13 +129,16 @@ async def websocket_endpoint(websocket: WebSocket, thread_id: str = None, llm: B break except Exception as e: logging.error(f"An error occurred: {e}", exc_info=True) + is_bedrock_tool_error = BEDROCK_TOOL_ERROR_MESSAGE in str(e) if websocket.client_state == WebSocketState.CONNECTED: - await websocket.send_text(f'{json.dumps({"message": str(e)})}') + if not is_bedrock_tool_error: + await websocket.send_text(f'{json.dumps({"message": str(e)})}') else: break finally: if websocket.client_state == WebSocketState.CONNECTED: - await websocket.send_text("") + if not is_bedrock_tool_error: + await websocket.send_text("") async def _call_agent( agent: CompiledStateGraph, diff --git a/app/services/agent/middleware/ui_tools.py b/app/services/agent/middleware/ui_tools.py index ec507fee..0eeb693c 100644 --- a/app/services/agent/middleware/ui_tools.py +++ b/app/services/agent/middleware/ui_tools.py @@ -1,5 +1,6 @@ import json import logging +import os from typing import Any from langchain.agents.middleware import AgentState, after_agent @@ -12,6 +13,11 @@ from langgraph.runtime import Runtime from ...ui_tools.selector import create_ui_tools_selector +from ...llm import ( + get_llm, + get_active_llm, + get_llm_model, +) def ui_tools_middleware(llm: BaseChatModel, only_when_direct: bool = False): @@ -81,6 +87,12 @@ async def _dispatch_ui_tools_event( List of selected UI tools, or empty list if dispatch was skipped. """ try: + activeLlm = get_active_llm() + + if activeLlm.lower() == "bedrock": + logging.debug("Skipping UI tools dispatch for Bedrock to avoid toolConfig errors") + return [] + request_metadata = config.get("configurable", {}).get("request_metadata", {}) ui_tools_config = request_metadata.get("ui_tools", {})