mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-09-20 13:05:49 +02:00
Begin distinguishing upsert operations for clarity (#2535)
* additional clarity for llm provider creation / updates * update provider APIs * update typing (minor)
This commit is contained in:
@@ -62,13 +62,21 @@ def upsert_cloud_embedding_provider(
|
|||||||
|
|
||||||
|
|
||||||
def upsert_llm_provider(
|
def upsert_llm_provider(
|
||||||
llm_provider: LLMProviderUpsertRequest, db_session: Session
|
llm_provider: LLMProviderUpsertRequest,
|
||||||
|
db_session: Session,
|
||||||
|
is_creation: bool = True,
|
||||||
) -> FullLLMProvider:
|
) -> FullLLMProvider:
|
||||||
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
|
||||||
@@ -118,10 +119,22 @@ 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),
|
||||||
) -> FullLLMProvider:
|
) -> FullLLMProvider:
|
||||||
return upsert_llm_provider(llm_provider=llm_provider, db_session=db_session)
|
try:
|
||||||
|
return 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}")
|
||||||
|
@@ -150,18 +150,21 @@ export function LLMProviderUpdateForm({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(LLM_PROVIDERS_ADMIN_URL, {
|
const response = await fetch(
|
||||||
method: "PUT",
|
`${LLM_PROVIDERS_ADMIN_URL}${existingLlmProvider ? "" : "?is_creation=true"}`,
|
||||||
headers: {
|
{
|
||||||
"Content-Type": "application/json",
|
method: "PUT",
|
||||||
},
|
headers: {
|
||||||
body: JSON.stringify({
|
"Content-Type": "application/json",
|
||||||
provider: llmProviderDescriptor.name,
|
},
|
||||||
...values,
|
body: JSON.stringify({
|
||||||
fast_default_model_name:
|
provider: llmProviderDescriptor.name,
|
||||||
values.fast_default_model_name || values.default_model_name,
|
...values,
|
||||||
}),
|
fast_default_model_name:
|
||||||
});
|
values.fast_default_model_name || values.default_model_name,
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
const errorMsg = (await response.json()).detail;
|
const errorMsg = (await response.json()).detail;
|
||||||
|
Reference in New Issue
Block a user