Spaces:
Sleeping
Sleeping
| 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=["*"], | |
| ) | |
| 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 | |
| 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)}"} | |