File size: 1,360 Bytes
94a3dae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from chatbot import chat, store
from langchain_core.messages import BaseMessage, HumanMessage, AIMessage

app = FastAPI()
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.get("/")
async def get_all_sessions():
    all_sessions = {}
    for session_id, history in store.items():
        messages = []
        for msg in history.messages:
            role = "human" if isinstance(msg, HumanMessage) else "ai" if isinstance(msg, AIMessage) else "unknown"
            messages.append({
                "role": role,
                "content": msg.content
            })
        all_sessions[session_id] = messages
    return {"sessions": all_sessions}

class ChatRequest(BaseModel):
    message: str
    session_id: str

@app.post("/chat")
async def chat_endpoint(chat_req: ChatRequest):
    message = chat_req.message.strip()
    session_id = chat_req.session_id.strip()
    if not message or not session_id:
        return {"response": "Both message and session_id are required."}
    try:
        response = chat(message, session_id)
        return {"response": response}
    except Exception as e:
        return {"response": f"Error: {str(e)}"}