05
CHAPTER 05 / 07
実装ハンズオン
— 続き —
python
# agent_executor.py
import asyncio
from a2a.server.agent_execution import AgentExecutor, RequestContext
from a2a.server.events import EventQueue
from a2a.types import Task, TaskState, TaskStatus, TaskStatusUpdateEvent
from a2a.utils.message import new_agent_text_message
class ReverseAgentExecutor(AgentExecutor):
async def execute(self, context: RequestContext, event_queue: EventQueue):
user_text = context.message.parts[0].root.text
await event_queue.put(
TaskStatusUpdateEvent(
task_id=context.task_id,
context_id=context.context_id,
status=TaskStatus(state=TaskState.working),
final=False,
)
)
reversed_text = user_text[::-1]
await event_queue.put(
Task(
id=context.task_id,
context_id=context.context_id,
status=TaskStatus(
state=TaskState.completed,
message=new_agent_text_message(
reversed_text, context.context_id, context.task_id,
),
),
)
)
async def cancel(self, context: RequestContext, event_queue: EventQueue):
await event_queue.put(
Task(
id=context.task_id,
context_id=context.context_id,
status=TaskStatus(state=TaskState.canceled),
)
)