Personas
Who uses PraisonAI recipes and how
App developers, platform engineers, and recipe authors each follow different integration paths.
from praisonaiagents import Agent
agent = Agent(
name="Persona Router",
instructions="Direct readers to the right recipe persona guide.",
)
agent.start("I deploy recipe infrastructure—where do I start?")The user identifies their role below and opens the matching persona workflow.
Quick Start
- Simple Usage
Ask the router which persona and path fits your work.
python from praisonaiagents import Agent agent = Agent(name="Persona Router", instructions="Direct readers to a persona guide.") agent.start("I deploy recipe infrastructure—where do I start?") - With Configuration
Add your language and environment for a targeted workflow.
python from praisonaiagents import Agent agent = Agent( name="Persona Router", instructions="Recommend a persona workflow from the described role and stack.", ) agent.start("I build a Node.js app that calls recipes over HTTP.")
How It Works
Persona 1: App Developer (Backend/Fullstack)
Role Description
Backend or fullstack developers who integrate AI capabilities into applications. They consume recipes created by others and focus on reliable integration.
Primary Goals
- Integrate AI features quickly
- Ensure reliability and error handling
- Minimize infrastructure complexity
- Meet performance requirements
Recommended Integration Models
- Model 1 (Embedded SDK) – For Python applications
- Model 3 (HTTP Sidecar) – For polyglot microservices
- Model 2 (CLI) – For scripts and automation
Typical Workflow
- Discover Available Recipes
bash # List all recipes praisonai recipe list # Get recipe details praisonai recipe info support-reply-drafter - Test Recipe Locally
bash # Dry run to validate praisonai recipe run support-reply-drafter \ --input '{"ticket_id": "T-123", "message": "Test"}' \ --dry-run # Full test run praisonai recipe run support-reply-drafter \ --input '{"ticket_id": "T-123", "message": "Test"}' \ --json - Integrate into Application
python from praisonai import recipe def handle_support_ticket(ticket): result = recipe.run( "support-reply-drafter", input={ "ticket_id": ticket.id, "message": ticket.customer_message }, options={"timeout_sec": 30} ) if result.ok: return result.output["draft"] else: logger.error(f"Recipe failed: {result.error}") return None - Add Error Handling
python from praisonai.recipe import RecipeError, RecipeTimeoutError try: result = recipe.run("my-recipe", input=data) except RecipeTimeoutError: # Handle timeout return fallback_response() except RecipeError as e: # Handle other errors logger.error(f"Recipe error: {e}") raise
Key Concerns
- Latency: Monitor recipe execution time
- Error handling: Graceful degradation when recipes fail
- Observability: Logging, metrics, tracing
- Testing: Mock recipes in unit tests
Persona 2: Platform/DevOps Engineer
Role Description
Engineers responsible for deploying, scaling, and operating recipe infrastructure. They manage servers, authentication, monitoring, and security.
Primary Goals
- Reliable recipe server deployment
- Secure multi-tenant access
- Monitoring and alerting
- Cost optimization
Recommended Integration Models
- Model 4 (Remote Runner) – Production deployments
- Model 5 (Event-Driven) – High-scale async processing
Typical Workflow
- Configure Server
yaml # serve.yaml (or agents.yaml) host: 0.0.0.0 port: 8765 auth: api-key api_key: ${PRAISONAI_API_KEY} # Recipe filtering recipes: - support-reply-drafter - meeting-action-items # Performance preload: true # CORS for web clients cors_origins: "https://app.example.com" - Deploy with Docker
dockerfile FROM python:3.11-slim RUN pip install praisonai[serve] COPY serve.yaml /app/ WORKDIR /app ENV PRAISONAI_API_KEY=${PRAISONAI_API_KEY} ENV OPENAI_API_KEY=${OPENAI_API_KEY} EXPOSE 8765 CMD ["praisonai", "recipe", "serve", "--config", "serve.yaml"] - Set Up Monitoring
bash # Health check endpoint curl http://localhost:8765/health # Prometheus metrics (if enabled) curl http://localhost:8765/metrics - Configure Load Balancer
nginx upstream recipe_servers { server recipe1:8765; server recipe2:8765; server recipe3:8765; } server { listen 443 ssl; location /v1/recipes { proxy_pass http://recipe_servers; } } - Set Up Alerts
yaml # alertmanager rules groups: - name: recipe-server rules: - alert: RecipeServerDown expr: up{job="recipe-server"} == 0 for: 1m - alert: HighLatency expr: recipe_request_duration_seconds > 10 for: 5m
Key Concerns
- Security: API key rotation, TLS, network policies
- Scaling: Horizontal scaling, load balancing
- Availability: Health checks, failover
- Cost: Resource utilization, API costs
Persona 3: Recipe Author / Solutions Engineer
Role Description
Engineers who create and maintain recipes. They design AI workflows, configure agents, and ensure recipes meet business requirements.
Primary Goals
- Create reusable, reliable recipes
- Document inputs/outputs clearly
- Ensure security and compliance
- Optimize for performance and cost
Recommended Workflow
- Initialize Recipe Project
bash praisonai recipe init my-new-recipe cd my-new-recipe - Define Recipe Schema
yaml # TEMPLATE.yaml schema_version: "1.0" name: my-new-recipe version: "1.0.0" description: | Detailed description of what this recipe does. author: your-name license: Apache-2.0 tags: [category, use-case] requires: env: [OPENAI_API_KEY] packages: [] tools: allow: [web_search] deny: [shell.exec, file.write] config: input: query: type: string required: true description: The user's query context: type: string required: false description: Optional context defaults: model: gpt-4o-mini temperature: 0.7 outputs: - name: result type: text description: The generated response - Define Workflow
yaml # workflow.yaml framework: praisonai topic: My Recipe Workflow roles: analyst: role: Data Analyst goal: Analyze the input and provide insights backstory: Expert data analyst tasks: analyze: description: Analyze {query} with context {context} expected_output: Structured analysis - Validate Recipe
bash praisonai recipe validate my-new-recipe - Test Recipe
bash # Dry run praisonai recipe run my-new-recipe \ --input '{"query": "test"}' \ --dry-run # Full test praisonai recipe run my-new-recipe \ --input '{"query": "test"}' \ --json - Package and Distribute
bash # Create bundle praisonai recipe pack my-new-recipe --output my-recipe.praison # Share or deploy
Key Concerns
- Schema design: Clear, well-documented inputs/outputs
- Security: Tool restrictions, data handling policies
- Testing: Comprehensive test cases
- Versioning: Semantic versioning, changelog
Persona Collaboration
Best Practices
Restrict tools in the recipe schema
Recipe Authors set tools.allow and tools.deny in TEMPLATE.yaml so a recipe can only reach the capabilities it needs — deny shell.exec and file.write unless required.
Validate before you run
praisonai recipe validate catches schema errors early. Run it in CI so broken recipes never reach App Developers.
Handle recipe failures gracefully in apps
App Developers should catch RecipeTimeoutError and RecipeError and fall back cleanly rather than surfacing raw errors to users.
Preload recipes on the server for lower latency
Platform/DevOps can set preload: true in serve.yaml so the first request does not pay the recipe load cost.