From 3f0895682cd2aa77f93d52909c638ca8a0b9e817 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Sat, 14 Sep 2024 11:33:21 -0700 Subject: [PATCH] additional clarity for llm provider creation / updates --- backend/danswer/configs/app_configs.py | 2 +- backend/danswer/db/llm.py | 13 ++++++++---- backend/danswer/server/manage/llm/api.py | 20 ++++++++++++++++--- .../docker_compose/docker-compose.dev.yml | 2 +- .../docker_compose/docker-compose.gpu-dev.yml | 2 +- .../docker-compose.search-testing.yml | 2 +- 6 files changed, 30 insertions(+), 11 deletions(-) diff --git a/backend/danswer/configs/app_configs.py b/backend/danswer/configs/app_configs.py index 2f57dd2494a7..4b5109b5ee7f 100644 --- a/backend/danswer/configs/app_configs.py +++ b/backend/danswer/configs/app_configs.py @@ -135,7 +135,7 @@ POSTGRES_PASSWORD = urllib.parse.quote_plus( 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/db/llm.py b/backend/danswer/db/llm.py index 662c018ad495..b3d560b37057 100644 --- a/backend/danswer/db/llm.py +++ b/backend/danswer/db/llm.py @@ -60,17 +60,22 @@ def upsert_cloud_embedding_provider( return CloudEmbeddingProvider.from_request(existing_provider) -# from danswer.server.manage.llm.models import FullLLMProviderSnapshot - - def upsert_llm_provider( - llm_provider: LLMProviderUpsertRequest, db_session: Session + llm_provider: LLMProviderUpsertRequest, + db_session: Session, + is_creation: bool = True, ) -> FullLLMProviderSnapshot: existing_llm_provider = db_session.scalar( select(LLMProviderModel).where(LLMProviderModel.name == llm_provider.name) ) + if existing_llm_provider and is_creation: + raise ValueError(f"LLM Provider with name {llm_provider.name} already exists") if not existing_llm_provider: + if not is_creation: + raise ValueError( + f"LLM Provider with name {llm_provider.name} does not exist" + ) existing_llm_provider = LLMProviderModel(name=llm_provider.name) db_session.add(existing_llm_provider) diff --git a/backend/danswer/server/manage/llm/api.py b/backend/danswer/server/manage/llm/api.py index a3df26e10c7b..341f4c2fa3d7 100644 --- a/backend/danswer/server/manage/llm/api.py +++ b/backend/danswer/server/manage/llm/api.py @@ -3,6 +3,7 @@ from collections.abc import Callable from fastapi import APIRouter from fastapi import Depends from fastapi import HTTPException +from fastapi import Query from sqlalchemy.orm import Session from danswer.auth.users import current_admin_user @@ -37,6 +38,7 @@ basic_router = APIRouter(prefix="/llm") def fetch_llm_options( _: User | None = Depends(current_admin_user), ) -> list[WellKnownLLMProviderDescriptor]: + print("FETCHING") return fetch_available_well_known_llms() @@ -119,12 +121,24 @@ def list_llm_providers( @admin_router.put("/provider") def put_llm_provider( llm_provider: LLMProviderUpsertRequest, + is_creation: bool = Query( + True, + description="True if updating an existing provider, False if creating a new one", + ), _: User | None = Depends(current_admin_user), db_session: Session = Depends(get_session), ) -> FullLLMProviderSnapshot: - return FullLLMProviderSnapshot.from_full_llm_provider( - upsert_llm_provider(llm_provider=llm_provider, db_session=db_session) - ) + try: + return FullLLMProviderSnapshot.from_full_llm_provider( + upsert_llm_provider( + llm_provider=llm_provider, + db_session=db_session, + is_creation=is_creation, + ) + ) + except ValueError as e: + logger.exception("Failed to upsert LLM Provider") + raise HTTPException(status_code=400, detail=str(e)) @admin_router.delete("/provider/{provider_id}") diff --git a/deployment/docker_compose/docker-compose.dev.yml b/deployment/docker_compose/docker-compose.dev.yml index 1458651d663a..d61419607857 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 ad9627945a50..8937bb903410 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 36b093fbae9b..a64b30f09d70 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