test_message_serialization.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from opendevin.core.message import ImageContent, Message, TextContent
  2. def test_message_serialization():
  3. text_content1 = TextContent(text='This is a text message')
  4. image_content1 = ImageContent(
  5. image_urls=['http://example.com/image1.png', 'http://example.com/image2.png']
  6. )
  7. text_content2 = TextContent(text='This is another text message')
  8. image_content2 = ImageContent(
  9. image_urls=['http://example.com/image3.png', 'http://example.com/image4.png']
  10. )
  11. message = Message(
  12. role='user',
  13. content=[text_content1, image_content1, text_content2, image_content2],
  14. )
  15. serialized_message = message.serialize_model()
  16. expected_serialized_message = {
  17. 'role': 'user',
  18. 'content': [
  19. {'type': 'text', 'text': 'This is a text message'},
  20. {
  21. 'type': 'image_url',
  22. 'image_url': {'url': 'http://example.com/image1.png'},
  23. },
  24. {
  25. 'type': 'image_url',
  26. 'image_url': {'url': 'http://example.com/image2.png'},
  27. },
  28. {'type': 'text', 'text': 'This is another text message'},
  29. {
  30. 'type': 'image_url',
  31. 'image_url': {'url': 'http://example.com/image3.png'},
  32. },
  33. {
  34. 'type': 'image_url',
  35. 'image_url': {'url': 'http://example.com/image4.png'},
  36. },
  37. ],
  38. }
  39. assert serialized_message == expected_serialized_message
  40. assert message.contains_image is True
  41. def test_message_with_only_text_content():
  42. text_content1 = TextContent(text='This is a text message')
  43. text_content2 = TextContent(text='This is another text message')
  44. message = Message(role='user', content=[text_content1, text_content2])
  45. serialized_message = message.serialize_model()
  46. expected_serialized_message = {
  47. 'role': 'user',
  48. 'content': [
  49. {'type': 'text', 'text': 'This is a text message'},
  50. {'type': 'text', 'text': 'This is another text message'},
  51. ],
  52. }
  53. assert serialized_message == expected_serialized_message
  54. assert message.contains_image is False