> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Task • AI Agent SDK

> Task: A unit of work that can be executed by an Agent or a custom handler function.

# Task

> Defined in the [**task**](../modules/task) module.

<Badge color="blue">AI Agent</Badge>

A unit of work that can be executed by an Agent or a custom handler function.

Task is the unified abstraction for both AgentManager tasks and Workflow steps.
It supports all features from the legacy Task class.

Simple Usage:
task = Task(description="Research AI trends")

With action alias (from Task):
task = Task(action="Write a blog post about \{\{topic}}")

With custom handler function:
task = Task(
name="process\_data",
action="Process the input",
handler=my\_custom\_function
)

With loop iteration:
task = Task(
action="Process \{\{item}}",
loop\_over="items",
loop\_var="item"
)

## Constructor

<ParamField query="description" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="expected_output" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="agent" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="name" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="tools" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="context" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="depends_on" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="async_execution" type="Optional" required={false} default="False">
  No description available.
</ParamField>

<ParamField query="config" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="output_file" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="output_json" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="output_pydantic" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="callback" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="on_task_complete" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="status" type="str" required={false} default="'not started'">
  No description available.
</ParamField>

<ParamField query="result" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="create_directory" type="Optional" required={false} default="False">
  No description available.
</ParamField>

<ParamField query="id" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="images" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="next_tasks" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="task_type" type="str" required={false} default="'task'">
  No description available.
</ParamField>

<ParamField query="condition" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="is_start" type="bool" required={false} default="False">
  No description available.
</ParamField>

<ParamField query="loop_state" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="memory" type="Any" required={false}>
  No description available.
</ParamField>

<ParamField query="quality_check" type="Any" required={false} default="True">
  No description available.
</ParamField>

<ParamField query="input_file" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="rerun" type="bool" required={false} default="False">
  No description available.
</ParamField>

<ParamField query="retain_full_context" type="bool" required={false} default="False">
  No description available.
</ParamField>

<ParamField query="guardrail" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="guardrails" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="max_retries" type="int" required={false} default="3">
  No description available.
</ParamField>

<ParamField query="retry_count" type="int" required={false} default="0">
  No description available.
</ParamField>

<ParamField query="agent_config" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="variables" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="skip_on_failure" type="bool" required={false} default="False">
  No description available.
</ParamField>

<ParamField query="retry_delay" type="float" required={false} default="0.0">
  No description available.
</ParamField>

<ParamField query="on_error" type="str" required={false} default="'stop'">
  No description available.
</ParamField>

<ParamField query="action" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="handler" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="should_run" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="loop_over" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="loop_var" type="str" required={false} default="'item'">
  No description available.
</ParamField>

<ParamField query="execution" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="routing" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="output_config" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="output" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="when" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="then_task" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="else_task" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="autonomy" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="knowledge" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="web" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="reflection" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="planning" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="hooks" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="caching" type="Optional" required={false}>
  No description available.
</ParamField>

<ParamField query="output_variable" type="Optional" required={false}>
  No description available.
</ParamField>

## Methods

<CardGroup cols={2}>
  <Card title="depends_on()" icon="function" href="../functions/Task-depends_on">
    Alias for context - returns the list of dependent tasks.
  </Card>

  <Card title="depends_on()" icon="function" href="../functions/Task-depends_on">
    Alias for context - sets the list of dependent tasks.
  </Card>

  <Card title="initialize_memory()" icon="function" href="../functions/Task-initialize_memory">
    Initialize memory if config exists but memory doesn't
  </Card>

  <Card title="store_in_memory()" icon="function" href="../functions/Task-store_in_memory">
    Store content in memory with metadata
  </Card>

  <Card title="execute_callback()" icon="function" href="../functions/Task-execute_callback">
    Execute callback and store quality metrics if enabled
  </Card>

  <Card title="execute_callback_sync()" icon="function" href="../functions/Task-execute_callback_sync">
    Synchronous wrapper to ensure that execute\_callback is awaited,
  </Card>

  <Card title="evaluate_when()" icon="function" href="../functions/Task-evaluate_when">
    Evaluate the 'when' condition against the given context.
  </Card>

  <Card title="get_next_task()" icon="function" href="../functions/Task-get_next_task">
    Get the next task name based on the 'when' condition evaluation.
  </Card>
</CardGroup>

<Accordion title="Internal & Generic Methods">
  * **to\_dict**: Serialize the Task to a dictionary.
</Accordion>

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/task/task.py#L15">
  `praisonaiagents/task/task.py` at line 15
</Card>

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Tasks Concept" icon="list-check" href="/docs/concepts/tasks" />

  <Card title="Task Configuration" icon="gear" href="/docs/configuration/task-config" />

  <Card title="Task Validation" icon="check-double" href="/docs/features/task-validation-feedback" />
</CardGroup>
