Skip to content

Conversation

@starpit
Copy link
Member

@starpit starpit commented Mar 21, 2025

This also improves error handling in the rust code.

Very primitive support at the moment. No tool calling (yet).

pdl compile beeai input.json -o output.pdl

Where, for now, input.json is generated by hand from a bee program using this monkey patch:

def dry_run(inputs):
    class DryRunAnswer:
        def __init__(self):
            import jsonpickle
            self.final_answer = jsonpickle.encode({"inputs": inputs, "workflow": workflow}, make_refs=False)
    class DryRunResult:
        result = DryRunAnswer()
    class DryRun:
        def on(self,a,b):
            return self
        async def _run_tasks(self):
            return DryRunResult()
        def __await__(self):
            return self._run_tasks().__await__()
    class DryRunContext:
        @staticmethod
        def enter():
            return DryRun()
    return DryRunContext.enter()
workflow.run = dry_run

and with patches to beeai_framework python code to preserve some lexical state that is hidden in a closure. the following does so by adding a meta field to capture the locals() of add_agent()

To workflows/workflow.py:

    def add_step(self, step_name: K, runnable: WorkflowHandler[T, K], meta: dict) -> "Workflow[T, K]":
...
        self.steps[step_name] = WorkflowStepDefinition[T, K](handler=runnable, meta=meta)

To workflows.types.py

class WorkflowStepDefinition(BaseModel, Generic[T, K]):
    meta: dict # add this
    handler: WorkflowHandler[T, K]

To workflows/agent.py add_agent()

        meta = locals()
        del meta["self"]
...
        self.workflow.add_step(name or f"Agent{''.join(random.choice(string.ascii_letters) for _ in range(4))}", step, meta)

Signed-off-by: Nick Mitchell <[email protected]>

This also improves error handling in the rust code.

Signed-off-by: Nick Mitchell <[email protected]>
@starpit starpit merged commit 8653808 into IBM:main Mar 21, 2025
6 checks passed
@starpit starpit deleted the bee branch March 21, 2025 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant