additional clarity for llm provider creation / updates

This commit is contained in:
pablodanswer
2024-09-14 11:33:21 -07:00
parent 3b70a94fcd
commit 3f0895682c
6 changed files with 30 additions and 11 deletions

View File

@@ -135,7 +135,7 @@ POSTGRES_PASSWORD = urllib.parse.quote_plus(
os.environ.get("POSTGRES_PASSWORD") or "password" os.environ.get("POSTGRES_PASSWORD") or "password"
) )
POSTGRES_HOST = os.environ.get("POSTGRES_HOST") or "localhost" 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" POSTGRES_DB = os.environ.get("POSTGRES_DB") or "postgres"
# defaults to False # defaults to False

View File

@@ -60,17 +60,22 @@ def upsert_cloud_embedding_provider(
return CloudEmbeddingProvider.from_request(existing_provider) return CloudEmbeddingProvider.from_request(existing_provider)
# from danswer.server.manage.llm.models import FullLLMProviderSnapshot
def upsert_llm_provider( def upsert_llm_provider(
llm_provider: LLMProviderUpsertRequest, db_session: Session llm_provider: LLMProviderUpsertRequest,
db_session: Session,
is_creation: bool = True,
) -> FullLLMProviderSnapshot: ) -> FullLLMProviderSnapshot:
existing_llm_provider = db_session.scalar( existing_llm_provider = db_session.scalar(
select(LLMProviderModel).where(LLMProviderModel.name == llm_provider.name) 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 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) existing_llm_provider = LLMProviderModel(name=llm_provider.name)
db_session.add(existing_llm_provider) db_session.add(existing_llm_provider)

View File

@@ -3,6 +3,7 @@ from collections.abc import Callable
from fastapi import APIRouter from fastapi import APIRouter
from fastapi import Depends from fastapi import Depends
from fastapi import HTTPException from fastapi import HTTPException
from fastapi import Query
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from danswer.auth.users import current_admin_user from danswer.auth.users import current_admin_user
@@ -37,6 +38,7 @@ basic_router = APIRouter(prefix="/llm")
def fetch_llm_options( def fetch_llm_options(
_: User | None = Depends(current_admin_user), _: User | None = Depends(current_admin_user),
) -> list[WellKnownLLMProviderDescriptor]: ) -> list[WellKnownLLMProviderDescriptor]:
print("FETCHING")
return fetch_available_well_known_llms() return fetch_available_well_known_llms()
@@ -119,12 +121,24 @@ def list_llm_providers(
@admin_router.put("/provider") @admin_router.put("/provider")
def put_llm_provider( def put_llm_provider(
llm_provider: LLMProviderUpsertRequest, 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), _: User | None = Depends(current_admin_user),
db_session: Session = Depends(get_session), db_session: Session = Depends(get_session),
) -> FullLLMProviderSnapshot: ) -> FullLLMProviderSnapshot:
try:
return FullLLMProviderSnapshot.from_full_llm_provider( return FullLLMProviderSnapshot.from_full_llm_provider(
upsert_llm_provider(llm_provider=llm_provider, db_session=db_session) 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}") @admin_router.delete("/provider/{provider_id}")

View File

@@ -292,7 +292,7 @@ services:
- POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
ports: ports:
- "5433:5432" - "5432:5432"
volumes: volumes:
- db_volume:/var/lib/postgresql/data - db_volume:/var/lib/postgresql/data

View File

@@ -302,7 +302,7 @@ services:
- POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
ports: ports:
- "5433:5432" - "5432:5432"
volumes: volumes:
- db_volume:/var/lib/postgresql/data - db_volume:/var/lib/postgresql/data

View File

@@ -154,7 +154,7 @@ services:
- POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
ports: ports:
- "5433" - "5432"
volumes: volumes:
- db_volume:/var/lib/postgresql/data - db_volume:/var/lib/postgresql/data