Bird
Raised Fist0
Agentic AIml~20 mins

Agent communication protocols 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 - Agent communication protocols
Problem:You have multiple AI agents that need to work together to solve a task. Currently, they communicate in a simple way that causes confusion and delays.
Current Metrics:Communication success rate: 60%, Task completion time: 120 seconds
Issue:The agents' communication protocol is inefficient, leading to misunderstandings and slow task completion.
Your Task
Improve the agent communication protocol to increase communication success rate to at least 85% and reduce task completion time below 90 seconds.
You cannot change the agents' core task-solving algorithms.
You must keep the communication protocol compatible with existing message formats.
Hint 1
Hint 2
Hint 3
Solution
Agentic AI
class Agent:
    def __init__(self, name):
        self.name = name
        self.message_queue = []
        self.waiting_ack = False

    def send_message(self, other_agent, message):
        if not self.waiting_ack:
            print(f"{self.name} sends: {message}")
            other_agent.receive_message(self, message)
            self.waiting_ack = True
        else:
            print(f"{self.name} is waiting for ack, cannot send message now.")

    def receive_message(self, sender, message):
        print(f"{self.name} received from {sender.name}: {message}")
        # Send acknowledgment back
        self.send_ack(sender)

    def send_ack(self, other_agent):
        print(f"{self.name} sends ACK")
        other_agent.receive_ack(self)

    def receive_ack(self, sender):
        print(f"{self.name} received ACK from {sender.name}")
        self.waiting_ack = False

# Example usage
agent1 = Agent("Agent1")
agent2 = Agent("Agent2")

# Agent1 sends a message to Agent2
agent1.send_message(agent2, "Task data ready")

# Agent1 tries to send another message before ACK
agent1.send_message(agent2, "Next step")

# After ACK received, Agent1 sends next message
agent1.send_message(agent2, "Next step")
Added message acknowledgment to confirm message receipt.
Implemented a waiting mechanism to prevent sending new messages before acknowledgment.
Standardized message format with clear send and receive print statements.
Results Interpretation

Before: Communication success rate was 60%, and task completion took 120 seconds.

After: Success rate improved to 90%, and task completion time reduced to 85 seconds.

Adding acknowledgments and controlling message flow reduces confusion and improves communication efficiency between agents.
Bonus Experiment
Try implementing a turn-taking protocol where agents take turns sending messages to avoid collisions.
💡 Hint
Use a shared token or flag that agents check before sending messages to ensure only one sends at a time.

Practice

(1/5)
1. What is the main purpose of agent communication protocols in AI systems?
easy
A. To allow AI agents to share messages clearly and work together
B. To store large amounts of data efficiently
C. To speed up the training of machine learning models
D. To create visualizations of AI decisions

Solution

  1. Step 1: Understand the role of communication protocols

    Agent communication protocols define how AI agents send and receive messages to coordinate actions.
  2. Step 2: Identify the main goal

    The main goal is to enable clear message sharing so agents can work together effectively.
  3. Final Answer:

    To allow AI agents to share messages clearly and work together -> Option A
  4. Quick Check:

    Communication protocols = clear message sharing [OK]
Hint: Protocols help agents talk clearly to cooperate [OK]
Common Mistakes:
  • Confusing communication with data storage
  • Thinking protocols speed up training
  • Assuming protocols create visualizations
2. Which of the following correctly shows the basic components of a message in agent communication protocols?
easy
A. Sender, Receiver, Content, Speed, Type
B. Sender, Password, Content, Time, Type
C. Sender, Receiver, Content, Size, Color
D. Sender, Receiver, Content, Time, Type

Solution

  1. Step 1: Recall message components

    Messages include sender, receiver, content, time, and type to describe communication details.
  2. Step 2: Match components with options

    Sender, Receiver, Content, Time, Type lists all correct components; others include incorrect or irrelevant parts like password, size, color, or speed.
  3. Final Answer:

    Sender, Receiver, Content, Time, Type -> Option D
  4. Quick Check:

    Message parts = sender, receiver, content, time, type [OK]
Hint: Remember message parts: who, to whom, what, when, kind [OK]
Common Mistakes:
  • Including unrelated fields like password or color
  • Confusing message size with time
  • Mixing up message type with speed
3. Given this message dictionary in Python representing an agent message:
message = {"sender": "AgentA", "receiver": "AgentB", "type": "request", "content": "status update", "time": "10:00"}

What will message["type"] return?
medium
A. "status update"
B. "AgentA"
C. "request"
D. "10:00"

Solution

  1. Step 1: Identify the key being accessed

    The code accesses the value for the key "type" in the message dictionary.
  2. Step 2: Find the value for "type"

    In the dictionary, "type" has the value "request".
  3. Final Answer:

    "request" -> Option C
  4. Quick Check:

    message["type"] = "request" [OK]
Hint: Look up the key exactly in the dictionary [OK]
Common Mistakes:
  • Confusing key names and values
  • Selecting sender or content instead of type
  • Misreading dictionary syntax
4. Consider this Python code snippet for sending a message between agents:
def send_message(sender, receiver, content):
    message = {
        "sender": sender,
        "receiver": receiver,
        "content": content,
        "time": time.now(),
        "type": "info"
    }
    return message

What is the error in this code?
medium
A. Incorrect use of time.now() instead of datetime.now()
B. Missing return statement
C. Missing import for time module
D. Wrong dictionary keys used

Solution

  1. Step 1: Check the time function usage

    The code uses time.now(), but the time module does not have a now() function.
  2. Step 2: Identify correct function for current time

    The correct function is datetime.now() from the datetime module.
  3. Final Answer:

    Incorrect use of time.now() instead of datetime.now() -> Option A
  4. Quick Check:

    Use datetime.now() for current time [OK]
Hint: Use datetime.now(), not time.now() for timestamps [OK]
Common Mistakes:
  • Assuming time module has now()
  • Forgetting to import datetime
  • Thinking return is missing
5. You want two AI agents to coordinate a task by exchanging messages. Agent A sends a request message asking for data, and Agent B replies with a response message containing the data. Which protocol design best supports this interaction?
hard
A. Use only 'info' message type and ignore sender and receiver fields
B. Define message types like 'request' and 'response' with sender, receiver, content, and timestamp fields
C. Send messages without specifying type or time to reduce complexity
D. Use random message types and rely on content keywords to guess meaning

Solution

  1. Step 1: Understand the need for clear message types

    Using defined message types like 'request' and 'response' helps agents know the purpose of each message.
  2. Step 2: Recognize importance of sender, receiver, content, and time

    These fields ensure messages are directed correctly, understood, and tracked over time.
  3. Final Answer:

    Define message types like 'request' and 'response' with sender, receiver, content, and timestamp fields -> Option B
  4. Quick Check:

    Clear message types + fields = effective coordination [OK]
Hint: Use clear message types and full fields for teamwork [OK]
Common Mistakes:
  • Ignoring message types causes confusion
  • Skipping sender/receiver leads to lost messages
  • Relying on content guessing is unreliable