From 86cee35294814dbc197d5c2c53cf04f327ed9bc7 Mon Sep 17 00:00:00 2001 From: Greyson Lalonde Date: Fri, 27 Feb 2026 16:51:57 -0500 Subject: [PATCH] fix: raise value error on no file support --- lib/crewai/src/crewai/llm.py | 22 ++++++++++++++++++++-- lib/crewai/src/crewai/llms/base_llm.py | 11 ++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/crewai/src/crewai/llm.py b/lib/crewai/src/crewai/llm.py index 8a4ac2edd..39ad5b4a4 100644 --- a/lib/crewai/src/crewai/llm.py +++ b/lib/crewai/src/crewai/llm.py @@ -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 diff --git a/lib/crewai/src/crewai/llms/base_llm.py b/lib/crewai/src/crewai/llms/base_llm.py index dcb261fd7..8294fb632 100644 --- a/lib/crewai/src/crewai/llms/base_llm.py +++ b/lib/crewai/src/crewai/llms/base_llm.py @@ -601,7 +601,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")