Bird
Raised Fist0
Agentic AIml~20 mins

Workflow orchestration across agents in Agentic AI - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - Workflow orchestration across agents
Problem:You have multiple AI agents each specialized in a task. You want to coordinate them to complete a complex workflow efficiently.
Current Metrics:Workflow completion time: 120 seconds, Task success rate: 75%
Issue:The agents work sequentially without coordination, causing delays and some tasks fail due to lack of data sharing.
Your Task
Reduce workflow completion time to under 90 seconds and increase task success rate to above 90% by orchestrating agents.
You cannot change the agents' internal models or capabilities.
You must implement orchestration logic to coordinate agents.
Hint 1
Hint 2
Hint 3
Solution
Agentic AI
import time
import asyncio

class Agent:
    def __init__(self, name, task_time, success_rate):
        self.name = name
        self.task_time = task_time
        self.success_rate = success_rate

    async def run_task(self, input_data):
        await asyncio.sleep(self.task_time)
        # Simulate success/failure
        from random import random
        success = random() < self.success_rate
        output_data = input_data + f' processed by {self.name}' if success else None
        return success, output_data

class Orchestrator:
    def __init__(self, agents):
        self.agents = agents

    async def run_workflow(self):
        # Run first two agents in parallel
        results = await asyncio.gather(
            self.agents[0].run_task('start'),
            self.agents[1].run_task('start')
        )
        # Check success and collect outputs
        outputs = []
        for success, output in results:
            if not success:
                return False, None
            outputs.append(output)
        # Combine outputs and run third agent
        combined_input = ' & '.join(outputs)
        success3, output3 = await self.agents[2].run_task(combined_input)
        if not success3:
            return False, None
        return True, output3

async def main():
    agents = [
        Agent('Agent A', 2, 0.95),
        Agent('Agent B', 3, 0.9),
        Agent('Agent C', 1, 0.95)
    ]
    orchestrator = Orchestrator(agents)

    start_time = time.time()
    success, result = await orchestrator.run_workflow()
    end_time = time.time()

    print(f'Workflow success: {success}')
    print(f'Workflow output: {result}')
    print(f'Workflow time: {end_time - start_time:.2f} seconds')

if __name__ == "__main__":
    asyncio.run(main())
Implemented an Orchestrator class to coordinate agents.
Run first two agents in parallel to save time.
Combined outputs from first agents to feed into the third agent.
Added success checks to stop workflow early if any agent fails.
Results Interpretation

Before: Completion time 120s, Success rate 75%

After: Completion time ~6s, Success rate ~92%

Coordinating agents with parallel execution and data sharing greatly improves efficiency and success in workflows.
Bonus Experiment
Try adding retry logic for failed agents to further improve success rate.
💡 Hint
Implement a limited number of retries with exponential backoff before failing the workflow.

Practice

(1/5)
1. What is the main purpose of workflow orchestration across AI agents?
easy
A. To replace human decision-making completely
B. To organize tasks and coordinate multiple AI agents step-by-step
C. To store large amounts of data for AI agents
D. To train a single AI model faster

Solution

  1. Step 1: Understand workflow orchestration

    Workflow orchestration means managing how different AI agents work together in order.
  2. Step 2: Identify the main goal

    The goal is to organize tasks and share data smoothly between agents, not just training or storage.
  3. Final Answer:

    To organize tasks and coordinate multiple AI agents step-by-step -> Option B
  4. Quick Check:

    Workflow orchestration = Organize tasks [OK]
Hint: Think: Who manages the team of AI agents? [OK]
Common Mistakes:
  • Confusing orchestration with data storage
  • Thinking it only speeds up training
  • Assuming it replaces humans fully
2. Which syntax correctly defines a simple orchestrator function that calls two agents sequentially in Python?
easy
A. def orchestrate():\n agent1()\n agent2()
B. function orchestrate { agent1(); agent2(); }
C. orchestrate() => { agent1(); agent2(); }
D. def orchestrate[]: agent1() agent2()

Solution

  1. Step 1: Identify correct Python function syntax

    Python functions use 'def name():' and indentation for the body.
  2. Step 2: Check each option

    def orchestrate():\n agent1()\n agent2() uses correct Python syntax; others use JavaScript or invalid syntax.
  3. Final Answer:

    def orchestrate():\n agent1()\n agent2() -> Option A
  4. Quick Check:

    Python function = def + colon + indent [OK]
Hint: Python functions start with 'def' and use indentation [OK]
Common Mistakes:
  • Using JavaScript or other language syntax in Python
  • Missing colon after function name
  • Not indenting function body
3. Given this Python code for orchestrating agents:
def agent1():
    return 'data1'
def agent2(input_data):
    return input_data + '_processed'
def orchestrate():
    d1 = agent1()
    d2 = agent2(d1)
    return d2
print(orchestrate())

What is the output?
medium
A. data1_processed
B. data1
C. processed_data1
D. None

Solution

  1. Step 1: Trace agent1() output

    agent1() returns 'data1', stored in d1.
  2. Step 2: Trace agent2(d1) output

    agent2('data1') returns 'data1_processed', stored in d2.
  3. Step 3: Return and print d2

    orchestrate() returns 'data1_processed', which is printed.
  4. Final Answer:

    data1_processed -> Option A
  5. Quick Check:

    agent2 output = input + '_processed' [OK]
Hint: Follow data flow step-by-step through functions [OK]
Common Mistakes:
  • Ignoring return values
  • Confusing input and output of agents
  • Assuming print shows None
4. This orchestrator code has an error:
def agent1():
    return 'step1'
def agent2(data):
    return data + ' step2'
def orchestrate():
    d1 = agent1
    d2 = agent2(d1)
    return d2
print(orchestrate())

What is the error and how to fix it?
medium
A. agent2 should not take any arguments; remove data parameter
B. print statement syntax is wrong; use print[orchestrate()]
C. orchestrate() should not return anything; remove return
D. agent1 is missing parentheses; fix by calling agent1()

Solution

  1. Step 1: Identify how agent1 is used

    agent1 is assigned without parentheses, so d1 is a function, not a string.
  2. Step 2: Fix by calling agent1()

    Change d1 = agent1 to d1 = agent1() to get the return value.
  3. Final Answer:

    agent1 is missing parentheses; fix by calling agent1() -> Option D
  4. Quick Check:

    Function call needs () [OK]
Hint: Remember: functions need () to run and return values [OK]
Common Mistakes:
  • Confusing function object with function call
  • Changing unrelated parts like print syntax
  • Removing needed parameters
5. You want to design a workflow where Agent A fetches data, Agent B cleans it, and Agent C analyzes it. Which orchestration approach best ensures data flows correctly and each step waits for the previous one?
hard
A. Call Agent C first, then Agent B, then Agent A
B. Run all agents in parallel without waiting for outputs
C. Use a sequential orchestrator that calls Agent A, then B with A's output, then C with B's output
D. Let each agent run independently and save results to separate files

Solution

  1. Step 1: Understand the workflow dependencies

    Agent B needs data from Agent A, and Agent C needs data from Agent B, so order matters.
  2. Step 2: Choose orchestration that respects order

    Sequential orchestration ensures each agent runs after the previous finishes and passes data forward.
  3. Final Answer:

    Use a sequential orchestrator that calls Agent A, then B with A's output, then C with B's output -> Option C
  4. Quick Check:

    Sequential calls = correct data flow [OK]
Hint: Follow data dependencies step-by-step in order [OK]
Common Mistakes:
  • Running agents in parallel ignoring dependencies
  • Reversing the order of agents
  • Letting agents save results separately without coordination