| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- from openhands.core.message import ImageContent, Message, TextContent
- def test_message_with_vision_enabled():
- text_content1 = TextContent(text='This is a text message')
- image_content1 = ImageContent(
- image_urls=['http://example.com/image1.png', 'http://example.com/image2.png']
- )
- text_content2 = TextContent(text='This is another text message')
- image_content2 = ImageContent(
- image_urls=['http://example.com/image3.png', 'http://example.com/image4.png']
- )
- message: Message = Message(
- role='user',
- content=[text_content1, image_content1, text_content2, image_content2],
- vision_enabled=True,
- )
- serialized_message: dict = message.serialize_model()
- expected_serialized_message = {
- 'role': 'user',
- 'content': [
- {'type': 'text', 'text': 'This is a text message'},
- {
- 'type': 'image_url',
- 'image_url': {'url': 'http://example.com/image1.png'},
- },
- {
- 'type': 'image_url',
- 'image_url': {'url': 'http://example.com/image2.png'},
- },
- {'type': 'text', 'text': 'This is another text message'},
- {
- 'type': 'image_url',
- 'image_url': {'url': 'http://example.com/image3.png'},
- },
- {
- 'type': 'image_url',
- 'image_url': {'url': 'http://example.com/image4.png'},
- },
- ],
- }
- assert serialized_message == expected_serialized_message
- assert message.contains_image is True
- def test_message_with_only_text_content_and_vision_enabled():
- text_content1 = TextContent(text='This is a text message')
- text_content2 = TextContent(text='This is another text message')
- message: Message = Message(
- role='user', content=[text_content1, text_content2], vision_enabled=True
- )
- serialized_message: dict = message.serialize_model()
- expected_serialized_message = {
- 'role': 'user',
- 'content': [
- {'type': 'text', 'text': 'This is a text message'},
- {'type': 'text', 'text': 'This is another text message'},
- ],
- }
- assert serialized_message == expected_serialized_message
- assert message.contains_image is False
- def test_message_with_only_text_content_and_vision_disabled():
- text_content1 = TextContent(text='This is a text message')
- text_content2 = TextContent(text='This is another text message')
- message: Message = Message(
- role='user', content=[text_content1, text_content2], vision_enabled=False
- )
- serialized_message: dict = message.serialize_model()
- expected_serialized_message = {
- 'role': 'user',
- 'content': 'This is a text message\nThis is another text message',
- }
- assert serialized_message == expected_serialized_message
- assert message.contains_image is False
- def test_message_with_mixed_content_and_vision_disabled():
- # Create a message with both text and image content
- text_content1 = TextContent(text='This is a text message')
- image_content1 = ImageContent(
- image_urls=['http://example.com/image1.png', 'http://example.com/image2.png']
- )
- text_content2 = TextContent(text='This is another text message')
- image_content2 = ImageContent(
- image_urls=['http://example.com/image3.png', 'http://example.com/image4.png']
- )
- # Initialize Message with vision disabled
- message: Message = Message(
- role='user',
- content=[text_content1, image_content1, text_content2, image_content2],
- vision_enabled=False,
- )
- serialized_message: dict = message.serialize_model()
- # Expected serialization ignores images and concatenates text
- expected_serialized_message = {
- 'role': 'user',
- 'content': 'This is a text message\nThis is another text message',
- }
- # Assert serialized message matches expectation
- assert serialized_message == expected_serialized_message
- # Assert that images exist in the original message
- assert message.contains_image
|