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 needed to convert or run flows (that functionality is handled by the Python package).

To include waldiez on your website using CDN, here is a simple example:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <script type="importmap">
          {
            "imports": {
              "react": "https://esm.sh/react@19.1.0",
              "react-dom/client": "https://esm.sh/react-dom@19.1.0/client",
              "@waldiez/react": "https://esm.sh/@waldiez/react"
            }
          }
        </script>
        <style>
            body {
                margin: 0;
                padding: 0;
                justify-content: center;
                background-color: white;
                color: black;
            }
            @media (prefers-color-scheme: dark) {
                body {
                    background-color: black;
                    color: white;
                }
            }
            #loading {
                width: 100vw;
                height: 100vh;
                padding: 0;
                margin: 0;
                display: flex;
                align-items: center;
            }
            #root {
                display: flex;
                flex-direction: column;
                width: 100vw;
                height: 100vh;
            }
            #waldiez-root {
                position: relative;
                width: 80vw;
                height: 80vh;
                margin: auto;
            }
        </style>
        <link rel="stylesheet" href="https://esm.sh/@waldiez/react/dist/@waldiez.css">
    </head>
    <body>
        <div id="root"></div>
        <div id="loading">
            Loading...
        </div>
        <script type="module" src="https://esm.sh/tsx"></script>
        <script type="text/babel">
          import { createRoot } from "react-dom/client"
           import { Waldiez } from "@waldiez/react";
           const root = document.getElementById("root");
           document.getElementById("loading").style.display = "none";
           createRoot(root).render(
                <div id="waldiez-root">
                    <Waldiez />
                </div>
            )
        </script>
    </body>
</html>

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
# Asuming ./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

Export a flow

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

Run a flow

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

Tools

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

💻
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.4.8.tar.gz (175.2 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.4.8-py3-none-any.whl (278.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for waldiez-0.4.8.tar.gz
Algorithm Hash digest
SHA256 a861a7d68b3c43d1aa1e0b02e88c97b753ba2acad23f61f58b190ef911bb92ef
MD5 bc815b2a5fac5117c855835341479620
BLAKE2b-256 3f337dad19c808243cd78d7e785d465d6a19c24b33582747951c91c3aa205de8

See more details on using hashes here.

Provenance

The following attestation bundles were made for waldiez-0.4.8.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.4.8-py3-none-any.whl.

File metadata

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

File hashes

Hashes for waldiez-0.4.8-py3-none-any.whl
Algorithm Hash digest
SHA256 fe72a12a8b045cd02d0eba82ae7e950b9669a0ca8669416e25c4fed0266061f5
MD5 5b2f6c13c3040a33e49f19fe5bc2d984
BLAKE2b-256 e226e6c5871bd57a192389c456970cc80e4d4698bfbeb59126716dd20bed1030

See more details on using hashes here.

Provenance

The following attestation bundles were made for waldiez-0.4.8-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