{"record":{"id":"4e80f40eb61ea87f","repo":"microsoft/semantic-kernel","slug":"image-content-is-not-supported-in-an-assistant-mes","errorCode":null,"errorMessage":"Image content is not supported in an assistant message.","messagePattern":"Image content is not supported in an assistant message\\.","errorType":"exception","errorClass":"ServiceInvalidRequestError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/ai/bedrock/services/model_provider/utils.py","lineNumber":96,"sourceCode":"        \"content\": contents,\n    }\n\n\ndef _format_assistant_message(message: ChatMessageContent) -> dict[str, Any]:\n    \"\"\"Format an assistant message to the expected object for the client.\n\n    Note that Guardrails and documents are currently not supported.\n\n    Args:\n        message: The assistant message.\n\n    Returns:\n        The formatted assistant message.\n    \"\"\"\n    contents: list[Any] = []\n    for item in message.items:\n        if isinstance(item, ImageContent):\n            raise ServiceInvalidRequestError(\"Image content is not supported in an assistant message.\")\n\n        if isinstance(item, TextContent):\n            contents.append({\"text\": item.text})\n        elif isinstance(item, FunctionCallContent):\n            contents.append({\n                \"toolUse\": {\n                    \"toolUseId\": item.id,\n                    \"name\": item.name,\n                    \"input\": item.arguments\n                    if isinstance(item.arguments, Mapping)\n                    else json.loads(item.arguments or \"{}\"),\n                }\n            })\n        else:\n            raise ServiceInvalidRequestError(f\"Unsupported content type in an assistant message: {type(item)}\")\n\n    return {\n        \"role\": \"assistant\",","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/ai/bedrock/services/model_provider/utils.py#L78-L114","documentation":"Raised while formatting an assistant-role message for Bedrock when an item is an ImageContent. Bedrock's assistant role accepts only TextContent and FunctionCallContent; an image in an assistant turn is explicitly rejected as unsupported.","triggerScenarios":"A ChatHistory assistant message that contains an ImageContent item is sent to a Bedrock chat completion service, hitting the isinstance(item, ImageContent) guard at the top of _format_assistant_message.","commonSituations":"Streaming a multimodal model's assistant output back into Bedrock; deserializing a stored assistant message that included an image; incorrectly tagging image content with the assistant role.","solutions":["Remove ImageContent items from assistant messages before sending the history to Bedrock.","If the image is user-supplied, place it in a user-role message instead.","If you need multimodal assistant turns, use a connector that supports them rather than Bedrock's assistant converter."],"exampleFix":"// before\nhistory.add_message(ChatMessageContent(role=AuthorRole.ASSISTANT, items=[ImageContent(...)]))\n// after\nhistory.add_message(ChatMessageContent(role=AuthorRole.USER, items=[ImageContent(...)]))","handlingStrategy":"validation","validationCode":"from semantic_kernel.contents.image_content import ImageContent\n\ndef assistant_message_has_no_image(items) -> bool:\n    return not any(isinstance(i, ImageContent) for i in items)","typeGuard":"from semantic_kernel.contents.image_content import ImageContent\n\ndef is_bedrock_safe_assistant_item(item: object) -> bool:\n    return not isinstance(item, ImageContent)","tryCatchPattern":"from semantic_kernel.exceptions.service_exceptions import ServiceInvalidRequestError\n\ntry:\n    await service.get_chat_message_contents(history, settings)\nexcept ServiceInvalidRequestError as e:\n    if \"Image content is not supported in an assistant message\" in str(e):\n        strip_images_from_assistant_messages(history)\n    raise","preventionTips":["Never attach ImageContent to assistant-role messages for Bedrock.","Place images in user-role messages.","Validate assistant message items before serialization."],"tags":["bedrock","chat-history","content-types","assistant-message","image"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}