Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| import json | |
| import logging | |
| from typing import Any, Dict | |
| from langchain_core.messages import HumanMessage | |
| from ai_business_automation_agent.prompts.reporting_prompt import REPORTING_PROMPT | |
| from ai_business_automation_agent.utils import append_agent_log, parse_llm_json | |
| logger = logging.getLogger(__name__) | |
| def run_reporting_agent(state: Dict[str, Any], llm) -> Dict[str, Any]: | |
| prompt = REPORTING_PROMPT.format( | |
| email_content=state.get("email_content", ""), | |
| extracted_json=json.dumps(state.get("extracted_data") or {}, ensure_ascii=False), | |
| vendor_verification_json=json.dumps(state.get("vendor_verification") or {}, ensure_ascii=False), | |
| validation_json=json.dumps(state.get("validation_status") or {}, ensure_ascii=False), | |
| decision_json=json.dumps(state.get("decision") or {}, ensure_ascii=False), | |
| erp_json=json.dumps(state.get("erp_update_status") or {}, ensure_ascii=False), | |
| ) | |
| resp = llm.invoke([HumanMessage(content=prompt)]) | |
| text = getattr(resp, "content", str(resp)) | |
| parsed, err = parse_llm_json(text) | |
| updates: Dict[str, Any] = {} | |
| if err: | |
| logger.warning("Reporting JSON parse error: %s", err) | |
| updates["report"] = ( | |
| "REPORT GENERATION FAILED\n\n" | |
| f"Error: {err}\n\n" | |
| "Raw model output:\n" | |
| f"{text}" | |
| ) | |
| updates.update(append_agent_log(state, agent="reporting", event="error", payload={"error": err})) | |
| else: | |
| updates["report"] = parsed.get("report", "") | |
| updates.update(append_agent_log(state, agent="reporting", event="ok", payload=parsed)) | |
| updates.update(append_agent_log(state, agent="reporting", event="prompt", payload={"prompt": prompt})) | |
| updates.update(append_agent_log(state, agent="reporting", event="raw_response", payload={"text": text})) | |
| return updates | |