Skip to main content

A Python library for managing Rile AI personas with a focus on SDG goals oriented for sustainable living

Project description

Rilerary 🤖

A Python library for managing Rile AI personas with a focus on SDG (Sustainable Development Goals) oriented for sustainable living.

Features

  • 🎭 Multiple Personas: Chef, Teacher, Finance, Tech, Motivation, Sustainability, Knowledge, and more
  • 📦 Easy to Use: Simple API for loading and working with personas
  • 🔧 Flexible: Use built-in personas or add your own
  • 📝 Well-Structured: JSON-based persona definitions with rich metadata

Installation

pip install rilerary

Or install from source:

git clone https://github.com/NamaiBest/rilerary.git
cd rilerary
pip install -e .

Quick Start

Chat with Gemini AI

from rilerary import Rile

# Initialize (default: markdown output)
rile = Rile(api_key="your-gemini-api-key")

# For plain text output (no markdown formatting):
# rile = Rile(api_key="your-key", plain_text_mode=True)

# Choose a persona and chat
rile.use_persona("chef_rile")
response = rile.chat("How do I make pasta?")
print(response)

# Auto-select the best persona automatically
response = rile.auto_chat("What's the best investment strategy?")
# → Automatically uses finance_rile

# Chat with an image
response = rile.chat("What's in this picture?", image="/path/to/food.jpg")

Load Personas Directly

from rilerary import load_persona, get_available_personas

# Get list of available personas
personas = get_available_personas()
print(f"Available personas: {personas}")

# Load a specific persona
chef = load_persona("chef_rile")
print(f"Persona: {chef['persona_name']}")

Available Personas

  • 👨‍🍳 Chef Rile: Cooking, recipes, nutrition, and food safety
  • 👨‍🏫 Teacher Rile: Education, learning strategies, and academic support
  • 💰 Finance Rile: Personal finance, investing, and money management
  • 💻 Tech Rile: Technology, programming, and software development
  • 💪 Motivation Rile: Personal development and motivation
  • 🌱 Sustainability Rile: Environmental awareness and sustainable living
  • 📚 Knowledge Rile: General knowledge and research
  • 👁️ Locket Visual Assistant: Quick visual analysis for locket mode

Advanced Usage

Using PersonaLoader Class

from rilerary import PersonaLoader

# Create loader instance
loader = PersonaLoader()

# Get all personas at once
all_personas = loader.get_all()

# Get basic info without loading full data
info = loader.get_persona_info("tech_rile")
print(f"{info['emoji']} {info['name']}: {info['description']}")

Building System Prompts

from rilerary import load_persona
from rilerary.utils import build_system_prompt

persona = load_persona("motivation_rile")

# Build complete system prompt with additional context
system_prompt = build_system_prompt(
    persona,
    additional_context="Focus on helping with morning routines."
)

Using Custom Persona Directory

from rilerary import PersonaLoader

# Load from custom directory
loader = PersonaLoader(custom_persona_dir="/path/to/your/personas")
custom_persona = loader.load("my_custom_persona")

Persona Structure

Each persona is defined in a JSON file with the following structure:

{
  "persona_name": "Chef Rile",
  "description": "Expert cooking assistant",
  "tone": "Enthusiastic and knowledgeable",
  "greeting": "Ready to cook!",
  "emoji": "👨‍🍳",
  "specialties": ["Cooking", "Recipes", "Nutrition"],
  "prompt_template": "System instructions...",
  "response_style": "Be friendly and practical...",
  "rubric": {
    "core_principles": {},
    "response_guidelines": {}
  }
}

Creating Custom Personas

  1. Create a JSON file with your persona definition
  2. Place it in a directory
  3. Load it using PersonaLoader with custom directory
from rilerary import PersonaLoader

loader = PersonaLoader(custom_persona_dir="./my_personas")
my_persona = loader.load("my_persona_name")

API Reference

Functions

  • load_persona(persona_name: str) - Load a persona by name
  • get_available_personas() - Get list of all available personas
  • get_persona_info(persona_name: str) - Get basic persona information

Classes

  • PersonaLoader - Main class for persona management
    • load(persona_name) - Load a persona
    • get_available() - List available personas
    • get_all() - Load all personas
    • get_persona_info(persona_name) - Get basic info

Utility Functions

  • build_system_prompt(persona_data, additional_context) - Build complete system prompt
  • get_prompt_template(persona_data) - Extract prompt template
  • get_specialties(persona_data) - Get persona specialties
  • validate_persona(persona_data) - Validate persona structure

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rilerary-0.2.4.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rilerary-0.2.4-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file rilerary-0.2.4.tar.gz.

File metadata

  • Download URL: rilerary-0.2.4.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.4

File hashes

Hashes for rilerary-0.2.4.tar.gz
Algorithm Hash digest
SHA256 9c2ca7814b6f0466143345d2166394358d32ae76ae84af76b7ce4bb27eb49dec
MD5 dd9023440382103ed955555c492a34ab
BLAKE2b-256 a9ebf9cec7182f931ab132baf99ad9107da8bf9167b78ed55836c5d7511bbfb4

See more details on using hashes here.

File details

Details for the file rilerary-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: rilerary-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.4

File hashes

Hashes for rilerary-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 92b939dc0d72817bed7d93e09d5e43003b739ca6b28bae7cfe67345bf04cb5c4
MD5 0e73189e2a79e2852164529f3eb368ea
BLAKE2b-256 4997784e1af3ec3257a751f36e9a494ef1eb1cd5e772fb6df1d611e23bcb4d7c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page