ollive-api / api /routes /chat.py
Karthik Namboori
Deploy ollive FastAPI Docker Space
7b4b748
from __future__ import annotations
from fastapi import APIRouter, Depends, Header, HTTPException, status
from api.schemas import ChatRequest, ChatResponse, SessionResetResponse
router = APIRouter(prefix="/v1", tags=["chat"])
def _get_chat_service():
from api.main import get_chat_service
return get_chat_service()
def _verify_api_key(x_api_key: str | None = Header(default=None)) -> None:
from api.main import get_api_config
configured = get_api_config().api_key
if configured and x_api_key != configured:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid API key")
@router.post("/chat", response_model=ChatResponse)
def chat(
payload: ChatRequest,
_: None = Depends(_verify_api_key),
service=Depends(_get_chat_service),
) -> ChatResponse:
return service.chat(payload.message, payload.session_id)
@router.delete("/sessions/{session_id}", response_model=SessionResetResponse)
def reset_session(
session_id: str,
_: None = Depends(_verify_api_key),
service=Depends(_get_chat_service),
) -> SessionResetResponse:
service.reset_session(session_id)
return SessionResetResponse(session_id=session_id, cleared=True)