fix(api): degrade unavailable suggestion history model

This commit is contained in:
Yansong Zhang 2026-09-03 11:55:20 +08:00
parent 65bfdd3e05
commit 4580c76012
2 changed files with 34 additions and 4 deletions

View File

@ -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)

View File

@ -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,