1
- from __future__ import annotations
1
+ from __future__ import annotations as _annotations
2
2
3
3
import asyncio
4
4
import random
5
5
import uuid
6
6
7
7
from pydantic import BaseModel
8
8
9
- from src . agents import (
9
+ from agents import (
10
10
Agent ,
11
11
HandoffOutputItem ,
12
12
ItemHelpers ,
22
22
handoff ,
23
23
trace ,
24
24
)
25
- from src . agents .extensions .handoff_prompt import RECOMMENDED_PROMPT_PREFIX
25
+ from agents .extensions .handoff_prompt import RECOMMENDED_PROMPT_PREFIX
26
26
27
27
### CONTEXT
28
28
@@ -162,20 +162,15 @@ async def main():
162
162
for new_item in result .new_items :
163
163
agent_name = new_item .agent .name
164
164
if isinstance (new_item , MessageOutputItem ):
165
- # In tool_choice="required" scenarios, the agent won't produce bare messages;
166
- # instead it will call `respond_to_user`. But if the example is run without
167
- # requiring tool_choice, this branch will handle direct messages.
168
165
print (f"{ agent_name } : { ItemHelpers .text_message_output (new_item )} " )
169
166
elif isinstance (new_item , HandoffOutputItem ):
170
167
print (
171
168
f"Handed off from { new_item .source_agent .name } to { new_item .target_agent .name } "
172
169
)
173
170
elif isinstance (new_item , ToolCallItem ):
174
- # Stash the name of the tool call so we can treat respond_to_user specially
175
171
last_tool_name = getattr (new_item .raw_item , "name" , None )
176
172
print (f"{ agent_name } called tool:{ f' { last_tool_name } ' if last_tool_name else '' } " )
177
173
elif isinstance (new_item , ToolCallOutputItem ):
178
- # If the tool call was respond_to_user, treat its output as the message to display.
179
174
if last_tool_name == "respond_to_user" :
180
175
print (f"{ agent_name } : { new_item .output } " )
181
176
else :
0 commit comments