Recipes Code Usage
Use Agent-Recipes programmatically in your Python applications.Prerequisites
Copy
pip install praisonai praisonai-tools
export OPENAI_API_KEY=your_key
Basic Usage
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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
Copy
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 '✗'}")

