File size: 3,036 Bytes
be3a5c4
 
 
 
85a68fb
be3a5c4
 
 
 
 
 
85a68fb
be3a5c4
 
 
 
 
85a68fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
#         })