Skip to content

Waldiez

Waldiez data class.

A Waldiez class contains all the information needed to generate and run an autogen workflow. It has the model/LLM configurations, the agent definitions and their optional additional tools to be used.

Waldiez dataclass

Waldiez(flow: WaldiezFlow)

Waldiez data class.

It contains all the information to generate and run an autogen workflow.

agents property

Get the agents.

Yields:

TypeDescription
WaldiezAgent

The flow agents.

cache_seed property

cache_seed: Optional[int]

Get the cache seed.

description property

description: str

Get the flow description.

from_dict classmethod

from_dict(
    data: dict[str, Any],
    flow_id: Optional[str] = None,
    name: Optional[str] = None,
    description: Optional[str] = None,
    tags: Optional[list[str]] = None,
    requirements: Optional[list[str]] = None,
) -> Waldiez

Create a Waldiez from dict.

Parameters:

NameTypeDescriptionDefault
datadict[str, Any]

The data.

required
flow_idOptional[str]

The flow id, by default None (retrieved from data or generated).

None
nameOptional[str]

The name, by default None (retrieved from data).

None
descriptionOptional[str]

The description, by default None (retrieved from data).

None
tagsOptional[list[str]]

The tags, by default None (retrieved from data).

None
requirementsOptional[list[str]]

The requirements, by default None (retrieved from data).

None

Returns:

TypeDescription
Waldiez

The Waldiez.

Source code in waldiez/models/waldiez.py
@classmethod
def from_dict(
    cls,
    data: dict[str, Any],
    flow_id: Optional[str] = None,
    name: Optional[str] = None,
    description: Optional[str] = None,
    tags: Optional[list[str]] = None,
    requirements: Optional[list[str]] = None,
) -> "Waldiez":
    """Create a Waldiez from dict.

    Parameters
    ----------
    data : dict[str, Any]
        The data.
    flow_id : Optional[str], optional
        The flow id, by default None (retrieved from data or generated).
    name : Optional[str], optional
        The name, by default None (retrieved from data).
    description : Optional[str], optional
        The description, by default None (retrieved from data).
    tags : Optional[list[str]], optional
        The tags, by default None (retrieved from data).
    requirements : Optional[list[str]], optional
        The requirements, by default None (retrieved from data).

    Returns
    -------
    Waldiez
        The Waldiez.
    """
    flow = get_flow_data(
        data,
        flow_id=flow_id,
        name=name,
        description=description,
        tags=tags,
        requirements=requirements,
    )
    validated = WaldiezFlow.model_validate(flow)
    return cls(flow=validated)  # pyright: ignore

get_flow_env_vars

get_flow_env_vars() -> list[tuple[str, str]]

Get the flow environment variables.

Returns:

TypeDescription
list[tuple[str, str]]

The environment variables for the flow.

Source code in waldiez/models/waldiez.py
def get_flow_env_vars(self) -> list[tuple[str, str]]:
    """Get the flow environment variables.

    Returns
    -------
    list[tuple[str, str]]
        The environment variables for the flow.
    """
    env_vars: list[tuple[str, str]] = []
    for tool in self.tools:
        for secret_key, secret_value in tool.secrets.items():
            env_vars.append((secret_key, secret_value))
    for model in self.models:
        api_env_key = model.api_key_env_key
        api_key = model.api_key
        if api_env_key and api_key:  # pragma: no branch
            env_vars.append((api_env_key, api_key))
    return env_vars

get_group_chat_members

get_group_chat_members(
    agent: WaldiezAgent,
) -> list[WaldiezAgent]

Get the chat members that connect to a group chat manager agent.

Parameters:

NameTypeDescriptionDefault
agentWaldiezAgent

The agent (group chat manager).

required

Returns:

TypeDescription
List[WaldiezAgent]

The group chat members.

Source code in waldiez/models/waldiez.py
def get_group_chat_members(self, agent: WaldiezAgent) -> list[WaldiezAgent]:
    """Get the chat members that connect to a group chat manager agent.

    Parameters
    ----------
    agent : WaldiezAgent
        The agent (group chat manager).

    Returns
    -------
    List[WaldiezAgent]
        The group chat members.
    """
    if not agent.is_group_manager:
        return []
    return self.flow.get_group_chat_members(agent.id)

get_root_group_manager

get_root_group_manager() -> WaldiezGroupManager

Get the root group manager agent.

Returns:

TypeDescription
WaldiezGroupManager

The root group manager agent.

Raises:

TypeDescription
ValueError

If the root group manager agent is not found.

Source code in waldiez/models/waldiez.py
def get_root_group_manager(self) -> WaldiezGroupManager:
    """Get the root group manager agent.

    Returns
    -------
    WaldiezGroupManager
        The root group manager agent.

    Raises
    ------
    ValueError
        If the root group manager agent is not found.
    """
    return self.flow.get_root_group_manager()

has_captain_agents property

has_captain_agents: bool

Check if the flow has captain agents.

has_multimodal_agents property

has_multimodal_agents: bool

Check if the flow has multimodal agents.

has_rag_agents property

has_rag_agents: bool

Check if the flow has RAG agents.

id property

id: str

Get the flow id.

info property

info: WaldiezFlowInfo

Get the flow info.

initial_chats property

initial_chats: list[WaldiezAgentConnection]

Get the chats.

is_async property

is_async: bool

Check if the flow is asynchronous.

is_single_agent_mode property

is_single_agent_mode: bool

Check if the flow is single agent mode.

load classmethod

load(
    waldiez_file: str | Path,
    name: Optional[str] = None,
    description: Optional[str] = None,
    tags: Optional[list[str]] = None,
    requirements: Optional[list[str]] = None,
) -> Waldiez

Load a Waldiez from a file.

Parameters:

NameTypeDescriptionDefault
waldiez_fileUnion[str, Path]

The Waldiez file.

required
nameOptional[str]

The name, by default None.

None
descriptionOptional[str]

The description, by default None.

None
tagsOptional[list[str]]

The tags, by default None.

None
requirementsOptional[list[str]]

The requirements, by default None.

None

Returns:

TypeDescription
Waldiez

The Waldiez.

Raises:

TypeDescription
ValueError

If the file is not found or invalid JSON.

Source code in waldiez/models/waldiez.py
@classmethod
def load(
    cls,
    waldiez_file: str | Path,
    name: Optional[str] = None,
    description: Optional[str] = None,
    tags: Optional[list[str]] = None,
    requirements: Optional[list[str]] = None,
) -> "Waldiez":
    """Load a Waldiez from a file.

    Parameters
    ----------
    waldiez_file : Union[str, Path]
        The Waldiez file.
    name : Optional[str], optional
        The name, by default None.
    description : Optional[str], optional
        The description, by default None.
    tags : Optional[list[str]], optional
        The tags, by default None.
    requirements : Optional[list[str]], optional
        The requirements, by default None.

    Returns
    -------
    Waldiez
        The Waldiez.

    Raises
    ------
    ValueError
        If the file is not found or invalid JSON.
    """
    data: dict[str, Any] = {}
    if not Path(waldiez_file).exists():
        raise ValueError(f"File not found: {waldiez_file}")
    with open(waldiez_file, "r", encoding="utf-8") as file:
        try:
            data = json.load(file)
        except json.decoder.JSONDecodeError as error:
            raise ValueError(f"Invalid JSON: {waldiez_file}") from error
    return cls.from_dict(
        data,
        name=name,
        description=description,
        tags=tags,
        requirements=requirements,
    )

model_dump_json

model_dump_json(
    by_alias: bool = True, indent: Optional[int] = None
) -> str

Get the model dump json.

We use by_alias=True by default to use the alias (toCamel).

Parameters:

NameTypeDescriptionDefault
by_aliasbool

Use alias (toCamel), by default True.

True
indentOptional[int]

The indent, by default None.

None

Returns:

TypeDescription
str

The model dump json.

Source code in waldiez/models/waldiez.py
def model_dump_json(
    self, by_alias: bool = True, indent: Optional[int] = None
) -> str:
    """Get the model dump json.

    We use `by_alias=True` by default to use the alias (toCamel).

    Parameters
    ----------
    by_alias : bool, optional
        Use alias (toCamel), by default True.
    indent : Optional[int], optional
        The indent, by default None.

    Returns
    -------
    str
        The model dump json.
    """
    return self.flow.model_dump_json(by_alias=by_alias, indent=indent)

models property

Get the models.

Yields:

TypeDescription
WaldiezModel

The flow models.

name property

name: str

Get the flow name.

requirements property

requirements: list[str]

Get the flow requirements.

tags property

tags: list[str]

Get the flow tags.

tools property

Get the flow tools.

Yields:

TypeDescription
WaldiezTool

The tools.