File size: 1,176 Bytes
338517d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""``/api/chatbot`` — Global AI chatbot endpoint.

Accessible from every page (except training sessions which have their
own AI Mentor). Helps users understand the platform, navigate features,
and learn about cybersecurity concepts.
"""

from typing import Optional
from fastapi import APIRouter, Depends, HTTPException, Request
from pydantic import BaseModel

from app.core.auth import get_current_user
from app.services.chatbot_service import get_chatbot_response


router = APIRouter()


class ChatbotRequest(BaseModel):
    message: str
    page: str = ""
    lang: str = "ar"
    conversationHistory: Optional[list[dict[str, str]]] = None


class ChatbotResponse(BaseModel):
    response: str


@router.post("/api/chatbot")
async def ask_chatbot(
    req: ChatbotRequest,
    request: Request,
    user: dict = Depends(get_current_user),
):
    if not req.message:
        raise HTTPException(status_code=400, detail="الرسالة مطلوبة")

    result = await get_chatbot_response(
        message=req.message,
        conversation_history=req.conversationHistory,
        page=req.page,
        lang=req.lang,
    )
    return ChatbotResponse(response=result)