Single Agent

Learn how to create a basic single-purpose AI agent for simple tasks.

The simplest possible Agent — one instruction, no tools, one call. This is the plain Agent showcase.

python
from praisonaiagents import Agent

agent = Agent(
    name="ContentWriter",
    instructions="You are a content writer. Output in markdown format.",
)

agent.start("Write a short blog post about AI assistants")
Diagram

Single Agent

📋 Input

🤖 Agent

🧠 LLM

✅ Output

Single-purpose agent for content generation. Minimal setup, no external tools.

Quick Start

  1. Simple Usage

    Create an agent with one instruction and call it.

    python
    from praisonaiagents import Agent
    
    agent = Agent(
        name="ContentWriter",
        instructions="You are a content writer. Output in markdown format.",
    )
    
    agent.start("Write a short blog post about AI assistants")
  2. With Configuration

    Add memory and structured output for richer behaviour.

    python
    from praisonaiagents import Agent, Task, AgentTeam
    from pydantic import BaseModel
    
    class BlogPost(BaseModel):
        title: str
        content: str
        tags: list[str]
    
    agent = Agent(
        name="ContentWriter",
        instructions="Write structured blog posts.",
        memory=True,
    )
    
    task = Task(
        description="Write a short blog post about AI assistants",
        expected_output="Structured blog post",
        agent=agent,
        output_pydantic=BlogPost,
    )
    
    AgentTeam(agents=[agent], tasks=[task]).start()

How It Works

Diagram
LLMAgentUserLLMAgentUser“Write a blog post about AI”Send instructions + promptGenerated contentFinal response

Simple

Agents: 1 — Single task requires only one agent.

Workflow

  1. Receive input prompt
  2. Process with LLM
  3. Return generated content

Setup

bash
pip install praisonaiagents praisonai
export OPENAI_API_KEY="your-key"

Run — Python

python
from praisonaiagents import Agent

agent = Agent(
    name="ContentWriter",
    instructions="You are a content writer. Output in markdown format."
)

result = agent.start("Write a short blog post about AI assistants")
print(result)

Run — CLI

bash
praisonai "Write a short blog post about AI assistants"

Run — agents.yaml

yaml
framework: praisonai
topic: Content Generation
roles:
  content_writer:
    role: Content Writer
    goal: Generate engaging content
    backstory: You are an expert content writer
    tasks:
      write_content:
        description: Write a short blog post about AI assistants
        expected_output: A markdown formatted blog post
bash
praisonai agents.yaml

Serve API

python
from praisonaiagents import Agent

agent = Agent(
    name="ContentWriter",
    instructions="You are a content writer. Output in markdown format."
)

agent.launch(port=8080)
bash
curl -X POST http://localhost:8080/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Write a haiku about coding"}'

Advanced Workflow (All Features)

Agents: 1 — Single agent with memory, persistence, structured output, and session resumability.

Workflow

  1. Initialize session with unique ID for resumability
  2. Configure SQLite persistence for conversation history
  3. Process input with structured Pydantic output
  4. Store results in memory for future context
  5. Resume session later with same session_id

Setup

bash
pip install praisonaiagents praisonai pydantic
export OPENAI_API_KEY="your-key"

Run — Python

python
from praisonaiagents import Agent, Task, AgentTeam, Session
from pydantic import BaseModel

# Structured output schema
class BlogPost(BaseModel):
    title: str
    content: str
    tags: list[str]

# Create session for resumability
session = Session(session_id="blog-session-001", user_id="user-1")

# Agent with memory enabled
agent = Agent(
    name="ContentWriter",
    instructions="You are a content writer. Output structured JSON.",
    memory=True
)

# Task with structured output
task = Task(
    description="Write a short blog post about AI assistants",
    expected_output="Structured blog post",
    agent=agent,
    output_pydantic=BlogPost
)

# Run with SQLite persistence
agents = AgentTeam(
    agents=[agent],
    tasks=[task],
    memory=True
)

result = agents.start()
print(result)

# Resume later with same session_id
session2 = Session(session_id="blog-session-001", user_id="user-1")
context = session2.get_context()

Run — CLI

bash
# With memory and verbose
praisonai "Write a blog post about AI" --memory --verbose

# With session persistence
praisonai "Continue the blog post" --memory --session blog-session-001

Run — agents.yaml

yaml
framework: praisonai
topic: Content Generation
memory: true
memory_config:
  provider: sqlite
  db_path: content.db
roles:
  content_writer:
    role: Content Writer
    goal: Generate engaging content with structured output
    backstory: You are an expert content writer
    memory: true
    tasks:
      write_content:
        description: Write a short blog post about AI assistants
        expected_output: Structured blog post with title, content, and tags
        output_json:
          title: string
          content: string
          tags: array
bash
praisonai agents.yaml --verbose

Serve API

python
from praisonaiagents import Agent

agent = Agent(
    name="ContentWriter",
    instructions="You are a content writer.",
    memory=True
)

# Launch with persistence
agent.launch(port=8080)
bash
curl -X POST http://localhost:8080/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "Write a blog post", "session_id": "blog-001"}'

Save Output to File

Save agent responses to files using different methods:

write_file Tool

Agent decides when to save:

python
from praisonaiagents import Agent
from praisonaiagents.tools import write_file

agent = Agent(
    name="Writer",
    instructions="Write content and save to files",
    tools=[write_file]
)
agent.start("Write a poem and save it to poem.txt")

Task output_file

Auto-save task result:

python
from praisonaiagents import Agent, Task, AgentTeam

agent = Agent(name="Writer")
task = Task(
    description="Write a poem",
    agent=agent,
    output_file="poem.txt",
    create_directory=True
)
agents = AgentTeam(agents=[agent], tasks=[task])
agents.start()

Manual

Full control:

python
agent = Agent(name="Writer")
response = agent.start("Write a poem")
with open("poem.txt", "w") as f:
    f.write(response)

Monitor / Verify

bash
# Verbose output
praisonai "test prompt" --verbose

# Check telemetry
praisonai "test prompt" --telemetry

Cleanup

bash
rm -f content.db

Features Demonstrated

FeatureImplementation
WorkflowSingle-step content generation
DB PersistenceSQLite via memory_config
Observability--verbose flag
ResumabilitySession with session_id
Structured OutputPydantic BlogPost model

Best Practices

Start here before reaching for tools

A plain Agent handles most text tasks. Add tools only when the job genuinely needs live data or actions the model cannot perform alone.

Keep instructions specific

The single instruction shapes every response. A precise role — “content writer, output Markdown” — beats a vague “be helpful” for consistent results.

Add memory for multi-turn work

Set memory=True when a task spans several messages so the agent keeps context instead of treating each call as new.

Save output when generating at scale

Use a Task with output_file or a file-writing tool so generated content lands on disk automatically.

Related