Skip to main content

Recipes Code Usage

Use Agent-Recipes programmatically in your Python applications.

Prerequisites

pip install praisonai praisonai-tools
export OPENAI_API_KEY=your_key

Basic Usage

from praisonai.templates import load_template, TemplateLoader

# Load a recipe
loader = TemplateLoader()
template = loader.load("ai-podcast-cleaner")

# Run the recipe
result = template.run(
    input="./recording.wav",
    output="./cleaned/",
    preset="default"
)

print(f"Status: {result.status}")
print(f"Outputs: {result.outputs}")

Using Recipe Tools Directly

The recipe tools can be used independently for custom workflows.

Media Tool

from praisonai_tools.recipe_tools.media_tool import MediaTool, media_probe

# Probe media file
tool = MediaTool()
info = tool.probe("video.mp4")
print(f"Duration: {info.duration}s")
print(f"Resolution: {info.width}x{info.height}")

# Extract audio
audio_path = tool.extract_audio("video.mp4", format="mp3")

# Normalize audio
normalized = tool.normalize("audio.mp3", target_lufs=-16)

# Trim media
trimmed = tool.trim("video.mp4", start=10, duration=30)

# Extract frames
frames = tool.extract_frames("video.mp4", interval=10)

Document Tool

from praisonai_tools.recipe_tools.doc_tool import DocTool

tool = DocTool()

# Probe PDF
info = tool.probe("document.pdf")
print(f"Pages: {info.pages}")

# Extract text
text = tool.extract_text("document.pdf")

# Extract images
images = tool.extract_images("document.pdf", output_dir="./images/")

# Convert to markdown
markdown = tool.to_markdown("document.pdf")

Image Tool

from praisonai_tools.recipe_tools.image_tool import ImageTool

tool = ImageTool()

# Probe image
info = tool.probe("photo.jpg")
print(f"Size: {info.width}x{info.height}")

# Optimize image
optimized = tool.optimize("photo.jpg", quality=85, max_size=(1920, 1080))

# Resize image
resized = tool.resize("photo.jpg", width=800)

# Create thumbnail
thumb = tool.thumbnail("photo.jpg", size=(256, 256))

# Create montage
montage = tool.montage(["img1.jpg", "img2.jpg", "img3.jpg"], "grid.jpg")

Data Tool

from praisonai_tools.recipe_tools.data_tool import DataTool

tool = DataTool()

# Profile data
profile = tool.profile("data.csv")
print(f"Rows: {profile.row_count}")
print(f"Columns: {profile.column_count}")

# Clean data
cleaned = tool.clean("data.csv", drop_duplicates=True)

# Convert formats
tool.convert("data.json", "data.csv")

# Infer schema
schema = tool.infer_schema("data.json")

Repository Tool

from praisonai_tools.recipe_tools.repo_tool import RepoTool

tool = RepoTool()

# Get repo info
info = tool.info("./my-repo")
print(f"Branch: {info.current_branch}")
print(f"Commits: {info.commit_count}")

# Get commit log
commits = tool.log("./my-repo", limit=10)

# Get diff
diff = tool.diff("./my-repo", "HEAD~1", "HEAD")

# List files
files = tool.files("./my-repo", pattern="*.py")

Web Tool

from praisonai_tools.recipe_tools.web_tool import WebTool

tool = WebTool()

# Fetch page
content = tool.fetch("https://example.com/article")
print(f"Title: {content.title}")
print(f"Content: {content.markdown[:500]}")

# Extract article
article = tool.extract_article("https://example.com/article", "article.md")

# Fetch sitemap
urls = tool.fetch_sitemap("https://example.com/sitemap.xml", limit=100)

Archive Tool

from praisonai_tools.recipe_tools.archive_tool import ArchiveTool

tool = ArchiveTool()

# Create archive
archive = tool.create("./my-folder", format="zip")

# Extract archive
extracted = tool.extract("archive.zip", "./output/")

# List contents
manifest = tool.list("archive.zip")
for entry in manifest.entries:
    print(f"{entry.name}: {entry.size} bytes")

# Create manifest
manifest = tool.create_manifest("./my-folder", "manifest.json")

Whisper Tool

from praisonai_tools.recipe_tools.whisper_tool import WhisperTool

tool = WhisperTool()

# Transcribe audio
result = tool.transcribe("audio.mp3")
print(f"Text: {result.text}")
print(f"Language: {result.language}")

# Get SRT format
srt = result.to_srt()

# Get VTT format
vtt = result.to_vtt()

# Save to file
tool.transcribe_to_file("audio.mp3", "transcript.srt", format="srt")

Creating Custom Recipes

from agent_recipes.recipe_runtime import RecipeRunner, RecipeConfig

class MyCustomRecipe(RecipeRunner):
    def __init__(self):
        super().__init__("my-custom-recipe", "1.0.0")
    
    def _execute(self, config: RecipeConfig):
        # Your recipe logic here
        from praisonai_tools.recipe_tools.media_tool import MediaTool
        
        tool = MediaTool()
        info = tool.probe(config.input_path)
        
        # Process and save outputs
        output_path = self.output_dir / "result.json"
        output_path.write_text(json.dumps(info.to_dict()))

# Run the recipe
recipe = MyCustomRecipe()
result = recipe.run(RecipeConfig(
    recipe_name="my-custom-recipe",
    input_path="./input.mp4",
    output_dir="./output/",
))

Error Handling

from praisonai_tools.recipe_tools.base import DependencyError

try:
    tool = MediaTool()
    tool.require_dependencies(["ffmpeg"])
    result = tool.probe("video.mp4")
except DependencyError as e:
    print(f"Missing dependency: {e.dependency}")
    print(f"Install with: {e.install_hint}")
except FileNotFoundError as e:
    print(f"File not found: {e}")

Checking Dependencies

from praisonai_tools.recipe_tools.media_tool import MediaTool
from praisonai_tools.recipe_tools.doc_tool import DocTool

# Check media tool dependencies
media = MediaTool()
deps = media.check_dependencies()
print(f"ffmpeg: {'✓' if deps['ffmpeg'] else '✗'}")
print(f"ffprobe: {'✓' if deps['ffprobe'] else '✗'}")

# Check doc tool dependencies
doc = DocTool()
deps = doc.check_dependencies()
print(f"pdftotext: {'✓' if deps['pdftotext'] else '✗'}")
print(f"pandoc: {'✓' if deps['pandoc'] else '✗'}")