fix: raise value error on no file support

This commit is contained in:
Greyson LaLonde
2026-03-24 07:21:19 -04:00
committed by GitHub
parent aced3e5c29
commit c542cc9f70
4 changed files with 47 additions and 4 deletions

View File

@@ -1984,7 +1984,16 @@ class LLM(BaseLLM):
Returns:
Messages with files formatted into content blocks.
"""
if not HAS_CREWAI_FILES or not self.supports_multimodal():
if not HAS_CREWAI_FILES:
return messages
if not self.supports_multimodal():
if any(msg.get("files") for msg in messages):
raise ValueError(
f"Model '{self.model}' does not support multimodal input, "
"but files were provided via 'input_files'. "
"Use a vision-capable model or remove the file inputs."
)
return messages
provider = getattr(self, "provider", None) or self.model
@@ -2026,7 +2035,16 @@ class LLM(BaseLLM):
Returns:
Messages with files formatted into content blocks.
"""
if not HAS_CREWAI_FILES or not self.supports_multimodal():
if not HAS_CREWAI_FILES:
return messages
if not self.supports_multimodal():
if any(msg.get("files") for msg in messages):
raise ValueError(
f"Model '{self.model}' does not support multimodal input, "
"but files were provided via 'input_files'. "
"Use a vision-capable model or remove the file inputs."
)
return messages
provider = getattr(self, "provider", None) or self.model
@@ -2398,6 +2416,9 @@ class LLM(BaseLLM):
"gpt-4.1",
"claude-3",
"claude-4",
"claude-sonnet-4",
"claude-opus-4",
"claude-haiku-4",
"gemini",
)
model_lower = self.model.lower()

View File

@@ -641,7 +641,16 @@ class BaseLLM(ABC):
Returns:
Messages with files formatted into content blocks.
"""
if not HAS_CREWAI_FILES or not self.supports_multimodal():
if not HAS_CREWAI_FILES:
return messages
if not self.supports_multimodal():
if any(msg.get("files") for msg in messages):
raise ValueError(
f"Model '{self.model}' does not support multimodal input, "
"but files were provided via 'input_files'. "
"Use a vision-capable model or remove the file inputs."
)
return messages
provider = getattr(self, "provider", None) or getattr(self, "model", "openai")

View File

@@ -1766,7 +1766,14 @@ class AnthropicCompletion(BaseLLM):
Returns:
True if the model supports images and PDFs.
"""
return "claude-3" in self.model.lower() or "claude-4" in self.model.lower()
model_lower = self.model.lower()
return (
"claude-3" in model_lower
or "claude-4" in model_lower
or "claude-sonnet-4" in model_lower
or "claude-opus-4" in model_lower
or "claude-haiku-4" in model_lower
)
def get_file_uploader(self) -> Any:
"""Get an Anthropic file uploader using this LLM's clients.

View File

@@ -2119,12 +2119,18 @@ class BedrockCompletion(BaseLLM):
model_lower = self.model.lower()
vision_models = (
"anthropic.claude-3",
"anthropic.claude-sonnet-4",
"anthropic.claude-opus-4",
"anthropic.claude-haiku-4",
"amazon.nova-lite",
"amazon.nova-pro",
"amazon.nova-premier",
"us.amazon.nova-lite",
"us.amazon.nova-pro",
"us.amazon.nova-premier",
"us.anthropic.claude-sonnet-4",
"us.anthropic.claude-opus-4",
"us.anthropic.claude-haiku-4",
)
return any(model_lower.startswith(m) for m in vision_models)