# Issue with CrewAI Agent Output Format Validation

**URL:** <https://community.crewai.com/t/issue-with-crewai-agent-output-format-validation/7273>\
**Category:** CrewAI Community Support\
**Tags:** output\_issues, agent, task, crewai\
**Created:** [January 3, 2026, 5:37pm UTC](https://community.crewai.com/t/issue-with-crewai-agent-output-format-validation/7273 "2026-01-03T17:37:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![eZabaleta](https://sea1.discourse-cdn.com/flex025/user_avatar/community.crewai.com/ezabaleta/32/3128_2.png) [@eZabaleta](https://community.crewai.com/u/eZabaleta)\
**Post date:** [January 3, 2026, 5:37pm UTC](https://community.crewai.com/t/issue-with-crewai-agent-output-format-validation/7273/1 "2026-01-03T17:37:08Z")

</div>

# Issue with CrewAI Agent Output Format Validation

Hi everyone,

I’m trying to run a CrewAI really simple flow with an agent and a task, but I keep getting validation errors related to the output format, even though the agent correctly returns the expected output (`"I worked!"`). I’m hoping someone can point me in the right direction.

* * *

## Code

```python
import asyncio
import json
from pydantic import BaseModel
from crewai import Agent, Task
from crewai.flow.flow import Flow, start
from langchain_openai import ChatOpenAI

# ---- STATE ----
class State(BaseModel):
    steps: int = 0
    code: str = ""
    llm: str = "gpt-3.5-turbo"

# ---- FLOW ----
class DiagramFlow(Flow[State]):

    def update_steps(self):
        self.state.steps += 1

    @start()
    def node_1(self):
        class OutputFormat(BaseModel):
            text: str
            extra_text: str

        llm_instance = ChatOpenAI(
            model_name=self.state.llm,
            temperature=0.7,
        )

        # Create an Agent
        agent_name = Agent(
            role="Friendly assistant",
            goal="Return a message that says 'I worked!'",
            backstory="Testing agent call",
            tools=[],
            llm=llm_instance,
            verbose=False,
        )

        task = Task(
            description="Return a string that says: 'I worked!'",
            expected_output="I worked!", # Attempt to solve the problem 1
            output_pydantic=OutputFormat,# Attempt to solve the problem 2
        )

        result = agent_name.kickoff(task, response_format=OutputFormat)

        print("Raw result:", result.raw) # Kinda works
        print("Parsed output:", result.pydantic.text) # Error
        return result

# ---- ENTRY POINT ----
if __name__ == " __main__":
    state = State()
    flow = DiagramFlow(state=state)
    flow.kickoff()

```

* * *

## Error

```auto
Failed to parse output into response format: 1 validation error for OutputFormat
Invalid JSON: key must be a string at line 1 column 2
[type=json_invalid, input_value="{'type': 'json_schema', ... 'extra_text': 'Success!'}", input_type=str]

Traceback (most recent call last):
  ...
AttributeError: 'NoneType' object has no attribute 'text'

```

The agent **does** return:

```json
{'text': 'I worked!', 'extra_text': 'Success!'}

```

…but CrewAI fails to parse it into the Pydantic model, throwing a `json_invalid` error.

And i can’t actually take the result from the result variable, not even using result.raw

* * *

## What I’ve Tried

- Passing the Pydantic model via `output_pydantic` and `response_format`.
- Making sure the task description and expected output match the returned values.
- Printing the raw result to verify the agent is returning correct data.

* * *

## Question

Has anyone faced this `json_invalid` error when using `output_pydantic` in CrewAI? It seems like the agent is returning a Python-style dict (`'` quotes) instead of proper JSON (`"` quotes), which prevents parsing. Could be that?

Any suggestions on how to make CrewAI accept the output format correctly?

## Thanks in advance!

Also

By trying different solutions i have got this other error message, no idea what i have messed up.

```auto
Starting LLM setup...
Starting task execution...
Agent failed to reach a final answer. This is likely a bug - please report it.
An unknown error occurred. Please check the details below.                                                                                                                                    
Error details: 35 validation errors for LiteAgentExecutionStartedEvent                                                                                                                        
messages.str                                                                                                                                                                                  
  Input should be a valid string [type=string_type, input_value=[{'role': 'system', 'cont...trigger_context', None)], input_type=list]                                                        
    For further information visit https://errors.pydantic.dev/2.12/v/string_type                                                                                                              
messages.list[dict[str,str]].1
  Input should be a valid dictionary [type=dict_type, input_value=('used_tools', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].2
  Input should be a valid dictionary [type=dict_type, input_value=('tools_errors', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].3
  Input should be a valid dictionary [type=dict_type, input_value=('delegations', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].4
  Input should be a valid dictionary [type=dict_type, input_value=('i18n', I18N(prompt_file=None)), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].5
  Input should be a valid dictionary [type=dict_type, input_value=('name', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].6
  Input should be a valid dictionary [type=dict_type, input_value=('prompt_context', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].7
  Input should be a valid dictionary [type=dict_type, input_value=('description', "\n ...that says: 'I worked!'"), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].8
  Input should be a valid dictionary [type=dict_type, input_value=('expected_output', 'I worked!'), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].9
  Input should be a valid dictionary [type=dict_type, input_value=('config', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].10
  Input should be a valid dictionary [type=dict_type, input_value=('callback', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].11
  Input should be a valid dictionary [type=dict_type, input_value=('agent', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].12
  Input should be a valid dictionary [type=dict_type, input_value=('context', NOT_SPECIFIED), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].13
  Input should be a valid dictionary [type=dict_type, input_value=('async_execution', False), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].14
  Input should be a valid dictionary [type=dict_type, input_value=('output_json', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].15
  Input should be a valid dictionary [type=dict_type, input_value=('output_pydantic', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].16
  Input should be a valid dictionary [type=dict_type, input_value=('response_model', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].17
  Input should be a valid dictionary [type=dict_type, input_value=('output_file', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].18
  Input should be a valid dictionary [type=dict_type, input_value=('create_directory', True), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].19
  Input should be a valid dictionary [type=dict_type, input_value=('output', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].20
  Input should be a valid dictionary [type=dict_type, input_value=('tools', []), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].21
  Input should be a valid dictionary [type=dict_type, input_value=('security_config', Secur...ngerprint(metadata={}))), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].22
  Input should be a valid dictionary [type=dict_type, input_value=('id', UUID('38c49b6a-f65...48e-b673-6434cf56e2fc')), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].23
  Input should be a valid dictionary [type=dict_type, input_value=('human_input', False), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].24
  Input should be a valid dictionary [type=dict_type, input_value=('markdown', False), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].25
  Input should be a valid dictionary [type=dict_type, input_value=('converter_cls', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].26
  Input should be a valid dictionary [type=dict_type, input_value=('processed_by_agents', set()), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].27
  Input should be a valid dictionary [type=dict_type, input_value=('guardrail', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].28
  Input should be a valid dictionary [type=dict_type, input_value=('guardrails', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].29
  Input should be a valid dictionary [type=dict_type, input_value=('max_retries', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].30
  Input should be a valid dictionary [type=dict_type, input_value=('guardrail_max_retries', 3), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].31
  Input should be a valid dictionary [type=dict_type, input_value=('retry_count', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].32
  Input should be a valid dictionary [type=dict_type, input_value=('start_time', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].33
  Input should be a valid dictionary [type=dict_type, input_value=('end_time', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].34
  Input should be a valid dictionary [type=dict_type, input_value=('allow_crewai_trigger_context', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type                                                                                                                
Traceback (most recent call last):                                                                                                                                                            
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\chatllm.py", line 62, in <module>                                                                                                        
    flow.kickoff() # 👈 esto ejecuta el flujo async correctamente                                                                                                                            
    ^^^^^^^^^^^^^^                                                                                                                                                                            
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 816, in kickoff                                                                        
    return asyncio.run(_run_flow())                                                                                                                                                           
           ^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                           
  File "C:\Users\Burbu\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 195, in run                                                                                      
    return runner.run(main)
           ^^^^^^^^^^^^^^^^                                                                                                                                                                   
  File "C:\Users\Burbu\AppData\Local\Programs\Python\Python312\Lib\asyncio\runners.py", line 118, in run                                                                                      
    return self._loop.run_until_complete(task)                                                                                                                                                
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                
  File "C:\Users\Burbu\AppData\Local\Programs\Python\Python312\Lib\asyncio\base_events.py", line 691, in run_until_complete                                                                   
    return future.result()                                                                                                                                                                    
           ^^^^^^^^^^^^^^^                                                                                                                                                                    
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 814, in _run_flow                                                                      
    return await self.kickoff_async(inputs)                                                                                                                                                   
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                   
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 897, in kickoff_async                                                                  
    await asyncio.gather(*tasks)                                                                                                                                                              
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 966, in _execute_start_method
    result = await self._execute_method(start_method_name, enhanced_method)                                                                                                                   
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                   
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 1067, in _execute_method                                                               
    raise e                                                                                                                                                                                   
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 1032, in _execute_method                                                               
    else method(*args, **kwargs)                                                                                                                                                              
         ^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                              
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow.py", line 998, in enhanced_method                                                                
    return original_method(*args, **kwargs)                                                                                                                                                   
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\flow\flow_wrappers.py", line 84, in __call__                                                               
    return self._meth(self._instance, *args, **kwargs)                                                                                                                                        
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                        
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\chatllm.py", line 51, in node_1                                                                                                          
    result = agent_name.kickoff(task, response_format=OutputFormat)                                                                                                                           
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                           
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\agent\core.py", line 1238, in kickoff                                                                      
    return lite_agent.kickoff(messages)                                                                                                                                                       
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                       
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\lite_agent.py", line 307, in kickoff                                                                       
    raise e                                                                                                                                                                                   
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\lite_agent.py", line 291, in kickoff                                                                       
    return self._execute_core(agent_info=agent_info)                                                                                                                                          
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                          
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\crewai\lite_agent.py", line 313, in _execute_core
    event=LiteAgentExecutionStartedEvent(                                                                                                                                                     
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                     
  File "C:\Users\Burbu\OneDrive - UPV EHU\TFG\codigo\venv\Lib\site-packages\pydantic\main.py", line 250, in __init__                                                                          
    validated_self = self. __pydantic_validator__.validate_python(data, self_instance=self)                                                                                                    
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                    
pydantic_core._pydantic_core.ValidationError: 35 validation errors for LiteAgentExecutionStartedEvent
messages.str
  Input should be a valid string [type=string_type, input_value=[{'role': 'system', 'cont...trigger_context', None)], input_type=list]
    For further information visit https://errors.pydantic.dev/2.12/v/string_type
messages.list[dict[str,str]].1
  Input should be a valid dictionary [type=dict_type, input_value=('used_tools', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].2
  Input should be a valid dictionary [type=dict_type, input_value=('tools_errors', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].3
  Input should be a valid dictionary [type=dict_type, input_value=('delegations', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].4
  Input should be a valid dictionary [type=dict_type, input_value=('i18n', I18N(prompt_file=None)), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].5
  Input should be a valid dictionary [type=dict_type, input_value=('name', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].6
  Input should be a valid dictionary [type=dict_type, input_value=('prompt_context', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].7
  Input should be a valid dictionary [type=dict_type, input_value=('description', "\n ...that says: 'I worked!'"), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].8
  Input should be a valid dictionary [type=dict_type, input_value=('expected_output', 'I worked!'), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].9
  Input should be a valid dictionary [type=dict_type, input_value=('config', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].10
  Input should be a valid dictionary [type=dict_type, input_value=('callback', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].11
  Input should be a valid dictionary [type=dict_type, input_value=('agent', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].12
  Input should be a valid dictionary [type=dict_type, input_value=('context', NOT_SPECIFIED), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].13
  Input should be a valid dictionary [type=dict_type, input_value=('async_execution', False), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].14
  Input should be a valid dictionary [type=dict_type, input_value=('output_json', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].15
  Input should be a valid dictionary [type=dict_type, input_value=('output_pydantic', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].16
  Input should be a valid dictionary [type=dict_type, input_value=('response_model', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].17
  Input should be a valid dictionary [type=dict_type, input_value=('output_file', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].18
  Input should be a valid dictionary [type=dict_type, input_value=('create_directory', True), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].19
  Input should be a valid dictionary [type=dict_type, input_value=('output', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].20
  Input should be a valid dictionary [type=dict_type, input_value=('tools', []), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].21
  Input should be a valid dictionary [type=dict_type, input_value=('security_config', Secur...ngerprint(metadata={}))), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].22
  Input should be a valid dictionary [type=dict_type, input_value=('id', UUID('38c49b6a-f65...48e-b673-6434cf56e2fc')), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].23
  Input should be a valid dictionary [type=dict_type, input_value=('human_input', False), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].24
  Input should be a valid dictionary [type=dict_type, input_value=('markdown', False), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].25
  Input should be a valid dictionary [type=dict_type, input_value=('converter_cls', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].26
  Input should be a valid dictionary [type=dict_type, input_value=('processed_by_agents', set()), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].27
  Input should be a valid dictionary [type=dict_type, input_value=('guardrail', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].28
  Input should be a valid dictionary [type=dict_type, input_value=('guardrails', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].29
  Input should be a valid dictionary [type=dict_type, input_value=('max_retries', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].30
  Input should be a valid dictionary [type=dict_type, input_value=('guardrail_max_retries', 3), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].31
  Input should be a valid dictionary [type=dict_type, input_value=('retry_count', 0), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].32
  Input should be a valid dictionary [type=dict_type, input_value=('start_time', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].33
  Input should be a valid dictionary [type=dict_type, input_value=('end_time', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type
messages.list[dict[str,str]].34
  Input should be a valid dictionary [type=dict_type, input_value=('allow_crewai_trigger_context', None), input_type=tuple]
    For further information visit https://errors.pydantic.dev/2.12/v/dict_type                                                                                                                
🌊 Flow: DiagramFlow
ID: 7878c5d2-a5e8-4d7b-a368-7de9f326cdb9
├── ✨ Created
├── ✅ Initialization Complete
└── ❌ Failed: node_1

```

---

<div class="post-metadata">

**Author:** ![Tony\_Wood](https://sea1.discourse-cdn.com/flex025/user_avatar/community.crewai.com/tony_wood/32/1876_2.png) [@Tony\_Wood](https://community.crewai.com/u/Tony_Wood)\
**Post date:** [January 4, 2026, 6:50am UTC](https://community.crewai.com/t/issue-with-crewai-agent-output-format-validation/7273/2 "2026-01-04T06:50:05Z")

</div>

Hi.. I think we are missing the agent in the task try

task = Task(  
description=“Return JSON only with keys text and extra\_text. Use double quotes. No markdown.”,  
expected\_output=“Valid JSON object with keys: text, extra\_text.”,  
**agent=agent,**  
output\_pydantic=OutputFormat,  
)

---

<div class="post-metadata">

**Author:** ![eZabaleta](https://sea1.discourse-cdn.com/flex025/user_avatar/community.crewai.com/ezabaleta/32/3128_2.png) [@eZabaleta](https://community.crewai.com/u/eZabaleta)\
**Post date:** [January 7, 2026, 5:28pm UTC](https://community.crewai.com/t/issue-with-crewai-agent-output-format-validation/7273/3 "2026-01-07T17:28:08Z")

</div>

Thanks for the reply!

Actually, the solution has been to change and run the task instead of the agent. Also, it seems that `gpt-3.5-turbo` doesn’t allow `OutputFormat`:

```python
# ---- STATE ----
class State(BaseModel):
    steps: int = 0
    code: str = ""
    llm: str = "gpt-4o-mini" <--- THIS

llm_instance = ChatOpenAI(
    model_name=self.state.llm,
    temperature=0.7,
)

# Create an Agent
agent_name = Agent(
    role="Friendly assistant",
    goal="Return a message that says 'I worked!'",
    backstory="Testing async agent call",
    tools=[],
    llm=llm_instance,
    verbose=False,
)

print("Starting task execution...")

task = Task(
    description="""Return a JSON object with exactly two fields:
    - 'text': containing the message 'I worked!'
    - 'extra_text': containing 'Success!'""",
    expected_output="JSON object with 'text' and 'extra_text' fields",
    agent=agent_name,
    output_pydantic=OutputFormat,
)

result = task.execute_sync() <--- THIS

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex025/uploads/crewai/original/1X/ecda97e72f77c7100e0a761444b1c991925cc789.png) [@system](https://community.crewai.com/u/system)\
**Post date:** [January 8, 2026, 5:28pm UTC](https://community.crewai.com/t/issue-with-crewai-agent-output-format-validation/7273/4 "2026-01-08T17:28:21Z")

</div>

Closed on January 8, 2026, 5:28pm UTC

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.
