Spaces:
Sleeping
Sleeping
| import logging | |
| import sys | |
| from src.Blog.models.State_model import State | |
| from src.Blog.llm import llm | |
| from exception import MyException | |
| from src.Blog.models.Plan_model import Plan | |
| from src.Blog.prompts import ORCH_SYSTEM | |
| from langchain_core.messages import SystemMessage, HumanMessage | |
| from utils.asyncHandler import asyncHandler | |
| async def orchestrator_node(state: State) -> dict: | |
| logging.info("Entering orchestrator_node") | |
| try: | |
| planner = llm.with_structured_output(Plan) | |
| evidence = state.get("evidence", []) | |
| mode = state.get("mode", "closed_book") | |
| logging.debug(f"Mode: {mode}, Evidence count: {len(evidence)}") | |
| plan = await planner.ainvoke( | |
| [ | |
| SystemMessage(content=ORCH_SYSTEM), | |
| HumanMessage( | |
| content=( | |
| f"Topic: {state['topic']}\n" | |
| f"Mode: {mode}\n\n" | |
| f"Evidence (ONLY use for fresh claims; may be empty):\n" | |
| f"{[e.model_dump() for e in evidence][:16]}" | |
| ) | |
| ), | |
| ] | |
| ) | |
| logging.info(f"Orchestrator plan created: {plan.blog_title} with {len(plan.tasks)} tasks.") | |
| return {"plan": plan} | |
| except Exception as e: | |
| logging.error(f"Error in orchestrator_node: {str(e)}") | |
| raise MyException(e, sys) |