Skip to content

Commit 76d637d

Browse files
authored
fixl: #1668 Handoffs with gpt-5* model + store=False + remove_all_tools fails due to 404 error response (#1757)
1 parent bc949c3 commit 76d637d

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/agents/extensions/handoff_filters.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from ..items import (
55
HandoffCallItem,
66
HandoffOutputItem,
7+
ReasoningItem,
78
RunItem,
89
ToolCallItem,
910
ToolCallOutputItem,
@@ -41,6 +42,7 @@ def _remove_tools_from_items(items: tuple[RunItem, ...]) -> tuple[RunItem, ...]:
4142
or isinstance(item, HandoffOutputItem)
4243
or isinstance(item, ToolCallItem)
4344
or isinstance(item, ToolCallOutputItem)
45+
or isinstance(item, ReasoningItem)
4446
):
4547
continue
4648
filtered_items.append(item)

tests/test_extension_filters.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from openai.types.responses import ResponseOutputMessage, ResponseOutputText
2+
from openai.types.responses.response_reasoning_item import ResponseReasoningItem
23

34
from agents import Agent, HandoffInputData, RunContextWrapper
45
from agents.extensions.handoff_filters import remove_all_tools
56
from agents.items import (
67
HandoffOutputItem,
78
MessageOutputItem,
9+
ReasoningItem,
810
ToolCallOutputItem,
911
TResponseInputItem,
1012
)
@@ -23,6 +25,10 @@ def _get_message_input_item(content: str) -> TResponseInputItem:
2325
}
2426

2527

28+
def _get_reasoning_input_item() -> TResponseInputItem:
29+
return {"id": "rid", "summary": [], "type": "reasoning"}
30+
31+
2632
def _get_function_result_input_item(content: str) -> TResponseInputItem:
2733
return {
2834
"call_id": "1",
@@ -77,6 +83,12 @@ def _get_handoff_output_run_item(content: str) -> HandoffOutputItem:
7783
)
7884

7985

86+
def _get_reasoning_output_run_item() -> ReasoningItem:
87+
return ReasoningItem(
88+
agent=fake_agent(), raw_item=ResponseReasoningItem(id="rid", summary=[], type="reasoning")
89+
)
90+
91+
8092
def test_empty_data():
8193
handoff_input_data = HandoffInputData(
8294
input_history=(),
@@ -161,21 +173,24 @@ def test_removes_tools_from_new_items_and_history():
161173
handoff_input_data = HandoffInputData(
162174
input_history=(
163175
_get_message_input_item("Hello1"),
176+
_get_reasoning_input_item(),
164177
_get_function_result_input_item("World"),
165178
_get_message_input_item("Hello2"),
166179
),
167180
pre_handoff_items=(
181+
_get_reasoning_output_run_item(),
168182
_get_message_output_run_item("123"),
169183
_get_tool_output_run_item("456"),
170184
),
171185
new_items=(
186+
_get_reasoning_output_run_item(),
172187
_get_message_output_run_item("Hello"),
173188
_get_tool_output_run_item("World"),
174189
),
175190
run_context=RunContextWrapper(context=()),
176191
)
177192
filtered_data = remove_all_tools(handoff_input_data)
178-
assert len(filtered_data.input_history) == 2
193+
assert len(filtered_data.input_history) == 3
179194
assert len(filtered_data.pre_handoff_items) == 1
180195
assert len(filtered_data.new_items) == 1
181196

@@ -187,11 +202,13 @@ def test_removes_handoffs_from_history():
187202
_get_handoff_input_item("World"),
188203
),
189204
pre_handoff_items=(
205+
_get_reasoning_output_run_item(),
190206
_get_message_output_run_item("Hello"),
191207
_get_tool_output_run_item("World"),
192208
_get_handoff_output_run_item("World"),
193209
),
194210
new_items=(
211+
_get_reasoning_output_run_item(),
195212
_get_message_output_run_item("Hello"),
196213
_get_tool_output_run_item("World"),
197214
_get_handoff_output_run_item("World"),

0 commit comments

Comments
 (0)