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.
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")Single-purpose agent for content generation. Minimal setup, no external tools.
Quick Start
- 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") - 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
Simple
Agents: 1 — Single task requires only one agent.
Workflow
- Receive input prompt
- Process with LLM
- Return generated content
Setup
pip install praisonaiagents praisonai
export OPENAI_API_KEY="your-key"Run — 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
praisonai "Write a short blog post about AI assistants"Run — agents.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 postpraisonai agents.yamlServe API
from praisonaiagents import Agent
agent = Agent(
name="ContentWriter",
instructions="You are a content writer. Output in markdown format."
)
agent.launch(port=8080)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
- Initialize session with unique ID for resumability
- Configure SQLite persistence for conversation history
- Process input with structured Pydantic output
- Store results in memory for future context
- Resume session later with same session_id
Setup
pip install praisonaiagents praisonai pydantic
export OPENAI_API_KEY="your-key"Run — 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
# 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-001Run — agents.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: arraypraisonai agents.yaml --verboseServe API
from praisonaiagents import Agent
agent = Agent(
name="ContentWriter",
instructions="You are a content writer.",
memory=True
)
# Launch with persistence
agent.launch(port=8080)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:
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:
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:
agent = Agent(name="Writer")
response = agent.start("Write a poem")
with open("poem.txt", "w") as f:
f.write(response)Monitor / Verify
# Verbose output
praisonai "test prompt" --verbose
# Check telemetry
praisonai "test prompt" --telemetryCleanup
rm -f content.dbFeatures Demonstrated
| Feature | Implementation |
|---|---|
| Workflow | Single-step content generation |
| DB Persistence | SQLite via memory_config |
| Observability | --verbose flag |
| Resumability | Session with session_id |
| Structured Output | Pydantic 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.