Spaces:
Sleeping
Sleeping
File size: 1,455 Bytes
6cbca40 |
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 |
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")
@router.get("/scenarios", status_code=status.HTTP_200_OK)
async def list_scenarios():
return JSONResponse(content=get_scenarios())
@router.post("/roleplay", status_code=status.HTTP_200_OK)
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)
|