Skip to main content

Make AG2 Agents Collaborate: Drag, Drop, and Orchestrate with Waldiez.

Project description

Waldiez

Coverage Status PyPI Downloads PyPI version npm version

Make AG2 Agents Collaborate: Drag, Drop, and Orchestrate with Waldiez

Design AI Agents and translate a Waldiez flow to AG2:

Features

  • Convert .waldiez flows to .py or .ipynb
  • Run a .waldiez flow
  • Store the runtime logs of a flow to csv for further analysis

Installation

Python

On PyPI:

python -m pip install waldiez

From the repository:

python -m pip install git+https://github.com/waldiez/waldiez.git

React Component

If you’re looking for the React component, please refer to README.npm.

Note: The React component is only for creating and editing flows — it is not used for converting or running flows (that functionality is handled by the Python package).

To add the waldiez library to your app:

npm install @waldiez/react
# or
yarn add @waldiez/react
# or
pnpm add @waldiez/react
# or
bun add @waldiez/react

Usage

UI Options

  • For creating-only (no exporting or running) waldiez flows, you can use the playground at https://waldiez.github.io.
  • There is also a jupyterlab extension here: waldiez/jupyter
  • You also can use the vscode extension:
  • Finally, you can use waldiez-studio, which includes a FastAPI app to handle the conversion and running of waldiez flows.

The jupyterlab extension and waldiez studio are also provided as extras in the main package.

pip install waldiez[studio]  # or pip install waldiez_studio
pip install waldiez[jupyter]  # or pip install waldiez_jupyter
# or both
pip install waldiez[studio,jupyter]

CLI

# Convert a Waldiez flow to a python script or a jupyter notebook
waldiez convert --file /path/to/a/flow.waldiez --output /path/to/an/output/flow[.py|.ipynb]
# Convert and run the script, optionally force generation if the output file already exists
waldiez run --file /path/to/a/flow.waldiez --output /path/to/an/output/flow[.py|.ipynb] [--force]

Using docker/podman

🪟 Windows (PowerShell with Docker or Podman Desktop)

$hostInputFile = "C:\Users\YourName\Documents\flow.waldiez"
$containerInputFile = "/home/waldiez/workspace/flow.waldiez"
$hostOutputDir = "C:\Users\YourName\Documents\waldiez_output"
$containerOutputDir = "/home/waldiez/output"
$containerOutputFile = "/home/waldiez/output/flow.ipynb"

# Convert a flow to Jupyter Notebook
docker run --rm `
  -v "$hostInputFile:$containerInputFile" `
  -v "$hostOutputDir:$containerOutputDir" `
  waldiez/waldiez convert --file $hostInputFile --output $containerOutputFile

# Convert and run it
docker run --rm `
  -v "$flow:/home/waldiez/workspace/flow.waldiez" `
  -v "$output:/output" `
  waldiez/waldiez run --file $hostInputFile --output $containerOutputFile

Note If using Hyper-V mode, make sure your files are in a shared folder Docker Desktop has access to.
More info: https://docs.docker.com/desktop/settings/windows/#file-sharing

🐧 Linux/macOS/WSL (Docker or Podman)

CONTAINER_COMMAND=docker # or podman
# Assuming ./flow.waldiez exists
HOST_INPUT="$(pwd)/flow.waldiez"
CONTAINER_INPUT="/home/waldiez/workspace/flow.waldiez"
HOST_OUTPUT_DIR="$(pwd)/output"
CONTAINER_OUTPUT_DIR="/home/waldiez/output"
mkdir -p ${HOST_OUTPUT_DIR}

# Convert a flow to a Python script
$CONTAINER_COMMAND run --rm \
  -v ${HOST_INPUT}:${CONTAINER_INPUT} \
  -v ${HOST_OUTPUT_DIR}:${CONTAINER_OUTPUT_DIR} \
  waldiez/waldiez convert --file $HOST_INPUT --output ${CONTAINER_OUTPUT_DIR}/flow.py

# Convert to a Jupyter Notebook instead
$CONTAINER_COMMAND run --rm \
  -v ${HOST_INPUT}:${CONTAINER_INPUT} \
  -v ${HOST_OUTPUT_DIR}:${CONTAINER_OUTPUT_DIR} \
  waldiez/waldiez convert --file $HOST_INPUT --output ${CONTAINER_OUTPUT_DIR}/flow.ipynb

# Convert and run it (force override generated file if it exists)
$CONTAINER_COMMAND run --rm -it \
  -v ${HOST_INPUT}:${CONTAINER_INPUT} \
  -v ${HOST_OUTPUT_DIR}:${CONTAINER_OUTPUT_DIR} \
  waldiez/waldiez run --file $HOST_INPUT --force

As a library

Generate a script or a notebook from a flow

# Export a Waldiez flow to a python script or a jupyter notebook
from pathlib import Path
from waldiez import WaldiezExporter
flow_path = "/path/to/a/flow.waldiez"
output_path = "/path/to/an/output.py"  # or .ipynb
exporter = WaldiezExporter.load(Path(flow_path))
exporter.export(output_path)

Run a flow

# Run a flow
from pathlib import Path
from waldiez import WaldiezRunner
flow_path = "/path/to/a/flow.waldiez"
output_path = "/path/to/an/output.py"
runner = WaldiezRunner.load(Path(flow_path))
runner.run(output_path=output_path)

Known Conflicts

  • autogen-agentchat: This package conflicts with ag2. Ensure that autogen-agentchat is uninstalled before installing waldiez. If you have already installed autogen-agentchat, you can uninstall it with the following command:

    pip uninstall autogen-agentchat -y
    

    If already installed waldiez you might need to reinstall it after uninstalling autogen-agentchat:

    pip install --force --no-cache waldiez ag2
    

See also

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Panagiotis Kasnesis
Panagiotis Kasnesis

📆 🔬
Lazaros Toumanidis
Lazaros Toumanidis

💻
Stella Ioannidou
Stella Ioannidou

📣 🎨
Amalia Contiero
Amalia Contiero

💻 🐛
Christos Chatzigeorgiou
Christos Chatzigeorgiou

💻
Kunal Mhaske
Kunal Mhaske

🐛
Add your contributions

License

This project is licensed under the Apache License, Version 2.0 (Apache-2.0).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

waldiez-0.6.7.tar.gz (308.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

waldiez-0.6.7-py3-none-any.whl (461.4 kB view details)

Uploaded Python 3

File details

Details for the file waldiez-0.6.7.tar.gz.

File metadata

  • Download URL: waldiez-0.6.7.tar.gz
  • Upload date:
  • Size: 308.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for waldiez-0.6.7.tar.gz
Algorithm Hash digest
SHA256 865492f47e977685ada54ad2d992263a5086ad49af90cd38d3442c1ccf3e61f8
MD5 9949ed23e0ff03c21b548d530f35f4e0
BLAKE2b-256 3c3115cf167d15c698782e7910b137e94a8a40cd412d1d930089664e0d7846ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for waldiez-0.6.7.tar.gz:

Publisher: publish.yaml on waldiez/waldiez

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file waldiez-0.6.7-py3-none-any.whl.

File metadata

  • Download URL: waldiez-0.6.7-py3-none-any.whl
  • Upload date:
  • Size: 461.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for waldiez-0.6.7-py3-none-any.whl
Algorithm Hash digest
SHA256 133456be697609d662b5428425b96bb5709cb8a64a92ca9c889501a79ef64639
MD5 511135c7642186a62daf4e373972297e
BLAKE2b-256 a161f09d94d76c1a7a9bc253ce0086c821701a218052564a7b6adcb9cc063ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for waldiez-0.6.7-py3-none-any.whl:

Publisher: publish.yaml on waldiez/waldiez

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page