mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-11 00:58:30 +00:00
Add A2A protocol support for CrewAI (Issue #2796)
Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
59
examples/a2a_protocol_example.py
Normal file
59
examples/a2a_protocol_example.py
Normal file
@@ -0,0 +1,59 @@
|
||||
"""
|
||||
Example of using the A2A protocol with CrewAI.
|
||||
|
||||
This example demonstrates how to:
|
||||
1. Create an agent with A2A protocol support
|
||||
2. Start an A2A server for the agent
|
||||
3. Execute a task via the A2A protocol
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import os
|
||||
import uvicorn
|
||||
from threading import Thread
|
||||
|
||||
from crewai import Agent
|
||||
from crewai.a2a import A2AServer, InMemoryTaskManager
|
||||
|
||||
|
||||
agent = Agent(
|
||||
role="Data Analyst",
|
||||
goal="Analyze data and provide insights",
|
||||
backstory="I am a data analyst with expertise in finding patterns and insights in data.",
|
||||
a2a_enabled=True,
|
||||
a2a_url="http://localhost:8000",
|
||||
)
|
||||
|
||||
|
||||
def start_server():
|
||||
"""Start the A2A server."""
|
||||
task_manager = InMemoryTaskManager()
|
||||
|
||||
server = A2AServer(task_manager=task_manager)
|
||||
|
||||
uvicorn.run(server.app, host="0.0.0.0", port=8000)
|
||||
|
||||
|
||||
async def execute_task_via_a2a():
|
||||
"""Execute a task via the A2A protocol."""
|
||||
await asyncio.sleep(2)
|
||||
|
||||
result = await agent.execute_task_via_a2a(
|
||||
task_description="Analyze the following data and provide insights: [1, 2, 3, 4, 5]",
|
||||
context="This is a simple example of using the A2A protocol.",
|
||||
)
|
||||
|
||||
print(f"Task result: {result}")
|
||||
|
||||
|
||||
async def main():
|
||||
"""Run the example."""
|
||||
server_thread = Thread(target=start_server)
|
||||
server_thread.daemon = True
|
||||
server_thread.start()
|
||||
|
||||
await execute_task_via_a2a()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user