mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-09-22 17:16:20 +02:00
additional clarity for llm provider creation / updates
This commit is contained in:
@@ -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
|
||||||
|
@@ -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)
|
||||||
|
|
||||||
|
@@ -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}")
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user