Skip to content

Commit a64cafc

Browse files
authored
Testing tools can return ToolResponseMessage (#322)
1 parent 957adda commit a64cafc

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

tests/test_envs.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -274,10 +274,21 @@ def sleep(duration: float) -> None:
274274
assert o.tool_call_id == t.id
275275

276276

277+
@pytest.mark.parametrize("use_tool_response_message", [False, True])
277278
@pytest.mark.asyncio
278-
async def test_multimodal_tool_response(dummy_env: DummyEnv) -> None:
279-
def capture_image() -> Message:
279+
async def test_multimodal_tool_response(
280+
dummy_env: DummyEnv, use_tool_response_message: bool
281+
) -> None:
282+
def capture_image() -> Message | ToolResponseMessage:
280283
"""Capture an image and return it with a description."""
284+
if use_tool_response_message:
285+
return ToolResponseMessage.create_message(
286+
role="tool",
287+
text="Stub details",
288+
images=[np.zeros((8, 8, 3), dtype=np.uint8)],
289+
name="capture_image",
290+
tool_call_id="1",
291+
)
281292
return Message.create_message(
282293
text="Stub details",
283294
images=[np.zeros((8, 8, 3), dtype=np.uint8)],
@@ -295,7 +306,13 @@ def capture_image() -> Message:
295306
assert response.name == capture_image.__name__
296307
assert response.tool_call_id == tool_call.id
297308
parsed_content = json.loads(response.content)
298-
assert parsed_content["role"] == "user"
309+
if use_tool_response_message:
310+
assert parsed_content["role"] == "tool"
311+
assert parsed_content["tool_call_id"] == "1"
312+
assert parsed_content["tool_call_id"] != response.tool_call_id
313+
else:
314+
assert parsed_content["role"] == "user"
315+
assert "tool_call_id" not in parsed_content
299316
assert isinstance(parsed_content["content"], list)
300317
assert len(parsed_content["content"]) == 2
301318
assert parsed_content["content"][0]["type"] == "image_url"

0 commit comments

Comments
 (0)