diff --git a/api/services/message_service.py b/api/services/message_service.py index cb5ba0306f2..9b20854ab17 100644 --- a/api/services/message_service.py +++ b/api/services/message_service.py @@ -411,10 +411,14 @@ class MessageService: if suggested_questions_after_answer_config.get("enabled", False) is False: raise SuggestedQuestionsAfterAnswerDisabledError() - model_instance = model_manager.get_default_model_instance( - tenant_id=app_model.tenant_id, - model_type=ModelType.LLM, - ) + try: + model_instance = model_manager.get_default_model_instance( + tenant_id=app_model.tenant_id, + model_type=ModelType.LLM, + ) + except Exception: + logger.exception("Failed to resolve the history model for suggested questions") + return [] # get memory of conversation (read-only) memory = TokenBufferMemory(conversation=conversation, model_instance=model_instance) diff --git a/api/tests/unit_tests/services/test_message_service.py b/api/tests/unit_tests/services/test_message_service.py index e6e5c76a9ca..21b7093a6f7 100644 --- a/api/tests/unit_tests/services/test_message_service.py +++ b/api/tests/unit_tests/services/test_message_service.py @@ -950,6 +950,32 @@ class TestMessageServiceSuggestedQuestions: model_config=None, ) + def test_agent_unavailable_default_model_returns_empty_questions( + self, + monkeypatch: pytest.MonkeyPatch, + factory: MessageServiceTestDataFactory, + sqlite_session: Session, + ) -> None: + conversation = factory.create_conversation() + conversation.mode = AppMode.AGENT + model_manager, memory, llm_generator = self._chat_boundaries(monkeypatch, conversation) + model_manager.get_default_model_instance.side_effect = ValueError("unsupported default model") + roster_service = MagicMock() + roster_service.return_value.get_published_agent_soul_for_app.return_value = self._agent_soul() + monkeypatch.setattr("services.agent.roster_service.AgentRosterService", roster_service) + + result = MessageService.get_suggested_questions_after_answer( + app_model=factory.create_app(mode=AppMode.AGENT), + user=factory.create_end_user(), + message_id="msg-123", + invoke_from=InvokeFrom.SERVICE_API, + session=sqlite_session, + ) + + assert result == [] + memory.assert_not_called() + llm_generator.generate_suggested_questions_after_answer.assert_not_called() + def test_historical_agent_without_soul_uses_current_app_model_config( self, monkeypatch: pytest.MonkeyPatch,