Kheem Dharmani
Initial commit: Agentic Multiwriter
32f259e
from __future__ import annotations
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from ..state import GenerateRequest, GenerateResponse
from ..graph.router import run_pipeline
from ..tools import get_logger
logger = get_logger()
app = FastAPI(
title="Agentic Multiwriter API",
version="0.1.0",
description="Multi-agent research & writing pipeline using LangGraph and LLMs.",
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/health")
def health() -> dict:
return {"status": "ok"}
@app.post("/generate", response_model=GenerateResponse)
def generate(payload: GenerateRequest) -> GenerateResponse:
logger.info("API: /generate called with topic='%s', mode='%s'", payload.topic, payload.mode)
state = run_pipeline(topic=payload.topic, mode=payload.mode)
return GenerateResponse(
topic=state.get("topic", payload.topic),
mode=state.get("mode", payload.mode),
outline=state.get("outline", []) or [],
draft=state.get("draft", "") or "",
revised_draft=state.get("revised_draft", "") or "",
final_output=state.get("final_output", "") or "",
meta=state.get("meta", {}) or {},
)