@@ -284,7 +284,7 @@ def _get_tools(self, model_request_parameters: ModelRequestParameters) -> list[T
284
284
285
285
async def _map_message (self , messages : list [ModelMessage ]) -> tuple [str , list [MessageParam ]]:
286
286
"""Just maps a `pydantic_ai.Message` to a `anthropic.types.MessageParam`."""
287
- system_prompt : str = ''
287
+ system_prompt_parts : list [ str ] = []
288
288
anthropic_messages : list [MessageParam ] = []
289
289
for m in messages :
290
290
if isinstance (m , ModelRequest ):
@@ -293,7 +293,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Me
293
293
] = []
294
294
for request_part in m .parts :
295
295
if isinstance (request_part , SystemPromptPart ):
296
- system_prompt += request_part .content
296
+ system_prompt_parts . append ( request_part .content )
297
297
elif isinstance (request_part , UserPromptPart ):
298
298
async for content in self ._map_user_prompt (request_part ):
299
299
user_content_params .append (content )
@@ -333,6 +333,7 @@ async def _map_message(self, messages: list[ModelMessage]) -> tuple[str, list[Me
333
333
anthropic_messages .append (MessageParam (role = 'assistant' , content = assistant_content_params ))
334
334
else :
335
335
assert_never (m )
336
+ system_prompt = '\n \n ' .join (system_prompt_parts )
336
337
if instructions := self ._get_instructions (messages ):
337
338
system_prompt = f'{ instructions } \n \n { system_prompt } '
338
339
return system_prompt , anthropic_messages
0 commit comments