File size: 1,088 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
from __future__ import annotations

import logging
from typing import Any, Dict

from ..state import AgentState

_LOGGER_NAME = "agentic_multiwriter"


def get_logger() -> logging.Logger:
    logger = logging.getLogger(_LOGGER_NAME)
    if not logger.handlers:
        handler = logging.StreamHandler()
        formatter = logging.Formatter(
            "[%(asctime)s] %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S"
        )
        handler.setFormatter(formatter)
        logger.addHandler(handler)
        logger.setLevel(logging.INFO)
    return logger


def log_state_summary(state: AgentState, prefix: str = "") -> None:
    logger = get_logger()
    topic = state.get("topic", "")
    mode = state.get("mode", "")
    n_snippets = len(state.get("research_snippets", []) or [])
    logger.info(
        "%sState summary - topic='%s', mode='%s', research_snippets=%d",
        f"{prefix} " if prefix else "",
        topic,
        mode,
        n_snippets,
    )
    meta: Dict[str, Any] = state.get("meta", {}) or {}
    if meta:
        logger.info("%sMeta: %s", prefix, meta)