properly handle images by anthropic

This commit is contained in:
Daniel O'Connell 2025-11-02 12:08:46 +01:00
parent a4f42e656a
commit 6bd7df8ee3

View File

@ -71,15 +71,23 @@ class AnthropicProvider(BaseLLMProvider):
} }
def _convert_message(self, message: Message) -> dict[str, Any]: def _convert_message(self, message: Message) -> dict[str, Any]:
converted = message.to_dict() # Handle string content directly
if converted["role"] == MessageRole.ASSISTANT and isinstance( if isinstance(message.content, str):
converted["content"], list return {"role": message.role.value, "content": message.content}
):
content = sorted( # Convert content items, handling ImageContent specially
converted["content"], key=lambda x: x["type"] != "thinking" content_list = []
) for item in message.content:
return converted | {"content": content} if isinstance(item, ImageContent):
return converted content_list.append(self._convert_image_content(item))
else:
content_list.append(item.to_dict())
# Sort assistant messages to put thinking last
if message.role == MessageRole.ASSISTANT:
content_list = sorted(content_list, key=lambda x: x["type"] != "thinking")
return {"role": message.role.value, "content": content_list}
def _should_include_message(self, message: Message) -> bool: def _should_include_message(self, message: Message) -> bool:
"""Filter out system messages (handled separately in Anthropic).""" """Filter out system messages (handled separately in Anthropic)."""