diff --git a/backend/alembic/versions/570282d33c49_track_danswerbot_explicitly.py b/backend/alembic/versions/570282d33c49_track_danswerbot_explicitly.py new file mode 100644 index 000000000..2909fa53a --- /dev/null +++ b/backend/alembic/versions/570282d33c49_track_danswerbot_explicitly.py @@ -0,0 +1,27 @@ +"""Track Danswerbot Explicitly + +Revision ID: 570282d33c49 +Revises: 7547d982db8f +Create Date: 2024-05-04 17:49:28.568109 + +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = "570282d33c49" +down_revision = "7547d982db8f" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.add_column( + "chat_session", sa.Column("danswerbot_flow", sa.Boolean(), nullable=True) + ) + op.execute("UPDATE chat_session SET danswerbot_flow = one_shot") + op.alter_column("chat_session", "danswerbot_flow", nullable=False) + + +def downgrade() -> None: + op.drop_column("chat_session", "danswerbot_flow") diff --git a/backend/danswer/danswerbot/slack/handlers/handle_message.py b/backend/danswer/danswerbot/slack/handlers/handle_message.py index c24d28847..57d11e86b 100644 --- a/backend/danswer/danswerbot/slack/handlers/handle_message.py +++ b/backend/danswer/danswerbot/slack/handlers/handle_message.py @@ -282,6 +282,7 @@ def handle_message( enable_reflexion=reflexion, bypass_acl=bypass_acl, use_citations=use_citations, + danswerbot_flow=True, ) if not answer.error_msg: return answer diff --git a/backend/danswer/db/chat.py b/backend/danswer/db/chat.py index 20c41035b..42fa26ffd 100644 --- a/backend/danswer/db/chat.py +++ b/backend/danswer/db/chat.py @@ -102,6 +102,7 @@ def create_chat_session( llm_override: LLMOverride | None = None, prompt_override: PromptOverride | None = None, one_shot: bool = False, + danswerbot_flow: bool = False, ) -> ChatSession: chat_session = ChatSession( user_id=user_id, @@ -110,6 +111,7 @@ def create_chat_session( llm_override=llm_override, prompt_override=prompt_override, one_shot=one_shot, + danswerbot_flow=danswerbot_flow, ) db_session.add(chat_session) diff --git a/backend/danswer/db/models.py b/backend/danswer/db/models.py index 75cff3c25..1962914cb 100644 --- a/backend/danswer/db/models.py +++ b/backend/danswer/db/models.py @@ -568,6 +568,7 @@ class ChatSession(Base): description: Mapped[str] = mapped_column(Text) # One-shot direct answering, currently the two types of chats are not mixed one_shot: Mapped[bool] = mapped_column(Boolean, default=False) + danswerbot_flow: Mapped[bool] = mapped_column(Boolean, default=False) # Only ever set to True if system is set to not hard-delete chats deleted: Mapped[bool] = mapped_column(Boolean, default=False) # controls whether or not this conversation is viewable by others diff --git a/backend/danswer/one_shot_answer/answer_question.py b/backend/danswer/one_shot_answer/answer_question.py index 9a7644d5d..4fd492e44 100644 --- a/backend/danswer/one_shot_answer/answer_question.py +++ b/backend/danswer/one_shot_answer/answer_question.py @@ -77,6 +77,7 @@ def stream_answer_objects( timeout: int = QA_TIMEOUT, bypass_acl: bool = False, use_citations: bool = False, + danswerbot_flow: bool = False, retrieval_metrics_callback: Callable[[RetrievalMetricsContainer], None] | None = None, rerank_metrics_callback: Callable[[RerankMetricsContainer], None] | None = None, @@ -98,6 +99,7 @@ def stream_answer_objects( user_id=user_id, persona_id=query_req.persona_id, one_shot=True, + danswerbot_flow=danswerbot_flow, ) llm_tokenizer = get_default_llm_token_encode() @@ -273,6 +275,7 @@ def get_search_answer( enable_reflexion: bool = False, bypass_acl: bool = False, use_citations: bool = False, + danswerbot_flow: bool = False, retrieval_metrics_callback: Callable[[RetrievalMetricsContainer], None] | None = None, rerank_metrics_callback: Callable[[RerankMetricsContainer], None] | None = None, @@ -288,6 +291,7 @@ def get_search_answer( db_session=db_session, bypass_acl=bypass_acl, use_citations=use_citations, + danswerbot_flow=danswerbot_flow, timeout=answer_generation_timeout, retrieval_metrics_callback=retrieval_metrics_callback, rerank_metrics_callback=rerank_metrics_callback,