From e37da8edc17e3c58025197555fd0e0e20fb5f138 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Sun, 8 Sep 2024 12:22:57 -0700 Subject: [PATCH] ensure typing + naming --- backend/danswer/configs/app_configs.py | 2 +- .../one_shot_answer/answer_question.py | 22 +++++++------------ .../server/query_and_chat/chat_backend.py | 2 +- .../danswer/server/query_and_chat/models.py | 2 +- .../ee/danswer/server/query_and_chat/utils.py | 3 ++- .../ee/danswer/server/query_history/api.py | 14 +++++++----- .../docker_compose/docker-compose.dev.yml | 2 +- .../docker_compose/docker-compose.gpu-dev.yml | 2 +- .../docker-compose.search-testing.yml | 2 +- 9 files changed, 24 insertions(+), 27 deletions(-) diff --git a/backend/danswer/configs/app_configs.py b/backend/danswer/configs/app_configs.py index 2f57dd2494a..4b5109b5ee7 100644 --- a/backend/danswer/configs/app_configs.py +++ b/backend/danswer/configs/app_configs.py @@ -135,7 +135,7 @@ os.environ.get("POSTGRES_PASSWORD") or "password" ) POSTGRES_HOST = os.environ.get("POSTGRES_HOST") or "localhost" -POSTGRES_PORT = os.environ.get("POSTGRES_PORT") or "5433" +POSTGRES_PORT = os.environ.get("POSTGRES_PORT") or "5432" POSTGRES_DB = os.environ.get("POSTGRES_DB") or "postgres" # defaults to False diff --git a/backend/danswer/one_shot_answer/answer_question.py b/backend/danswer/one_shot_answer/answer_question.py index c21c21d6126..01108b3c8f2 100644 --- a/backend/danswer/one_shot_answer/answer_question.py +++ b/backend/danswer/one_shot_answer/answer_question.py @@ -2,10 +2,8 @@ from collections.abc import Iterator from typing import cast -from fastapi import HTTPException from sqlalchemy.orm import Session -from danswer.auth.users import is_user_admin from danswer.chat.chat_utils import reorganize_citations from danswer.chat.models import CitationInfo from danswer.chat.models import DanswerAnswerPiece @@ -113,18 +111,6 @@ def stream_answer_objects( query_msg = query_req.messages[-1] history = query_req.messages[:-1] - temporary_persona: Persona | None = None - if query_req.persona_config is not None: - if not is_user_admin(user): - raise HTTPException( - status_code=403, detail="User is not authorized to create a persona" - ) - - new_persona = create_temporary_persona( - db_session=db_session, persona_config=query_req.persona_config, user=user - ) - temporary_persona = new_persona - chat_session = create_chat_session( db_session=db_session, description="", # One shot queries don't need naming as it's never displayed @@ -135,7 +121,15 @@ def stream_answer_objects( danswerbot_flow=danswerbot_flow, ) + temporary_persona: Persona | None = None + if query_req.persona_config is not None: + new_persona = create_temporary_persona( + db_session=db_session, persona_config=query_req.persona_config, user=user + ) + temporary_persona = new_persona + persona = temporary_persona if temporary_persona else chat_session.persona + llm, fast_llm = get_llms_for_persona(persona=persona) llm_tokenizer = get_tokenizer( diff --git a/backend/danswer/server/query_and_chat/chat_backend.py b/backend/danswer/server/query_and_chat/chat_backend.py index 20ae7124fa1..c7f5983417d 100644 --- a/backend/danswer/server/query_and_chat/chat_backend.py +++ b/backend/danswer/server/query_and_chat/chat_backend.py @@ -164,7 +164,7 @@ def get_chat_session( chat_session_id=session_id, description=chat_session.description, persona_id=chat_session.persona_id, - persona_name=chat_session.persona.name, + persona_name=chat_session.persona.name if chat_session.persona else None, current_alternate_model=chat_session.current_alternate_model, messages=[ translate_db_message_to_chat_message_detail( diff --git a/backend/danswer/server/query_and_chat/models.py b/backend/danswer/server/query_and_chat/models.py index f68312998ce..c9109b141c3 100644 --- a/backend/danswer/server/query_and_chat/models.py +++ b/backend/danswer/server/query_and_chat/models.py @@ -197,7 +197,7 @@ class ChatSessionDetailResponse(BaseModel): chat_session_id: int description: str persona_id: int | None = None - persona_name: str + persona_name: str | None messages: list[ChatMessageDetail] time_created: datetime shared_status: ChatSessionSharedStatus diff --git a/backend/ee/danswer/server/query_and_chat/utils.py b/backend/ee/danswer/server/query_and_chat/utils.py index dfcb3e1d7e2..beb970fd1b8 100644 --- a/backend/ee/danswer/server/query_and_chat/utils.py +++ b/backend/ee/danswer/server/query_and_chat/utils.py @@ -20,7 +20,8 @@ def create_temporary_persona( ) -> Persona: if not is_user_admin(user): raise HTTPException( - status_code=403, detail="User is not authorized to create a persona" + status_code=403, + detail="User is not authorized to create a persona in one shot queries", ) """Create a temporary Persona object from the provided configuration.""" diff --git a/backend/ee/danswer/server/query_history/api.py b/backend/ee/danswer/server/query_history/api.py index ed532a85603..dbdf3d8bc40 100644 --- a/backend/ee/danswer/server/query_history/api.py +++ b/backend/ee/danswer/server/query_history/api.py @@ -87,7 +87,7 @@ class ChatSessionMinimal(BaseModel): name: str | None first_user_message: str first_ai_message: str - persona_name: str + persona_name: str | None time_created: datetime feedback_type: QAFeedbackType | Literal["mixed"] | None @@ -97,7 +97,7 @@ class ChatSessionSnapshot(BaseModel): user_email: str name: str | None messages: list[MessageSnapshot] - persona_name: str + persona_name: str | None time_created: datetime @@ -111,7 +111,7 @@ class QuestionAnswerPairSnapshot(BaseModel): retrieved_documents: list[AbridgedSearchDoc] feedback_type: QAFeedbackType | None feedback_text: str | None - persona_name: str + persona_name: str | None user_email: str time_created: datetime @@ -145,7 +145,7 @@ def from_chat_session_snapshot( for ind, (user_message, ai_message) in enumerate(message_pairs) ] - def to_json(self) -> dict[str, str]: + def to_json(self) -> dict[str, str | None]: return { "chat_session_id": str(self.chat_session_id), "message_pair_num": str(self.message_pair_num), @@ -235,7 +235,9 @@ def fetch_and_process_chat_session_history_minimal( name=chat_session.description, first_user_message=first_user_message, first_ai_message=first_ai_message, - persona_name=chat_session.persona.name, + persona_name=chat_session.persona.name + if chat_session.persona + else None, time_created=chat_session.time_created, feedback_type=feedback_type, ) @@ -300,7 +302,7 @@ def snapshot_from_chat_session( for message in messages if message.message_type != MessageType.SYSTEM ], - persona_name=chat_session.persona.name, + persona_name=chat_session.persona.name if chat_session.persona else None, time_created=chat_session.time_created, ) diff --git a/deployment/docker_compose/docker-compose.dev.yml b/deployment/docker_compose/docker-compose.dev.yml index 1458651d663..d6141960785 100644 --- a/deployment/docker_compose/docker-compose.dev.yml +++ b/deployment/docker_compose/docker-compose.dev.yml @@ -292,7 +292,7 @@ services: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} ports: - - "5433:5432" + - "5432:5432" volumes: - db_volume:/var/lib/postgresql/data diff --git a/deployment/docker_compose/docker-compose.gpu-dev.yml b/deployment/docker_compose/docker-compose.gpu-dev.yml index ad9627945a5..8937bb90341 100644 --- a/deployment/docker_compose/docker-compose.gpu-dev.yml +++ b/deployment/docker_compose/docker-compose.gpu-dev.yml @@ -302,7 +302,7 @@ services: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} ports: - - "5433:5432" + - "5432:5432" volumes: - db_volume:/var/lib/postgresql/data diff --git a/deployment/docker_compose/docker-compose.search-testing.yml b/deployment/docker_compose/docker-compose.search-testing.yml index 36b093fbae9..a64b30f09d7 100644 --- a/deployment/docker_compose/docker-compose.search-testing.yml +++ b/deployment/docker_compose/docker-compose.search-testing.yml @@ -154,7 +154,7 @@ services: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} ports: - - "5433" + - "5432" volumes: - db_volume:/var/lib/postgresql/data