Run_code_api / src /apis /routes /lesson_route.py
ABAO77's picture
Implement lesson practice agent and related functionality
c0a7f25
raw
history blame
1.63 kB
from fastapi import APIRouter, status, Depends, BackgroundTasks, HTTPException
from fastapi.responses import JSONResponse
from src.utils.logger import logger
from pydantic import BaseModel, Field
from typing import List, Dict, Any, Optional
from src.agents.lesson_practice.flow import lesson_practice_agent
import json
import os
import uuid
from datetime import datetime
router = APIRouter(prefix="/lesson", tags=["AI"])
class LessonPracticeRequest(BaseModel):
unit: str = Field(..., description="Unit of the lesson")
vocabulary: list = Field(..., description="Vocabulary for the lesson")
key_structures: list = Field(..., description="Key structures for the lesson")
practice_questions: list = Field(
..., description="Practice questions for the lesson"
)
student_level: str = Field("beginner", description="Student's level of English")
query: str = Field(..., description="User query for the lesson")
session_id: str = Field(..., description="Session ID for the lesson")
@router.post("/chat")
async def chat(request: LessonPracticeRequest):
response = await lesson_practice_agent().ainvoke(
{
"unit": request.unit,
"vocabulary": request.vocabulary,
"key_structures": request.key_structures,
"practice_questions": request.practice_questions,
"student_level": request.student_level,
"messages": [request.query],
},
{"configurable": {"thread_id": request.session_id}},
)
return JSONResponse(
content=response["messages"][-1].content, status_code=status.HTTP_200_OK
)