from fastapi import FastAPI from pydantic import BaseModel from my_agent.agent import build_graph import pandas as pd from typing import Optional app = FastAPI() graph = build_graph() class RequestInput(BaseModel): query: list preferred_topics: Optional[list] = [] @app.post("/run") def run_graph(input_data: RequestInput): result = graph.invoke({'topic' : input_data.query}) return {'final_story': result['final_story']} # *********************INFERENCING PART**************************** # import asyncio # from fastapi import FastAPI, Request, Form # from fastapi.responses import HTMLResponse # from fastapi.staticfiles import StaticFiles # from fastapi.templating import Jinja2Templates # from my_agent.agent import build_graph # from starlette.concurrency import run_in_threadpool # app = FastAPI() # graph = build_graph() # app.mount("/static", StaticFiles(directory="static"), name="static") # templates = Jinja2Templates(directory="templates") # # Store session state in memory (simple approach) # session_data = { # "topic": [], # "preferred_topics": [], # } # @app.get("/", response_class=HTMLResponse) # def get_home(request: Request): # return templates.TemplateResponse("index.html", {"request": request}) # @app.post("/submit", response_class=HTMLResponse) # async def handle_query(request: Request, user_query: str = Form(...)): # session_data["topic"] = [user_query] # result = graph.invoke({"topic": session_data["topic"]}) # brainstorming = result.get("brainstroming_topics", [{}])[-1].values() # return templates.TemplateResponse("index.html", { # "request": request, # "topics": brainstorming, # "story": None, # "show_buttons": True # }) # @app.post("/select", response_class=HTMLResponse) # async def select_topics(request: Request, selected_topics: list[str] = Form(...), action: str = Form(...)): # session_data["preferred_topics"].append(selected_topics) # if action == "go_deeper": # result = await run_in_threadpool( # graph.invoke, # {"topic": session_data["topic"], "preferred_topics": session_data["preferred_topics"]} # ) # new_brainstorm = result.get("brainstroming_topics", [{}])[-1].values() # print() # print('*****RESPONSE IS GENERATED********') # print() # return templates.TemplateResponse("index.html", { # "request": request, # "topics": new_brainstorm, # "story": None, # "show_buttons": True # }) # elif action == "generate_final_story": # result = await run_in_threadpool( # graph.invoke, # {"topic": session_data["topic"], "preferred_topics": session_data["preferred_topics"]} # ) # return templates.TemplateResponse("index.html", { # "request": request, # "topics": [], # "story": result.get("final_story"), # "show_buttons": False # })