-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Labels
Description
For my workflow, if a workflow node is created with the decorator syntax, it's missing the AgentRunUpdateEvent. But if a node is a plain agent, it will correctly generate AgentRunUpdateEvent.
Repro steps
- Run the app code
- Get the result
WorkflowStartedEvent(origin=WorkflowEventSource.FRAMEWORK, data=None)
WorkflowStatusEvent(state=WorkflowRunState.IN_PROGRESS, data=None, origin=WorkflowEventSource.FRAMEWORK)
ExecutorInvokedEvent(executor_id=ContentWriter, data=None)
AgentRunUpdateEvent(executor_id=ContentWriter, messages=Thank)
AgentRunUpdateEvent(executor_id=ContentWriter, messages= you)
...
ExecutorCompletedEvent(executor_id=ContentWriter, data=None)
ExecutorInvokedEvent(executor_id=CodeWriter, data=None) # <---- HERE, the CodeWriter executor only has executor level events, no agent events.
ExecutorCompletedEvent(executor_id=CodeWriter, data=None)
WorkflowStatusEvent(state=WorkflowRunState.IDLE, data=None, origin=WorkflowEventSource.FRAMEWORK)
Expected behavior
For the latter syntax can also generate AgentRunUpdateEvent which contains the output text.
My app code
import asyncio
import os
from typing import Any, Never
from agent_framework import (
AgentExecutorResponse,
WorkflowBuilder,
Executor, WorkflowContext, handler, ChatAgent, ChatMessage,
executor,
)
from agent_framework.azure import AzureOpenAIChatClient
from dotenv import load_dotenv
from pydantic import BaseModel
load_dotenv()
async def main():
chat_client = AzureOpenAIChatClient(api_key=os.environ["AZURE_OPENAI_API_KEY"])
writer_agent = chat_client.create_agent(
name="ContentWriter",
instructions=("You are an excellent content writer. "),
)
class CodeWriter(Executor):
agent: ChatAgent
def __init__(self, chat_client: AzureOpenAIChatClient):
self.agent = chat_client.create_agent(instructions=("You are an excellent programmer. Rewrite your input with Python code."))
super().__init__(id="CodeWriter")
@handler
async def handle(self, last_response: AgentExecutorResponse, ctx: WorkflowContext[list[ChatMessage]]) -> None:
response = await self.agent.run(last_response.agent_run_response.text)
await ctx.send_message(response)
writer2 = CodeWriter(chat_client=chat_client)
workflow = (
WorkflowBuilder(
name="Test Workflow",
description="Test Workflow",
)
.set_start_executor(writer_agent)
.add_edge(writer_agent, writer2)
.build()
)
async for event in workflow.run_stream([ChatMessage(role="user", content="Hello world")]):
print(event)
if __name__ == "__main__":
asyncio.run(main())package version:
> uv pip freeze | grep agent-framework
agent-framework-azure-ai==1.0.0b251007
agent-framework-core==1.0.0b251007Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Done