Merge pull request #4 from bdim404/dev
Validate LLM configuration and simplify SQLite checks
This commit is contained in:
@@ -297,13 +297,29 @@ async def set_llm_config(
|
|||||||
db: Session = Depends(get_db)
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
from core.security import encrypt_api_key
|
from core.security import encrypt_api_key
|
||||||
encrypted_key = encrypt_api_key(config.api_key.strip())
|
from core.llm_service import LLMService
|
||||||
|
|
||||||
|
api_key = config.api_key.strip()
|
||||||
|
base_url = config.base_url.strip()
|
||||||
|
model = config.model.strip()
|
||||||
|
|
||||||
|
# Validate LLM config by sending a test request
|
||||||
|
llm = LLMService(base_url=base_url, api_key=api_key, model=model)
|
||||||
|
try:
|
||||||
|
await llm.chat("You are a test assistant.", "Reply with 'ok'.")
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=f"LLM API validation failed: {e}"
|
||||||
|
)
|
||||||
|
|
||||||
|
encrypted_key = encrypt_api_key(api_key)
|
||||||
update_user_llm_config(
|
update_user_llm_config(
|
||||||
db,
|
db,
|
||||||
user_id=current_user.id,
|
user_id=current_user.id,
|
||||||
llm_api_key=encrypted_key,
|
llm_api_key=encrypted_key,
|
||||||
llm_base_url=config.base_url.strip(),
|
llm_base_url=base_url,
|
||||||
llm_model=config.model.strip(),
|
llm_model=model,
|
||||||
)
|
)
|
||||||
return {"message": "LLM config updated successfully"}
|
return {"message": "LLM config updated successfully"}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,18 @@
|
|||||||
from sqlalchemy import create_engine, event
|
from sqlalchemy import create_engine, event
|
||||||
from sqlalchemy.orm import sessionmaker, declarative_base
|
from sqlalchemy.orm import sessionmaker, declarative_base
|
||||||
|
from sqlalchemy.pool import NullPool
|
||||||
|
|
||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
|
_is_sqlite = "sqlite" in settings.DATABASE_URL
|
||||||
|
|
||||||
engine = create_engine(
|
engine = create_engine(
|
||||||
settings.DATABASE_URL,
|
settings.DATABASE_URL,
|
||||||
connect_args={"check_same_thread": False} if "sqlite" in settings.DATABASE_URL else {}
|
connect_args={"check_same_thread": False} if _is_sqlite else {},
|
||||||
|
poolclass=NullPool if _is_sqlite else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
if "sqlite" in settings.DATABASE_URL:
|
if _is_sqlite:
|
||||||
@event.listens_for(engine, "connect")
|
@event.listens_for(engine, "connect")
|
||||||
def _set_wal(dbapi_conn, _):
|
def _set_wal(dbapi_conn, _):
|
||||||
dbapi_conn.execute("PRAGMA journal_mode=WAL")
|
dbapi_conn.execute("PRAGMA journal_mode=WAL")
|
||||||
|
|||||||
Reference in New Issue
Block a user