AmaanP314's picture
root endpoint
94a3dae verified
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)}"}