from letta.llm_api.openai_client import fill_image_content_in_responses_input from letta.schemas.enums import MessageRole from letta.schemas.letta_message_content import Base64Image, ImageContent, TextContent from letta.schemas.message import Message def _user_message_with_image_first(text: str) -> Message: image = ImageContent(source=Base64Image(media_type="image/png", data="dGVzdA==")) return Message(role=MessageRole.user, content=[image, TextContent(text=text)]) def test_to_openai_responses_dicts_handles_image_first_content(): message = _user_message_with_image_first("hello world") serialized = Message.to_openai_responses_dicts_from_list([message]) parts = serialized[0]["content"] assert any(part["type"] == "input_text" and part["text"] == "hello world" for part in parts) assert any(part["type"] == "input_image" for part in parts) def test_fill_image_content_in_responses_input_includes_image_parts(): message = _user_message_with_image_first("describe image") serialized = Message.to_openai_responses_dicts_from_list([message]) rewritten = fill_image_content_in_responses_input(serialized, [message]) assert rewritten == serialized def test_to_openai_responses_dicts_handles_image_only_content(): image = ImageContent(source=Base64Image(media_type="image/png", data="dGVzdA==")) message = Message(role=MessageRole.user, content=[image]) serialized = Message.to_openai_responses_dicts_from_list([message]) parts = serialized[0]["content"] assert parts[0]["type"] == "input_image"