From df62648bbfa4d32d9ed6af5380c367d184826740 Mon Sep 17 00:00:00 2001 From: Weves Date: Fri, 4 Aug 2023 18:07:15 -0700 Subject: [PATCH] Increase timeout for answer generation for slack bot --- backend/danswer/configs/app_configs.py | 3 +++ backend/danswer/direct_qa/answer_question.py | 4 +++- backend/danswer/listeners/slack_listener.py | 7 ++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/danswer/configs/app_configs.py b/backend/danswer/configs/app_configs.py index 4dc30582c..8d8ae1698 100644 --- a/backend/danswer/configs/app_configs.py +++ b/backend/danswer/configs/app_configs.py @@ -171,3 +171,6 @@ DANSWER_BOT_NUM_DOCS_TO_DISPLAY = int( os.environ.get("DANSWER_BOT_NUM_DOCS_TO_DISPLAY", "5") ) DANSWER_BOT_NUM_RETRIES = int(os.environ.get("DANSWER_BOT_NUM_RETRIES", "5")) +DANSWER_BOT_ANSWER_GENERATION_TIMEOUT = int( + os.environ.get("DANSWER_BOT_ANSWER_GENERATION_TIMEOUT", "60") +) diff --git a/backend/danswer/direct_qa/answer_question.py b/backend/danswer/direct_qa/answer_question.py index 29b4ba1a2..96d33bf49 100644 --- a/backend/danswer/direct_qa/answer_question.py +++ b/backend/danswer/direct_qa/answer_question.py @@ -1,6 +1,7 @@ from danswer.chunking.models import InferenceChunk from danswer.configs.app_configs import DISABLE_GENERATIVE_AI from danswer.configs.app_configs import NUM_GENERATIVE_AI_INPUT_DOCS +from danswer.configs.app_configs import QA_TIMEOUT from danswer.datastores.qdrant.store import QdrantIndex from danswer.datastores.typesense.store import TypesenseIndex from danswer.db.models import User @@ -27,6 +28,7 @@ def answer_question( question: QuestionRequest, user: User | None, disable_generative_answer: bool = DISABLE_GENERATIVE_AI, + answer_generation_timeout: int = QA_TIMEOUT, ) -> QAResponse: query = question.query collection = question.collection @@ -73,7 +75,7 @@ def answer_question( ) try: - qa_model = get_default_backend_qa_model() + qa_model = get_default_backend_qa_model(timeout=answer_generation_timeout) except (UnknownModelError, OpenAIKeyMissing) as e: return QAResponse( answer=None, diff --git a/backend/danswer/listeners/slack_listener.py b/backend/danswer/listeners/slack_listener.py index 1453d6192..0c3d89e79 100644 --- a/backend/danswer/listeners/slack_listener.py +++ b/backend/danswer/listeners/slack_listener.py @@ -6,6 +6,7 @@ from slack_sdk.socket_mode import SocketModeClient from slack_sdk.socket_mode.request import SocketModeRequest from slack_sdk.socket_mode.response import SocketModeResponse +from danswer.configs.app_configs import DANSWER_BOT_ANSWER_GENERATION_TIMEOUT from danswer.configs.app_configs import DANSWER_BOT_NUM_DOCS_TO_DISPLAY from danswer.configs.app_configs import DANSWER_BOT_NUM_RETRIES from danswer.configs.app_configs import QDRANT_DEFAULT_COLLECTION @@ -151,7 +152,11 @@ def process_slack_event(client: SocketModeClient, req: SocketModeRequest) -> Non @retry(tries=DANSWER_BOT_NUM_RETRIES, delay=0.25, backoff=2, logger=logger) def _get_answer(question: QuestionRequest) -> QAResponse: - answer = answer_question(question=question, user=None) + answer = answer_question( + question=question, + user=None, + answer_generation_timeout=DANSWER_BOT_ANSWER_GENERATION_TIMEOUT, + ) if not answer.error_msg: return answer else: