@mentatbot - here is the answer, implement this exactly and make a PR
This should just be a case of registering an implementation of message_to_anthropic_message for UserImageMessage, which can actually be done externally to magentic / without needing a new version, but of course should be added to magentic.
Here is the UserImageMessage message registration for message_to_openai_message.
@mentatbot - here is the answer, implement this exactly and make a PR
This should just be a case of registering an implementation of message_to_anthropic_message for UserImageMessage, which can actually be done externally to magentic / without needing a new version, but of course should be added to magentic.
Here is the UserImageMessage message registration for message_to_openai_message.
magentic/src/magentic/vision.py
Lines 38 to 55 in f0c2fce @message_to_openaimessage.register(UserImageMessage) def ( message: UserImageMessage[bytes] | UserImageMessage[str], ) -> ChatCompletionMessageParam: if isinstance(message.content, bytes): mime_type = filetype.guess_mime(message.content) base64_image = base64.b64encode(message.content).decode("utf-8") url = f"data:{mime_type};base64,{base64_image}" elif isinstance(message.content, str): url = message.content else: msg = f"Invalid content type: {type(message.content)}" raise TypeError(msg)
and message_to_anthropic_message is here
magentic/src/magentic/chat_model/anthropic_chat_model.py
Line 69 in f0c2fce def message_to_anthropic_message(message: Message[Any]) -> MessageParam:
With that implemented you should be able to use images with Anthropic models as shown for OpenAI in the docs here https://magentic.dev/vision/
Let me know if you run into any issues with this. I'd happily accept a PR to add this to vision.py so it works by default.