File size: 1,278 Bytes
32f259e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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 {},
    )