@@ -224,8 +224,6 @@ def render_message(msg: ContextMessage, allow_multipart: bool) -> str | List[dic
224224 parts .append ({"type" : "image_url" , "image_url" : {"url" : image_data_uri }})
225225 elif msg .image .uri :
226226 parts .append ({"type" : "image_url" , "image_url" : {"url" : msg .image .uri }})
227- if msg .tool_calls :
228- parts .append ({"type" : "tool_call" , "tool_calls" : msg .tool_calls })
229227 if allow_multipart :
230228 return parts
231229 if len (parts ) == 1 and parts [0 ]["type" ] == "text" :
@@ -239,6 +237,9 @@ def merge_messages(messages: List[ContextMessage]) -> ContextMessage:
239237 images = [msg .image for msg in messages if msg .image ]
240238 image = images [0 ] if images else None # TODO: handle multiple images
241239 return ContextMessage (role = messages [0 ].role , text = text , image = image )
240+
241+ def merge_tool_calls (messages : List [ContextMessage ]) -> List [Dict [str , Any ]]:
242+ return [msg .tool_calls for msg in messages if msg .tool_calls ]
242243
243244 user_input_text = ""
244245 if hasattr (input_data , "text" ):
@@ -264,14 +265,16 @@ def merge_messages(messages: List[ContextMessage]) -> ContextMessage:
264265 else :
265266 messages .append ({
266267 "role" : current_role ,
267- "content" : render_message (merge_messages (current_messages ), allow_multipart = multipart )
268+ "content" : render_message (merge_messages (current_messages ), allow_multipart = multipart ),
269+ "tool_calls" : merge_tool_calls (current_messages )
268270 })
269271 current_messages = [msg ]
270272 current_role = msg .role
271273 if len (current_messages ) > 0 :
272274 messages .append ({
273275 "role" : current_role ,
274- "content" : render_message (merge_messages (current_messages ), allow_multipart = multipart )
276+ "content" : render_message (merge_messages (current_messages ), allow_multipart = multipart ),
277+ "tool_calls" : merge_tool_calls (current_messages )
275278 })
276279
277280 return messages
0 commit comments