HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/PraisonAI/docs/framework/praisonaiagents.mdx
---
title: "PraisonAI Agents"
description: "Guide for using PraisonAI Agents framework, a lightweight package for creating and managing AI agents with advanced capabilities"
icon: "users-gear"
---

A lightweight package dedicated to creating and managing AI agents with advanced capabilities.

## Installation

```bash
pip install praisonaiagents
export OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxx
```

## Quick Start

Create `app.py` and add the following code:

```python
from praisonaiagents import Agent, Task, PraisonAIAgents

# Create agents
researcher = Agent(
    name="Researcher",
    role="Senior Research Analyst",
    goal="Uncover cutting-edge developments in AI and data science",
    backstory="""You are an expert at a technology research group, 
    skilled in identifying trends and analyzing complex data.""",
    verbose=True,
    llm="gpt-4o",
    markdown=True
)

writer = Agent(
    name="Writer",
    role="Tech Content Strategist",
    goal="Craft compelling content on tech advancements",
    backstory="""You are a content strategist known for 
    making complex tech topics interesting and easy to understand.""",
    llm="gpt-4o",
    markdown=True
)

# Create tasks
research_task = Task(
    description="Research the latest developments in AI and data science",
    expected_output="A comprehensive report on recent AI trends and breakthroughs",
    agent=researcher
)

writing_task = Task(
    description="Create an engaging blog post about the research findings",
    expected_output="A well-structured blog post explaining AI developments",
    agent=writer,
    context=[research_task]  # This task depends on research_task output
)

# Create and run the agents
agents = PraisonAIAgents(
    agents=[researcher, writer],
    tasks=[research_task, writing_task],
    verbose=True
)

result = agents.start()
print(result)
```

## Agent Configuration

### Core Attributes
- `name`: Agent's identifier
- `role`: Agent's function/expertise
- `goal`: Individual objective
- `backstory`: Context and personality
- `llm`: Language model (default: OpenAI's GPT-4)
- `verbose`: Enable detailed logs (default: False)
- `markdown`: Enable markdown formatting (default: True)

### Optional Attributes
- `tools`: List of available tools
- `memory`: Enable conversation history (default: True)
- `max_iter`: Maximum iterations (default: 20)
- `max_rpm`: Rate limit for API calls
- `allow_delegation`: Enable task delegation (default: False)

## Task Configuration

### Core Attributes
- `description`: Task details
- `expected_output`: Desired outcome
- `agent`: Assigned agent

### Optional Attributes
- `context`: Dependencies on other tasks
- `tools`: Task-specific tools
- `async_execution`: Run asynchronously (default: False)
- `output_file`: Save output to file
- `callback`: Post-task function

## Advanced Features

### Tool Integration
```python
from duckduckgo_search import DDGS

def search_tool(query: str) -> list:
    """
    Perform a web search using DuckDuckGo and return relevant results.

    Args:
        query (str): The search query string to look up information about.

    Returns:
        list: A list of dictionaries containing search results with the following keys:
            - title (str): The title of the search result
            - url (str): The URL of the search result
            - snippet (str): A brief excerpt or description of the search result
    """
    results = []
    ddgs = DDGS()
    for result in ddgs.text(keywords=query, max_results=10):
        results.append({
            "title": result.get("title", ""),
            "url": result.get("href", ""),
            "snippet": result.get("body", ""),
        })
    return results

agent = Agent(
    name="Researcher",
    tools=[search_tool]
)
```

### Custom Callbacks
```python
def task_completed(output):
    print(f"Task completed: {output.description}")
    print(f"Output: {output.raw}")

task = Task(
    description="Analysis task",
    callback=task_completed
)
```

## Error Handling

The framework includes built-in error handling for:
- API rate limits
- Token limits
- Task timeouts
- Tool execution failures

## Best Practices

1. **Agent Design**
   - Give clear, specific roles and goals
   - Provide detailed backstories
   - Use appropriate tools for tasks

2. **Task Management**
   - Break complex tasks into subtasks
   - Set clear dependencies
   - Use async execution for independent tasks

3. **Resource Optimization**
   - Enable caching when appropriate
   - Set reasonable max_iter limits
   - Use rate limiting for API calls

4. **Error Handling**
   - Implement task callbacks
   - Set appropriate timeouts
   - Monitor execution logs

### Parallel Execution (Upcoming)
```python
task1 = Task(
    description="Research task 1",
    async_execution=True
)

task2 = Task(
    description="Research task 2",
    async_execution=True
)

final_task = Task(
    description="Compile results",
    context=[task1, task2]  # Waits for both tasks
)
```

### Memory Management (Upcoming)
```python
agent = Agent(
    name="Analyst",
    memory=True,  # Enable memory
    memory_config={
        "type": "short_term",
        "max_tokens": 4000
    }
)
```