Skip to content

TransitionGraph

autogen.beta.network.transitions.TransitionGraph dataclass #

TransitionGraph(initial_speaker, transitions=list(), default_target=TerminateTarget(), max_turns=None)

The orchestrator script: initial speaker + transitions + default fall-through + optional turn cap.

initial_speaker instance-attribute #

initial_speaker

transitions class-attribute instance-attribute #

transitions = field(default_factory=list)

default_target class-attribute instance-attribute #

default_target = field(default_factory=TerminateTarget)

max_turns class-attribute instance-attribute #

max_turns = None

to_dict #

to_dict()

Serialise to a JSON-friendly dict for SessionMetadata.knobs.

Source code in autogen/beta/network/transitions.py
def to_dict(self) -> dict[str, Any]:
    """Serialise to a JSON-friendly dict for ``SessionMetadata.knobs``."""
    return {
        "initial_speaker": self.initial_speaker,
        "transitions": [_transition_to_dict(t) for t in self.transitions],
        "default_target": _target_to_dict(self.default_target),
        "max_turns": self.max_turns,
    }

dumps #

dumps()

JSON string form of :meth:to_dict.

Source code in autogen/beta/network/transitions.py
def dumps(self) -> str:
    """JSON string form of :meth:`to_dict`."""
    return json.dumps(self.to_dict(), sort_keys=True)

loads classmethod #

loads(data, *, registry=None)

Inverse of :meth:to_dict / :meth:dumps.

Accepts either a JSON string or already-parsed dict. registry defaults to the process-wide default — pass an explicit instance when you need isolation (e.g. multi-tenant tests) or a registry seeded with custom targets / conditions.

Source code in autogen/beta/network/transitions.py
@classmethod
def loads(
    cls,
    data: str | dict[str, Any],
    *,
    registry: "TransitionRegistry | None" = None,
) -> "TransitionGraph":
    """Inverse of :meth:`to_dict` / :meth:`dumps`.

    Accepts either a JSON string or already-parsed dict. ``registry``
    defaults to the process-wide default — pass an explicit instance
    when you need isolation (e.g. multi-tenant tests) or a registry
    seeded with custom targets / conditions.
    """
    if isinstance(data, str):
        data = json.loads(data)
    reg = registry if registry is not None else TransitionRegistry.default()
    return cls(
        initial_speaker=data["initial_speaker"],
        transitions=[_transition_from_dict(t, reg) for t in data.get("transitions", [])],
        default_target=reg.target_from_dict(data.get("default_target")),
        max_turns=data.get("max_turns"),
    )

round_robin classmethod #

round_robin(participants, *, max_turns=None)

Cycle through participants in order; terminate after max_turns.

Source code in autogen/beta/network/transitions.py
@classmethod
def round_robin(
    cls,
    participants: list[str],
    *,
    max_turns: int | None = None,
) -> "TransitionGraph":
    """Cycle through ``participants`` in order; terminate after ``max_turns``."""
    if not participants:
        raise WorkflowGraphError("round_robin requires at least 1 participant")
    return cls(
        initial_speaker=participants[0],
        transitions=[Transition(when=Always(), then=RoundRobinTarget())],
        default_target=TerminateTarget(reason="round_robin_complete"),
        max_turns=max_turns,
    )

sequence classmethod #

sequence(steps)

Pipeline: steps[0]steps[1] → ... → terminate.

Source code in autogen/beta/network/transitions.py
@classmethod
def sequence(cls, steps: list[str]) -> "TransitionGraph":
    """Pipeline: ``steps[0]`` → ``steps[1]`` → ... → terminate."""
    if not steps:
        raise WorkflowGraphError("sequence requires at least 1 step")
    transitions: list[Transition] = []
    for i in range(len(steps) - 1):
        transitions.append(
            Transition(
                when=FromSpeaker(steps[i]),
                then=AgentTarget(steps[i + 1]),
            )
        )
    return cls(
        initial_speaker=steps[0],
        transitions=transitions,
        default_target=TerminateTarget(reason="sequence_complete"),
        max_turns=len(steps),
    )