trygithubactions / main.py
subashpoudel's picture
Inferenced with web page
85a68fb
raw
history blame
3.04 kB
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
# })