@@ -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