Skip to content

[BUG] / [HELP] "Model does not support multimodal input [...] Use a vision-capable model" for TextFile input #5137

@MartinNeudecker

Description

@MartinNeudecker

Description

I am trying to pass TextFiles to my Crew via the 'input_files' parameter. Since the update to crewai 1.10 -> 1.12.2, this results in an Error when using non-multimodel models.

Steps to Reproduce

  1. Create a new crewai Crew (crewai create crew demo)
  2. Adapt the run() method to include a input file
  3. Select a model like claude-sonnet-4.6
  4. See the error

Expected behavior

When using only text files, I don't expect to need a vision-capable model. I expect the model to digest the actual text of the files, not 'look' at it.

Screenshots/Code snippets

Adapted run method:

def run():
    """
    Run the crew.
    """
    inputs = {"topic": "AI LLMs", "current_year": str(datetime.now().year)}
    file = {"file": TextFile(source="my_dummy_file.md")}

    try:
        CrewaiDemo().crew().kickoff(
            inputs=inputs,
            input_files=file,  # type: ignore
        )
    except Exception as e:
        raise Exception(f"An error occurred while running the crew: {e}")

Results in:
ValueError: Model 'anthropic/claude-sonnet-4.6' does not support multimodal input, but files were provided via 'input_files'. Use a vision-capable model or remove the file inputs.

Operating System

macOS Big Sur

Python Version

3.12

crewAI Version

1.12.2

crewAI Tools Version

1.12.2

Virtual Environment

Venv

Evidence

Full stacktrace:

Traceback (most recent call last):
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 716, in execute_task
    result = self._execute_without_timeout(task_prompt, task)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 781, in _execute_without_timeout
    return self.agent_executor.invoke(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^
        {
        ^
    ...<4 lines>...
        }
        ^
    )["output"]
    ^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 227, in invoke
    formatted_answer = self._invoke_loop()
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 323, in _invoke_loop
    return self._invoke_loop_native_tools()
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 597, in _invoke_loop_native_tools
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 516, in _invoke_loop_native_tools
    answer = get_llm_response(
        llm=self.llm,
    ...<9 lines>...
        verbose=self.agent.verbose,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/utilities/agent_utils.py", line 475, in get_llm_response
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/utilities/agent_utils.py", line 465, in get_llm_response
    answer = llm.call(
        messages,
    ...<5 lines>...
        response_model=response_model,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/providers/openai/completion.py", line 425, in call
    formatted_messages = self._format_messages(messages)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/providers/openai/completion.py", line 2311, in _format_messages
    base_formatted = super()._format_messages(messages)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/base_llm.py", line 630, in _format_messages
    return self._process_message_files(messages)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/base_llm.py", line 649, in _process_message_files
    raise ValueError(
    ...<3 lines>...
    )
ValueError: Model 'anthropic/claude-sonnet-4.6' does not support multimodal input, but files were provided via 'input_files'. Use a vision-capable model or remove the file inputs.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 716, in execute_task
    result = self._execute_without_timeout(task_prompt, task)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 781, in _execute_without_timeout
    return self.agent_executor.invoke(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^
        {
        ^
    ...<4 lines>...
        }
        ^
    )["output"]
    ^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 227, in invoke
    formatted_answer = self._invoke_loop()
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 323, in _invoke_loop
    return self._invoke_loop_native_tools()
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 597, in _invoke_loop_native_tools
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 516, in _invoke_loop_native_tools
    answer = get_llm_response(
        llm=self.llm,
    ...<9 lines>...
        verbose=self.agent.verbose,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/utilities/agent_utils.py", line 475, in get_llm_response
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/utilities/agent_utils.py", line 465, in get_llm_response
    answer = llm.call(
        messages,
    ...<5 lines>...
        response_model=response_model,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/providers/openai/completion.py", line 425, in call
    formatted_messages = self._format_messages(messages)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/providers/openai/completion.py", line 2311, in _format_messages
    base_formatted = super()._format_messages(messages)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/base_llm.py", line 630, in _format_messages
    return self._process_message_files(messages)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/base_llm.py", line 649, in _process_message_files
    raise ValueError(
    ...<3 lines>...
    )
ValueError: Model 'anthropic/claude-sonnet-4.6' does not support multimodal input, but files were provided via 'input_files'. Use a vision-capable model or remove the file inputs.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/src/crewai_demo/main.py", line 25, in run
    CrewaiDemo().crew().kickoff(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        inputs=inputs,
        ^^^^^^^^^^^^^^
        input_files=file,  # type: ignore
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/crew.py", line 739, in kickoff
    result = self._run_sequential_process()
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/crew.py", line 1164, in _run_sequential_process
    return self._execute_tasks(self.tasks)
           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/crew.py", line 1256, in _execute_tasks
    task_output = task.execute_sync(
        agent=exec_data.agent,
        context=context,
        tools=exec_data.tools,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/task.py", line 505, in execute_sync
    return self._execute_core(agent, context, tools)
           ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/task.py", line 786, in _execute_core
    raise e  # Re-raise the exception after emitting the event
    ^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/task.py", line 698, in _execute_core
    result = agent.execute_task(
        task=self,
        context=context,
        tools=tools,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 729, in execute_task
    result = self._handle_execution_error(e, task, context, tools)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 641, in _handle_execution_error
    return self.execute_task(task, context, tools)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 729, in execute_task
    result = self._handle_execution_error(e, task, context, tools)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 641, in _handle_execution_error
    return self.execute_task(task, context, tools)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 729, in execute_task
    result = self._handle_execution_error(e, task, context, tools)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 640, in _handle_execution_error
    self._check_execution_error(e, task)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 620, in _check_execution_error
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 716, in execute_task
    result = self._execute_without_timeout(task_prompt, task)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agent/core.py", line 781, in _execute_without_timeout
    return self.agent_executor.invoke(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^
        {
        ^
    ...<4 lines>...
        }
        ^
    )["output"]
    ^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 227, in invoke
    formatted_answer = self._invoke_loop()
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 323, in _invoke_loop
    return self._invoke_loop_native_tools()
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 597, in _invoke_loop_native_tools
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/agents/crew_agent_executor.py", line 516, in _invoke_loop_native_tools
    answer = get_llm_response(
        llm=self.llm,
    ...<9 lines>...
        verbose=self.agent.verbose,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/utilities/agent_utils.py", line 475, in get_llm_response
    raise e
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/utilities/agent_utils.py", line 465, in get_llm_response
    answer = llm.call(
        messages,
    ...<5 lines>...
        response_model=response_model,
    )
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/providers/openai/completion.py", line 425, in call
    formatted_messages = self._format_messages(messages)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/providers/openai/completion.py", line 2311, in _format_messages
    base_formatted = super()._format_messages(messages)
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/base_llm.py", line 630, in _format_messages
    return self._process_message_files(messages)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/lib/python3.13/site-packages/crewai/llms/base_llm.py", line 649, in _process_message_files
    raise ValueError(
    ...<3 lines>...
    )
ValueError: Model 'anthropic/claude-sonnet-4.6' does not support multimodal input, but files were provided via 'input_files'. Use a vision-capable model or remove the file inputs.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/.venv/bin/run_crew", line 10, in <module>
    sys.exit(run())
             ~~~^^
  File "/Users/Martin.Neudecker/cg_ai/playground/scripts/crewai_demo/src/crewai_demo/main.py", line 30, in run
    raise Exception(f"An error occurred while running the crew: {e}")
Exception: An error occurred while running the crew: Model 'anthropic/claude-sonnet-4.6' does not support multimodal input, but files were provided via 'input_files'. Use a vision-capable model or remove the file inputs.
An error occurred while running the crew: Command '['uv', 'run', 'run_crew']' returned non-zero exit status 1.

Possible Solution

In case that is actually the intended behavior for TextFiles (which seems odd), I guess one should perform string-interpolation to append the content of the text files to the initial prompt?

Attaching files directly to the task does also work.

Additional context

Attaching files directly to the task instead is working as expected strangely, which makes me think this is indeed a bug.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions