-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Open
Labels
Description
Describe the bug
The Runner.run_streamed()
method buffers tool_call_item
events and only emits them when the tool actually starts executing, rather than streaming them immediately when the tool call is made. This significantly delays real-time feedback in streaming applications and defeats the purpose of using streamed execution for responsive UIs.
Debug information
- Agents SDK version: 0.2.3
- Python version: 3.10.16
Repro steps
import asyncio
import datetime
import time
from agents import Agent, ItemHelpers, Runner, function_tool
@function_tool
def get_server_time() -> str:
time.sleep(10) # Simulate a slow tool
return datetime.datetime.now().isoformat()
async def main():
agent = Agent(
name="TimeKeeper",
instructions="First call the `get_server_time` tool to get the current server time, then tell the user what time it is.",
tools=[get_server_time],
)
result = Runner.run_streamed(agent, input="Hello")
print("=== Run starting ===")
async for event in result.stream_events():
timestamp = datetime.datetime.now().strftime("%H:%M:%S.%f")[:-3]
if event.type == "run_item_stream_event":
if event.item.type == "tool_call_item":
print(f"[{timestamp}] -- Tool was called")
elif event.item.type == "tool_call_output_item":
print(f"[{timestamp}] -- Tool output: {event.item.output}")
print("=== Run complete ===")
if __name__ == "__main__":
asyncio.run(main())
Current output:
=== Run starting ===
[15:44:50.553] Agent updated: TimeKeeper
[15:45:01.710] -- Tool was called # ← This appears AFTER the 10-second delay
[15:45:01.710] -- Tool output: 2025-07-28T15:45:01.708868
=== Run complete ===
Expected behavior
The tool_call_item
event should be emitted immediately when the agent decides to call a tool, not when the tool starts executing. The expected output should be:
=== Run starting ===
[15:44:50.553] Agent updated: TimeKeeper
[15:44:50.XXX] -- Tool was called # ← Should appear immediately
# ... 10 second delay while tool executes ...
[15:45:01.710] -- Tool output: 2025-07-28T15:45:01.708868
=== Run complete ===
SeeYangZhi