Kheem Dharmani
Initial commit: Agentic Multiwriter
32f259e
from __future__ import annotations
import time
from ..state import AgentState
from ..models import LLMClient, WRITER_PROMPT_TEMPLATE
from ..tools import get_logger, log_state_summary
logger = get_logger()
def writer_node(state: AgentState) -> AgentState:
start = time.time()
topic = state.get("topic", "")
snippets = state.get("research_snippets", []) or []
joined_snippets = "\n\n".join(
f"- {s['snippet']} (source: {s['title']}{s['url']})" for s in snippets
)
client = LLMClient()
system_prompt = "You are a precise and structured writer who follows instructions carefully."
user_prompt = WRITER_PROMPT_TEMPLATE.format(topic=topic, snippets=joined_snippets)
logger.info("Writer: generating first draft...")
draft = client.generate(system_prompt=system_prompt, user_prompt=user_prompt)
meta = state.get("meta", {}) or {}
meta["writer_time_sec"] = round(time.time() - start, 3)
new_state: AgentState = {
**state,
"draft": draft,
"meta": meta,
}
log_state_summary(new_state, prefix="Writer")
return new_state