Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, status, Depends, BackgroundTasks, HTTPException | |
| from fastapi.responses import JSONResponse | |
| from src.utils.logger import logger | |
| from src.agents.role_play.func import create_agents | |
| from pydantic import BaseModel, Field | |
| from typing import List, Dict, Any | |
| from src.agents.role_play.scenarios import get_scenarios, get_scenario_by_id | |
| router = APIRouter(prefix="/ai", tags=["AI"]) | |
| class RoleplayRequest(BaseModel): | |
| query: str = Field(..., description="User's query for the AI agent") | |
| session_id: str = Field( | |
| ..., description="Session ID for tracking user interactions" | |
| ) | |
| scenario: Dict[str, Any] = Field(..., description="The scenario for the roleplay") | |
| async def list_scenarios(): | |
| return JSONResponse(content=get_scenarios()) | |
| async def roleplay(request: RoleplayRequest): | |
| scenario = request.scenario | |
| if not scenario: | |
| raise HTTPException(status_code=400, detail="Scenario not provided") | |
| print("alo", scenario) | |
| print(create_agents(scenario).get_state({"configurable": {"thread_id": request.session_id}})) | |
| response = await create_agents(scenario).ainvoke( | |
| { | |
| "messages": [request.query], | |
| }, | |
| {"configurable": {"thread_id": request.session_id}}, | |
| ) | |
| return JSONResponse(content=response["messages"][-1].content) | |