File size: 1,557 Bytes
514ab2c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from llama_index.core.agent.workflow import (
    AgentInput,
    AgentOutput,
    ToolCall,
    ToolCallResult,
    AgentStream,
)

async def run_workflow_agent(workflow_agent, user_msg: str):
    handler = workflow_agent.run(user_msg=user_msg)

    current_agent = None

    async for event in handler.stream_events():
        # Detect agent switch
        if hasattr(event, "current_agent_name") and event.current_agent_name != current_agent:
            current_agent = event.current_agent_name
            print(f"\n{'='*50}")
            print(f"Agent Name: {current_agent}")
            print(f"{'='*50}\n")

        # Handle Agent Output
        if isinstance(event, AgentOutput):
            if event.response.content:
                print("Output:", event.response.content)
            if event.tool_calls:
                print("\nPlanning to use tools:", [call.tool_name for call in event.tool_calls])

        # Handle Tool Call
        elif isinstance(event, ToolCall):
            print("\n**************************Calling***********************")
            print(f"Calling Tool: {event.tool_name}")
            print(f"Calling With Arguments: {event.tool_kwargs}")

        # Handle Tool Call Result
        elif isinstance(event, ToolCallResult):
            print("\n**************************Results***********************")
            print(f"Tool Result ({event.tool_name}):")
            print(f"Arguments: {event.tool_kwargs}")
            print(f"Output: {event.tool_output}")
            print(f"{'='*100}")

    return handler